; LLVM IR from aws/s2n-tls :: tests/unit (s2n_tls13_key_schedule_rfc8448_test)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_record_algorithm = type { ptr, i32, i32, i64 }
%struct.s2n_cipher = type { i32, %union.anon, i8, ptr, ptr, ptr, ptr, ptr, ptr }
%union.anon = type { %struct.s2n_composite_cipher }
%struct.s2n_composite_cipher = type { i8, i8, i8, ptr, ptr, ptr, ptr }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_result = type { i32 }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon.0, i32 }
%union.anon.0 = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_sig_scheme_list = type { [128 x i16], i8 }
%struct.s2n_psk_parameters = type { i32, %struct.s2n_array, i16, i16, ptr, i32 }
%struct.s2n_array = type { %struct.s2n_blob, i32, i32 }
%struct.s2n_handshake = type { %struct.s2n_stuffer, ptr, [8 x i8], [48 x i8], [48 x i8], i8, i32, i32, i32, i32, %struct.s2n_offered_early_data, i8, i32 }
%struct.s2n_offered_early_data = type { ptr }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }
%struct.s2n_crypto_parameters = type { ptr, %struct.s2n_session_key, %struct.s2n_session_key, %struct.s2n_hmac_state, %struct.s2n_hmac_state, [16 x i8], [16 x i8], [8 x i8], [8 x i8] }
%struct.s2n_session_key = type { ptr }
%struct.s2n_hmac_state = type { i32, i16, i32, i16, i8, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, %struct.s2n_hash_state, [128 x i8], [64 x i8] }
%struct.s2n_hash_state = type { ptr, i32, i8, i64, %union.anon.1 }
%union.anon.1 = type { %struct.s2n_hash_evp_digest }
%struct.s2n_hash_evp_digest = type { %struct.s2n_evp_digest, %struct.s2n_evp_digest }
%struct.s2n_evp_digest = type { ptr, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@modes = external dso_local constant [2 x i32], align 4
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [94 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@s2n_tls13_aes_128_gcm_sha256 = external global %struct.s2n_cipher_suite, align 8
@.str.14 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [95 x i8], align 1
@test_send_key = external hidden global [32 x i8], align 16
@.str.21 = external hidden unnamed_addr constant [76 x i8], align 1
@test_recv_key = external hidden global [32 x i8], align 16
@.str.22 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [36 x i8], align 1
@__const.main.trigger_messages = external hidden unnamed_addr constant [2 x i32], align 4
@.str.33 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [36 x i8], align 1
@__const.main.trigger_messages.43 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.44 = external hidden unnamed_addr constant [114 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %struct.s2n_cipher_suite, align 8
  %12 = alloca %struct.s2n_record_algorithm, align 8
  %13 = alloca %struct.s2n_cipher, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca [16 x i32], align 16
  %17 = alloca %struct.s2n_blob, align 8
  %18 = alloca %struct.s2n_result, align 4
  %19 = alloca i32, align 4
  %20 = alloca %struct.s2n_blob, align 8
  %21 = alloca %struct.s2n_result, align 4
  %22 = alloca %struct.s2n_blob, align 8
  %23 = alloca %struct.s2n_result, align 4
  %24 = alloca i64, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %struct.s2n_result, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %struct.s2n_result, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca %struct.s2n_result, align 4
  %35 = alloca %struct.s2n_blob, align 8
  %36 = alloca %struct.s2n_result, align 4
  %37 = alloca %struct.s2n_blob, align 8
  %38 = alloca %struct.s2n_result, align 4
  %39 = alloca %struct.s2n_blob, align 8
  %40 = alloca %struct.s2n_result, align 4
  %41 = alloca i64, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %struct.s2n_result, align 4
  %44 = alloca i32, align 4
  %45 = alloca %struct.s2n_result, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca %struct.s2n_result, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %struct.s2n_result, align 4
  %54 = alloca %struct.s2n_blob, align 8
  %55 = alloca %struct.s2n_result, align 4
  %56 = alloca %struct.s2n_blob, align 8
  %57 = alloca %struct.s2n_result, align 4
  %58 = alloca %struct.s2n_blob, align 8
  %59 = alloca %struct.s2n_result, align 4
  %60 = alloca [2 x i32], align 4
  %61 = alloca i64, align 8
  %62 = alloca i32, align 4
  %63 = alloca ptr, align 8
  %64 = alloca %struct.s2n_result, align 4
  %65 = alloca i32, align 4
  %66 = alloca %struct.s2n_result, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca %struct.s2n_result, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca %struct.s2n_result, align 4
  %75 = alloca %struct.s2n_blob, align 8
  %76 = alloca %struct.s2n_result, align 4
  %77 = alloca %struct.s2n_blob, align 8
  %78 = alloca %struct.s2n_result, align 4
  %79 = alloca %struct.s2n_blob, align 8
  %80 = alloca %struct.s2n_result, align 4
  %81 = alloca i64, align 8
  %82 = alloca ptr, align 8
  %83 = alloca %struct.s2n_result, align 4
  %84 = alloca i32, align 4
  %85 = alloca %struct.s2n_result, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca %struct.s2n_result, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca %struct.s2n_result, align 4
  %94 = alloca i32, align 4
  %95 = alloca [16 x i32], align 16
  %96 = alloca %struct.s2n_blob, align 8
  %97 = alloca %struct.s2n_result, align 4
  %98 = alloca %struct.s2n_blob, align 8
  %99 = alloca %struct.s2n_result, align 4
  %100 = alloca %struct.s2n_blob, align 8
  %101 = alloca %struct.s2n_result, align 4
  %102 = alloca [2 x i32], align 4
  %103 = alloca i64, align 8
  %104 = alloca i32, align 4
  %105 = alloca ptr, align 8
  %106 = alloca %struct.s2n_result, align 4
  %107 = alloca i32, align 4
  %108 = alloca %struct.s2n_result, align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca %struct.s2n_result, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca i32, align 4
  %116 = alloca %struct.s2n_result, align 4
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %2
  br label %120

120:                                              ; preds = %119
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %121 = load ptr, ptr @stdout, align 8, !tbaa !9
  %122 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %121, ptr noundef @.str, ptr noundef @.str.1) #11
  %123 = load ptr, ptr @stdout, align 8, !tbaa !9
  %124 = call i32 @fflush(ptr noundef %123)
  br label %125

125:                                              ; preds = %120
  %126 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %127 = icmp eq i32 %126, -1
  br i1 %127, label %128, label %179

128:                                              ; preds = %125
  br label %129

129:                                              ; preds = %128
  br label %130

130:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #11
  %131 = call ptr @__errno_location() #12
  %132 = load i32, ptr %131, align 4, !tbaa !5
  store i32 %132, ptr %6, align 4, !tbaa !5
  %133 = load ptr, ptr @stderr, align 8, !tbaa !9
  %134 = call i32 @s2n_print_stacktrace(ptr noundef %133)
  %135 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %136 = trunc i8 %135 to i1
  br i1 %136, label %137, label %159

137:                                              ; preds = %130
  %138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %139 = call i32 @fileno(ptr noundef %138) #11
  %140 = call i32 @isatty(i32 noundef %139) #11
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %142, label %159

142:                                              ; preds = %137
  %143 = load i32, ptr %6, align 4, !tbaa !5
  %144 = call ptr @__errno_location() #12
  store i32 %143, ptr %144, align 4, !tbaa !5
  %145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %146 = load i32, ptr @test_count, align 4, !tbaa !5
  %147 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %148 = load i32, ptr %147, align 4, !tbaa !5
  %149 = call ptr @s2n_strerror(i32 noundef %148, ptr noundef @.str.4)
  %150 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %151 = load i32, ptr %150, align 4, !tbaa !5
  %152 = call ptr @s2n_strerror_debug(i32 noundef %151, ptr noundef @.str.4)
  %153 = call ptr @__errno_location() #12
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = call ptr @strerror(i32 noundef %154) #11
  %156 = call ptr @__errno_location() #12
  %157 = load i32, ptr %156, align 4, !tbaa !5
  %158 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %145, ptr noundef @.str.2, i32 noundef %146, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 75, ptr noundef %149, ptr noundef %152, ptr noundef %155, i32 noundef %157) #11
  br label %176

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

176:                                              ; preds = %159, %142
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  br label %177

177:                                              ; preds = %176
  call void @exit(i32 noundef 1) #13
  unreachable

178:                                              ; No predecessors!
  br label %179

179:                                              ; preds = %178, %125
  br label %180

180:                                              ; preds = %179
  br label %181

181:                                              ; preds = %180
  %182 = load i32, ptr @test_count, align 4, !tbaa !5
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr @test_count, align 4, !tbaa !5
  %184 = call i32 @s2n_enable_atexit()
  %185 = icmp eq i32 %184, -1
  br i1 %185, label %186, label %237

186:                                              ; preds = %181
  br label %187

187:                                              ; preds = %186
  br label %188

188:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  %189 = call ptr @__errno_location() #12
  %190 = load i32, ptr %189, align 4, !tbaa !5
  store i32 %190, ptr %7, align 4, !tbaa !5
  %191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %192 = call i32 @s2n_print_stacktrace(ptr noundef %191)
  %193 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %194 = trunc i8 %193 to i1
  br i1 %194, label %195, label %217

195:                                              ; preds = %188
  %196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %197 = call i32 @fileno(ptr noundef %196) #11
  %198 = call i32 @isatty(i32 noundef %197) #11
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %200, label %217

200:                                              ; preds = %195
  %201 = load i32, ptr %7, align 4, !tbaa !5
  %202 = call ptr @__errno_location() #12
  store i32 %201, ptr %202, align 4, !tbaa !5
  %203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %204 = load i32, ptr @test_count, align 4, !tbaa !5
  %205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %206 = load i32, ptr %205, align 4, !tbaa !5
  %207 = call ptr @s2n_strerror(i32 noundef %206, ptr noundef @.str.4)
  %208 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %209 = load i32, ptr %208, align 4, !tbaa !5
  %210 = call ptr @s2n_strerror_debug(i32 noundef %209, ptr noundef @.str.4)
  %211 = call ptr @__errno_location() #12
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %213 = call ptr @strerror(i32 noundef %212) #11
  %214 = call ptr @__errno_location() #12
  %215 = load i32, ptr %214, align 4, !tbaa !5
  %216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %203, ptr noundef @.str.2, i32 noundef %204, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 75, ptr noundef %207, ptr noundef %210, ptr noundef %213, i32 noundef %215) #11
  br label %234

217:                                              ; preds = %195, %188
  %218 = load i32, ptr %7, align 4, !tbaa !5
  %219 = call ptr @__errno_location() #12
  store i32 %218, ptr %219, align 4, !tbaa !5
  %220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %221 = load i32, ptr @test_count, align 4, !tbaa !5
  %222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %223 = load i32, ptr %222, align 4, !tbaa !5
  %224 = call ptr @s2n_strerror(i32 noundef %223, ptr noundef @.str.4)
  %225 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror_debug(i32 noundef %226, ptr noundef @.str.4)
  %228 = call ptr @__errno_location() #12
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = call ptr @strerror(i32 noundef %229) #11
  %231 = call ptr @__errno_location() #12
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %220, ptr noundef @.str.5, i32 noundef %221, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 75, ptr noundef %224, ptr noundef %227, ptr noundef %230, i32 noundef %232) #11
  br label %234

234:                                              ; preds = %217, %200
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  br label %235

235:                                              ; preds = %234
  call void @exit(i32 noundef 1) #13
  unreachable

236:                                              ; No predecessors!
  br label %237

237:                                              ; preds = %236, %181
  br label %238

238:                                              ; preds = %237
  br label %239

239:                                              ; preds = %238
  br label %240

240:                                              ; preds = %239
  %241 = call i32 @s2n_init()
  %242 = icmp eq i32 %241, -1
  br i1 %242, label %243, label %294

243:                                              ; preds = %240
  br label %244

244:                                              ; preds = %243
  br label %245

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

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

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

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

291:                                              ; preds = %274, %257
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  br label %292

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

293:                                              ; No predecessors!
  br label %294

294:                                              ; preds = %293, %240
  br label %295

295:                                              ; preds = %294
  br label %296

296:                                              ; preds = %295
  %297 = call i32 (...) @s2n_is_evp_apis_supported()
  %298 = icmp ne i32 %297, 0
  br i1 %298, label %446, label %299

299:                                              ; preds = %296
  br label %300

300:                                              ; preds = %299
  br label %301

301:                                              ; preds = %300
  %302 = call i32 @s2n_cleanup()
  %303 = icmp eq i32 %302, -1
  br i1 %303, label %304, label %355

304:                                              ; preds = %301
  br label %305

305:                                              ; preds = %304
  br label %306

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

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

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

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

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

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

354:                                              ; No predecessors!
  br label %355

355:                                              ; preds = %354, %301
  br label %356

356:                                              ; preds = %355
  br label %357

357:                                              ; preds = %356
  br label %358

358:                                              ; preds = %357
  %359 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %360 = icmp eq i32 %359, -1
  br i1 %360, label %361, label %412

361:                                              ; preds = %358
  br label %362

362:                                              ; preds = %361
  br label %363

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

370:                                              ; preds = %363
  %371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %372 = call i32 @fileno(ptr noundef %371) #11
  %373 = call i32 @isatty(i32 noundef %372) #11
  %374 = icmp ne i32 %373, 0
  br i1 %374, label %375, label %392

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

392:                                              ; preds = %370, %363
  %393 = load i32, ptr %10, align 4, !tbaa !5
  %394 = call ptr @__errno_location() #12
  store i32 %393, ptr %394, align 4, !tbaa !5
  %395 = load ptr, ptr @stderr, align 8, !tbaa !9
  %396 = load i32, ptr @test_count, align 4, !tbaa !5
  %397 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %398 = load i32, ptr %397, align 4, !tbaa !5
  %399 = call ptr @s2n_strerror(i32 noundef %398, ptr noundef @.str.4)
  %400 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %401 = load i32, ptr %400, align 4, !tbaa !5
  %402 = call ptr @s2n_strerror_debug(i32 noundef %401, ptr noundef @.str.4)
  %403 = call ptr @__errno_location() #12
  %404 = load i32, ptr %403, align 4, !tbaa !5
  %405 = call ptr @strerror(i32 noundef %404) #11
  %406 = call ptr @__errno_location() #12
  %407 = load i32, ptr %406, align 4, !tbaa !5
  %408 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %395, ptr noundef @.str.5, i32 noundef %396, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 81, ptr noundef %399, ptr noundef %402, ptr noundef %405, i32 noundef %407) #11
  br label %409

409:                                              ; preds = %392, %375
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  br label %410

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

411:                                              ; No predecessors!
  br label %412

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

413:                                              ; preds = %412
  %414 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %415 = trunc i8 %414 to i1
  br i1 %415, label %416, label %432

416:                                              ; preds = %413
  %417 = load ptr, ptr @stdout, align 8, !tbaa !9
  %418 = call i32 @fileno(ptr noundef %417) #11
  %419 = call i32 @isatty(i32 noundef %418) #11
  %420 = icmp ne i32 %419, 0
  br i1 %420, label %421, label %432

421:                                              ; preds = %416
  %422 = load i32, ptr @test_count, align 4, !tbaa !5
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %424, label %428

424:                                              ; preds = %421
  %425 = load ptr, ptr @stdout, align 8, !tbaa !9
  %426 = load i32, ptr @test_count, align 4, !tbaa !5
  %427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %425, ptr noundef @.str.10, i32 noundef %426) #11
  br label %431

428:                                              ; preds = %421
  %429 = load ptr, ptr @stdout, align 8, !tbaa !9
  %430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %429, ptr noundef @.str.11) #11
  br label %431

431:                                              ; preds = %428, %424
  br label %443

432:                                              ; preds = %416, %413
  %433 = load i32, ptr @test_count, align 4, !tbaa !5
  %434 = icmp ne i32 %433, 0
  br i1 %434, label %435, label %439

435:                                              ; preds = %432
  %436 = load ptr, ptr @stdout, align 8, !tbaa !9
  %437 = load i32, ptr @test_count, align 4, !tbaa !5
  %438 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %436, ptr noundef @.str.12, i32 noundef %437) #11
  br label %442

439:                                              ; preds = %432
  %440 = load ptr, ptr @stdout, align 8, !tbaa !9
  %441 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %440, ptr noundef @.str.13) #11
  br label %442

442:                                              ; preds = %439, %435
  br label %443

443:                                              ; preds = %442, %431
  store i32 0, ptr %3, align 4
  br label %3396

444:                                              ; No predecessors!
  br label %445

445:                                              ; preds = %444
  br label %446

446:                                              ; preds = %445, %296
  call void @llvm.lifetime.start.p0(i64 104, ptr %11) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %11, ptr align 8 @s2n_tls13_aes_128_gcm_sha256, i64 104, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #11
  %447 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %11, i32 0, i32 6
  %448 = load ptr, ptr %447, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %12, ptr align 8 %448, i64 24, i1 false), !tbaa.struct !19
  call void @llvm.lifetime.start.p0(i64 104, ptr %13) #11
  %449 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %12, i32 0, i32 0
  %450 = load ptr, ptr %449, align 8, !tbaa !22
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 %450, i64 104, i1 false), !tbaa.struct !24
  %451 = getelementptr inbounds %struct.s2n_cipher, ptr %13, i32 0, i32 5
  store ptr @s2n_test_set_recv_key, ptr %451, align 8, !tbaa !25
  %452 = getelementptr inbounds %struct.s2n_cipher, ptr %13, i32 0, i32 6
  store ptr @s2n_test_set_send_key, ptr %452, align 8, !tbaa !27
  %453 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %12, i32 0, i32 0
  store ptr %13, ptr %453, align 8, !tbaa !22
  %454 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %11, i32 0, i32 6
  store ptr %12, ptr %454, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  store ptr %11, ptr %14, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  store i32 3, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %16) #11
  call void @llvm.memset.p0.i64(ptr align 16 %16, i8 0, i64 64, i1 false)
  %455 = getelementptr inbounds [16 x i32], ptr %16, i32 0, i32 1
  store i32 1, ptr %455, align 4
  %456 = getelementptr inbounds [16 x i32], ptr %16, i32 0, i32 13
  store i32 6, ptr %456, align 4
  %457 = getelementptr inbounds [16 x i32], ptr %16, i32 0, i32 15
  store i32 5, ptr %457, align 4
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #11
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 24, i1 false)
  br label %458

458:                                              ; preds = %446
  %459 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %17, ptr noundef @.str.14)
  %460 = getelementptr inbounds %struct.s2n_result, ptr %18, i32 0, i32 0
  store i32 %459, ptr %460, align 4
  %461 = getelementptr inbounds %struct.s2n_result, ptr %18, i32 0, i32 0
  %462 = load i32, ptr %461, align 4
  %463 = call zeroext i1 @s2n_result_is_ok(i32 %462)
  br i1 %463, label %465, label %464

464:                                              ; preds = %458
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %953

465:                                              ; preds = %458
  br label %466

466:                                              ; preds = %465
  br label %467

467:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #11
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 24, i1 false)
  br label %468

468:                                              ; preds = %467
  %469 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %20, ptr noundef @.str.15)
  %470 = getelementptr inbounds %struct.s2n_result, ptr %21, i32 0, i32 0
  store i32 %469, ptr %470, align 4
  %471 = getelementptr inbounds %struct.s2n_result, ptr %21, i32 0, i32 0
  %472 = load i32, ptr %471, align 4
  %473 = call zeroext i1 @s2n_result_is_ok(i32 %472)
  br i1 %473, label %475, label %474

474:                                              ; preds = %468
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %951

475:                                              ; preds = %468
  br label %476

476:                                              ; preds = %475
  br label %477

477:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #11
  call void @llvm.memset.p0.i64(ptr align 8 %22, i8 0, i64 24, i1 false)
  br label %478

478:                                              ; preds = %477
  %479 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %22, ptr noundef @.str.16)
  %480 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  store i32 %479, ptr %480, align 4
  %481 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  %482 = load i32, ptr %481, align 4
  %483 = call zeroext i1 @s2n_result_is_ok(i32 %482)
  br i1 %483, label %485, label %484

484:                                              ; preds = %478
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %949

485:                                              ; preds = %478
  br label %486

486:                                              ; preds = %485
  br label %487

487:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  store i64 0, ptr %24, align 8, !tbaa !20
  br label %488

488:                                              ; preds = %945, %487
  %489 = load i64, ptr %24, align 8, !tbaa !20
  %490 = icmp ult i64 %489, 2
  br i1 %490, label %492, label %491

491:                                              ; preds = %488
  store i32 46, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %948

492:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %493 = load i64, ptr %24, align 8, !tbaa !20
  %494 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %493
  %495 = load i32, ptr %494, align 4, !tbaa !5
  %496 = call ptr @s2n_connection_new(i32 noundef %495)
  store ptr %496, ptr %25, align 8, !tbaa !9
  %497 = load ptr, ptr %14, align 8, !tbaa !9
  %498 = load ptr, ptr %25, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.s2n_connection, ptr %498, i32 0, i32 27
  %500 = load ptr, ptr %499, align 8, !tbaa !28
  %501 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %500, i32 0, i32 0
  store ptr %497, ptr %501, align 8, !tbaa !54
  %502 = load ptr, ptr %25, align 8, !tbaa !9
  %503 = getelementptr inbounds %struct.s2n_connection, ptr %502, i32 0, i32 23
  store i8 34, ptr %503, align 4, !tbaa !59
  br label %504

504:                                              ; preds = %492
  %505 = load i32, ptr @test_count, align 4, !tbaa !5
  %506 = add nsw i32 %505, 1
  store i32 %506, ptr @test_count, align 4, !tbaa !5
  %507 = load ptr, ptr %25, align 8, !tbaa !9
  %508 = load ptr, ptr %25, align 8, !tbaa !9
  %509 = getelementptr inbounds %struct.s2n_connection, ptr %508, i32 0, i32 28
  %510 = getelementptr inbounds %struct.s2n_secrets, ptr %509, i32 0, i32 0
  %511 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %510, i32 0, i32 3
  %512 = getelementptr inbounds [48 x i8], ptr %511, i64 0, i64 0
  %513 = call i32 @s2n_set_test_secret(ptr noundef %507, ptr noundef %512, ptr noundef byval(%struct.s2n_blob) align 8 %17)
  %514 = getelementptr inbounds %struct.s2n_result, ptr %26, i32 0, i32 0
  store i32 %513, ptr %514, align 4
  %515 = getelementptr inbounds %struct.s2n_result, ptr %26, i32 0, i32 0
  %516 = load i32, ptr %515, align 4
  %517 = call zeroext i1 @s2n_result_is_ok(i32 %516)
  br i1 %517, label %571, label %518

518:                                              ; preds = %504
  br label %519

519:                                              ; preds = %518
  br label %520

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

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

532:                                              ; preds = %527
  %533 = load i32, ptr %27, align 4, !tbaa !5
  %534 = call ptr @__errno_location() #12
  store i32 %533, ptr %534, align 4, !tbaa !5
  %535 = load ptr, ptr @stderr, align 8, !tbaa !9
  %536 = load i32, ptr @test_count, align 4, !tbaa !5
  %537 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %538 = load i32, ptr %537, align 4, !tbaa !5
  %539 = call ptr @s2n_strerror(i32 noundef %538, ptr noundef @.str.4)
  %540 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %541 = load i32, ptr %540, align 4, !tbaa !5
  %542 = call ptr @s2n_strerror_debug(i32 noundef %541, ptr noundef @.str.4)
  %543 = call ptr @__errno_location() #12
  %544 = load i32, ptr %543, align 4, !tbaa !5
  %545 = call ptr @strerror(i32 noundef %544) #11
  %546 = call ptr @__errno_location() #12
  %547 = load i32, ptr %546, align 4, !tbaa !5
  %548 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %535, ptr noundef @.str.2, i32 noundef %536, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 141, ptr noundef %539, ptr noundef %542, ptr noundef %545, i32 noundef %547) #11
  br label %566

549:                                              ; preds = %527, %520
  %550 = load i32, ptr %27, align 4, !tbaa !5
  %551 = call ptr @__errno_location() #12
  store i32 %550, ptr %551, align 4, !tbaa !5
  %552 = load ptr, ptr @stderr, align 8, !tbaa !9
  %553 = load i32, ptr @test_count, align 4, !tbaa !5
  %554 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %555 = load i32, ptr %554, align 4, !tbaa !5
  %556 = call ptr @s2n_strerror(i32 noundef %555, ptr noundef @.str.4)
  %557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %558 = load i32, ptr %557, align 4, !tbaa !5
  %559 = call ptr @s2n_strerror_debug(i32 noundef %558, ptr noundef @.str.4)
  %560 = call ptr @__errno_location() #12
  %561 = load i32, ptr %560, align 4, !tbaa !5
  %562 = call ptr @strerror(i32 noundef %561) #11
  %563 = call ptr @__errno_location() #12
  %564 = load i32, ptr %563, align 4, !tbaa !5
  %565 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %552, ptr noundef @.str.5, i32 noundef %553, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 141, ptr noundef %556, ptr noundef %559, ptr noundef %562, i32 noundef %564) #11
  br label %566

566:                                              ; preds = %549, %532
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %567

567:                                              ; preds = %566
  br label %568

568:                                              ; preds = %567
  call void @exit(i32 noundef 1) #13
  unreachable

569:                                              ; No predecessors!
  br label %570

570:                                              ; preds = %569
  br label %571

571:                                              ; preds = %570, %504
  br label %572

572:                                              ; preds = %571
  br label %573

573:                                              ; preds = %572
  %574 = load ptr, ptr %25, align 8, !tbaa !9
  %575 = getelementptr inbounds %struct.s2n_connection, ptr %574, i32 0, i32 52
  %576 = getelementptr inbounds %struct.s2n_handshake, ptr %575, i32 0, i32 6
  store i32 3, ptr %576, align 4, !tbaa !60
  %577 = getelementptr inbounds [16 x i32], ptr %16, i64 0, i64 1
  %578 = load i32, ptr %577, align 4, !tbaa !5
  %579 = load ptr, ptr %25, align 8, !tbaa !9
  %580 = getelementptr inbounds %struct.s2n_connection, ptr %579, i32 0, i32 52
  %581 = getelementptr inbounds %struct.s2n_handshake, ptr %580, i32 0, i32 7
  store i32 %578, ptr %581, align 8, !tbaa !61
  br label %582

582:                                              ; preds = %573
  %583 = load i32, ptr @test_count, align 4, !tbaa !5
  %584 = add nsw i32 %583, 1
  store i32 %584, ptr @test_count, align 4, !tbaa !5
  %585 = load ptr, ptr %25, align 8, !tbaa !9
  %586 = call i32 @s2n_conn_get_current_message_type(ptr noundef %585)
  %587 = icmp eq i32 %586, 1
  br i1 %587, label %641, label %588

588:                                              ; preds = %582
  br label %589

589:                                              ; preds = %588
  br label %590

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

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

602:                                              ; preds = %597
  %603 = load i32, ptr %28, align 4, !tbaa !5
  %604 = call ptr @__errno_location() #12
  store i32 %603, ptr %604, align 4, !tbaa !5
  %605 = load ptr, ptr @stderr, align 8, !tbaa !9
  %606 = load i32, ptr @test_count, align 4, !tbaa !5
  %607 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %608 = load i32, ptr %607, align 4, !tbaa !5
  %609 = call ptr @s2n_strerror(i32 noundef %608, ptr noundef @.str.4)
  %610 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %611 = load i32, ptr %610, align 4, !tbaa !5
  %612 = call ptr @s2n_strerror_debug(i32 noundef %611, ptr noundef @.str.4)
  %613 = call ptr @__errno_location() #12
  %614 = load i32, ptr %613, align 4, !tbaa !5
  %615 = call ptr @strerror(i32 noundef %614) #11
  %616 = call ptr @__errno_location() #12
  %617 = load i32, ptr %616, align 4, !tbaa !5
  %618 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %605, ptr noundef @.str.2, i32 noundef %606, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 145, ptr noundef %609, ptr noundef %612, ptr noundef %615, i32 noundef %617) #11
  br label %636

619:                                              ; preds = %597, %590
  %620 = load i32, ptr %28, align 4, !tbaa !5
  %621 = call ptr @__errno_location() #12
  store i32 %620, ptr %621, align 4, !tbaa !5
  %622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %623 = load i32, ptr @test_count, align 4, !tbaa !5
  %624 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %625 = load i32, ptr %624, align 4, !tbaa !5
  %626 = call ptr @s2n_strerror(i32 noundef %625, ptr noundef @.str.4)
  %627 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %628 = load i32, ptr %627, align 4, !tbaa !5
  %629 = call ptr @s2n_strerror_debug(i32 noundef %628, ptr noundef @.str.4)
  %630 = call ptr @__errno_location() #12
  %631 = load i32, ptr %630, align 4, !tbaa !5
  %632 = call ptr @strerror(i32 noundef %631) #11
  %633 = call ptr @__errno_location() #12
  %634 = load i32, ptr %633, align 4, !tbaa !5
  %635 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %622, ptr noundef @.str.5, i32 noundef %623, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 145, ptr noundef %626, ptr noundef %629, ptr noundef %632, i32 noundef %634) #11
  br label %636

636:                                              ; preds = %619, %602
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %637

637:                                              ; preds = %636
  br label %638

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

639:                                              ; No predecessors!
  br label %640

640:                                              ; preds = %639
  br label %641

641:                                              ; preds = %640, %582
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642
  br label %644

644:                                              ; preds = %643
  %645 = load i32, ptr @test_count, align 4, !tbaa !5
  %646 = add nsw i32 %645, 1
  store i32 %646, ptr @test_count, align 4, !tbaa !5
  %647 = load ptr, ptr %25, align 8, !tbaa !9
  %648 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %647)
  %649 = getelementptr inbounds %struct.s2n_result, ptr %29, i32 0, i32 0
  store i32 %648, ptr %649, align 4
  %650 = getelementptr inbounds %struct.s2n_result, ptr %29, i32 0, i32 0
  %651 = load i32, ptr %650, align 4
  %652 = call zeroext i1 @s2n_result_is_ok(i32 %651)
  br i1 %652, label %706, label %653

653:                                              ; preds = %644
  br label %654

654:                                              ; preds = %653
  br label %655

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

662:                                              ; preds = %655
  %663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %664 = call i32 @fileno(ptr noundef %663) #11
  %665 = call i32 @isatty(i32 noundef %664) #11
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %684

667:                                              ; preds = %662
  %668 = load i32, ptr %30, align 4, !tbaa !5
  %669 = call ptr @__errno_location() #12
  store i32 %668, ptr %669, align 4, !tbaa !5
  %670 = load ptr, ptr @stderr, align 8, !tbaa !9
  %671 = load i32, ptr @test_count, align 4, !tbaa !5
  %672 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %673 = load i32, ptr %672, align 4, !tbaa !5
  %674 = call ptr @s2n_strerror(i32 noundef %673, ptr noundef @.str.4)
  %675 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %676 = load i32, ptr %675, align 4, !tbaa !5
  %677 = call ptr @s2n_strerror_debug(i32 noundef %676, ptr noundef @.str.4)
  %678 = call ptr @__errno_location() #12
  %679 = load i32, ptr %678, align 4, !tbaa !5
  %680 = call ptr @strerror(i32 noundef %679) #11
  %681 = call ptr @__errno_location() #12
  %682 = load i32, ptr %681, align 4, !tbaa !5
  %683 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %670, ptr noundef @.str.2, i32 noundef %671, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 146, ptr noundef %674, ptr noundef %677, ptr noundef %680, i32 noundef %682) #11
  br label %701

684:                                              ; preds = %662, %655
  %685 = load i32, ptr %30, align 4, !tbaa !5
  %686 = call ptr @__errno_location() #12
  store i32 %685, ptr %686, align 4, !tbaa !5
  %687 = load ptr, ptr @stderr, align 8, !tbaa !9
  %688 = load i32, ptr @test_count, align 4, !tbaa !5
  %689 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %690 = load i32, ptr %689, align 4, !tbaa !5
  %691 = call ptr @s2n_strerror(i32 noundef %690, ptr noundef @.str.4)
  %692 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %693 = load i32, ptr %692, align 4, !tbaa !5
  %694 = call ptr @s2n_strerror_debug(i32 noundef %693, ptr noundef @.str.4)
  %695 = call ptr @__errno_location() #12
  %696 = load i32, ptr %695, align 4, !tbaa !5
  %697 = call ptr @strerror(i32 noundef %696) #11
  %698 = call ptr @__errno_location() #12
  %699 = load i32, ptr %698, align 4, !tbaa !5
  %700 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %687, ptr noundef @.str.5, i32 noundef %688, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 146, ptr noundef %691, ptr noundef %694, ptr noundef %697, i32 noundef %699) #11
  br label %701

701:                                              ; preds = %684, %667
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  br label %702

702:                                              ; preds = %701
  br label %703

703:                                              ; preds = %702
  call void @exit(i32 noundef 1) #13
  unreachable

704:                                              ; No predecessors!
  br label %705

705:                                              ; preds = %704
  br label %706

706:                                              ; preds = %705, %644
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707
  br label %709

709:                                              ; preds = %708
  %710 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 1
  %711 = load i32, ptr %710, align 8, !tbaa !62
  %712 = icmp ne i32 %711, 0
  br i1 %712, label %713, label %785

713:                                              ; preds = %709
  br label %714

714:                                              ; preds = %713
  %715 = load i32, ptr @test_count, align 4, !tbaa !5
  %716 = add nsw i32 %715, 1
  store i32 %716, ptr @test_count, align 4, !tbaa !5
  %717 = load ptr, ptr %25, align 8, !tbaa !9
  %718 = getelementptr inbounds %struct.s2n_connection, ptr %717, i32 0, i32 27
  %719 = load ptr, ptr %718, align 8, !tbaa !28
  %720 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %719, i32 0, i32 6
  %721 = getelementptr inbounds [16 x i8], ptr %720, i64 0, i64 0
  %722 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 0
  %723 = load ptr, ptr %722, align 8, !tbaa !63
  %724 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 1
  %725 = load i32, ptr %724, align 8, !tbaa !62
  %726 = zext i32 %725 to i64
  %727 = call i32 @memcmp(ptr noundef %721, ptr noundef %723, i64 noundef %726) #14
  %728 = icmp eq i32 %727, 0
  br i1 %728, label %782, label %729

729:                                              ; preds = %714
  br label %730

730:                                              ; preds = %729
  br label %731

731:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  %732 = call ptr @__errno_location() #12
  %733 = load i32, ptr %732, align 4, !tbaa !5
  store i32 %733, ptr %31, align 4, !tbaa !5
  %734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %735 = call i32 @s2n_print_stacktrace(ptr noundef %734)
  %736 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %737 = trunc i8 %736 to i1
  br i1 %737, label %738, label %760

738:                                              ; preds = %731
  %739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %740 = call i32 @fileno(ptr noundef %739) #11
  %741 = call i32 @isatty(i32 noundef %740) #11
  %742 = icmp ne i32 %741, 0
  br i1 %742, label %743, label %760

743:                                              ; preds = %738
  %744 = load i32, ptr %31, align 4, !tbaa !5
  %745 = call ptr @__errno_location() #12
  store i32 %744, ptr %745, align 4, !tbaa !5
  %746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %747 = load i32, ptr @test_count, align 4, !tbaa !5
  %748 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %749 = load i32, ptr %748, align 4, !tbaa !5
  %750 = call ptr @s2n_strerror(i32 noundef %749, ptr noundef @.str.4)
  %751 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %752 = load i32, ptr %751, align 4, !tbaa !5
  %753 = call ptr @s2n_strerror_debug(i32 noundef %752, ptr noundef @.str.4)
  %754 = call ptr @__errno_location() #12
  %755 = load i32, ptr %754, align 4, !tbaa !5
  %756 = call ptr @strerror(i32 noundef %755) #11
  %757 = call ptr @__errno_location() #12
  %758 = load i32, ptr %757, align 4, !tbaa !5
  %759 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %746, ptr noundef @.str.2, i32 noundef %747, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 148, ptr noundef %750, ptr noundef %753, ptr noundef %756, i32 noundef %758) #11
  br label %777

760:                                              ; preds = %738, %731
  %761 = load i32, ptr %31, align 4, !tbaa !5
  %762 = call ptr @__errno_location() #12
  store i32 %761, ptr %762, align 4, !tbaa !5
  %763 = load ptr, ptr @stderr, align 8, !tbaa !9
  %764 = load i32, ptr @test_count, align 4, !tbaa !5
  %765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %766 = load i32, ptr %765, align 4, !tbaa !5
  %767 = call ptr @s2n_strerror(i32 noundef %766, ptr noundef @.str.4)
  %768 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %769 = load i32, ptr %768, align 4, !tbaa !5
  %770 = call ptr @s2n_strerror_debug(i32 noundef %769, ptr noundef @.str.4)
  %771 = call ptr @__errno_location() #12
  %772 = load i32, ptr %771, align 4, !tbaa !5
  %773 = call ptr @strerror(i32 noundef %772) #11
  %774 = call ptr @__errno_location() #12
  %775 = load i32, ptr %774, align 4, !tbaa !5
  %776 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %763, ptr noundef @.str.5, i32 noundef %764, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 148, ptr noundef %767, ptr noundef %770, ptr noundef %773, i32 noundef %775) #11
  br label %777

777:                                              ; preds = %760, %743
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  br label %778

778:                                              ; preds = %777
  br label %779

779:                                              ; preds = %778
  call void @exit(i32 noundef 1) #13
  unreachable

780:                                              ; No predecessors!
  br label %781

781:                                              ; preds = %780
  br label %782

782:                                              ; preds = %781, %714
  br label %783

783:                                              ; preds = %782
  br label %784

784:                                              ; preds = %783
  br label %785

785:                                              ; preds = %784, %709
  br label %786

786:                                              ; preds = %785
  br label %787

787:                                              ; preds = %786
  %788 = load ptr, ptr %25, align 8, !tbaa !9
  %789 = getelementptr inbounds %struct.s2n_connection, ptr %788, i32 0, i32 13
  %790 = load i32, ptr %789, align 4, !tbaa !64
  %791 = icmp eq i32 %790, 0
  br i1 %791, label %792, label %867

792:                                              ; preds = %787
  br label %793

793:                                              ; preds = %792
  %794 = getelementptr inbounds %struct.s2n_blob, ptr %20, i32 0, i32 1
  %795 = load i32, ptr %794, align 8, !tbaa !62
  %796 = icmp ne i32 %795, 0
  br i1 %796, label %797, label %864

797:                                              ; preds = %793
  br label %798

798:                                              ; preds = %797
  %799 = load i32, ptr @test_count, align 4, !tbaa !5
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr @test_count, align 4, !tbaa !5
  %801 = getelementptr inbounds %struct.s2n_blob, ptr %20, i32 0, i32 0
  %802 = load ptr, ptr %801, align 8, !tbaa !63
  %803 = getelementptr inbounds %struct.s2n_blob, ptr %20, i32 0, i32 1
  %804 = load i32, ptr %803, align 8, !tbaa !62
  %805 = zext i32 %804 to i64
  %806 = call i32 @memcmp(ptr noundef @test_send_key, ptr noundef %802, i64 noundef %805) #14
  %807 = icmp eq i32 %806, 0
  br i1 %807, label %861, label %808

808:                                              ; preds = %798
  br label %809

809:                                              ; preds = %808
  br label %810

810:                                              ; preds = %809
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  %811 = call ptr @__errno_location() #12
  %812 = load i32, ptr %811, align 4, !tbaa !5
  store i32 %812, ptr %32, align 4, !tbaa !5
  %813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %814 = call i32 @s2n_print_stacktrace(ptr noundef %813)
  %815 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %816 = trunc i8 %815 to i1
  br i1 %816, label %817, label %839

817:                                              ; preds = %810
  %818 = load ptr, ptr @stderr, align 8, !tbaa !9
  %819 = call i32 @fileno(ptr noundef %818) #11
  %820 = call i32 @isatty(i32 noundef %819) #11
  %821 = icmp ne i32 %820, 0
  br i1 %821, label %822, label %839

822:                                              ; preds = %817
  %823 = load i32, ptr %32, align 4, !tbaa !5
  %824 = call ptr @__errno_location() #12
  store i32 %823, ptr %824, align 4, !tbaa !5
  %825 = load ptr, ptr @stderr, align 8, !tbaa !9
  %826 = load i32, ptr @test_count, align 4, !tbaa !5
  %827 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %828 = load i32, ptr %827, align 4, !tbaa !5
  %829 = call ptr @s2n_strerror(i32 noundef %828, ptr noundef @.str.4)
  %830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %831 = load i32, ptr %830, align 4, !tbaa !5
  %832 = call ptr @s2n_strerror_debug(i32 noundef %831, ptr noundef @.str.4)
  %833 = call ptr @__errno_location() #12
  %834 = load i32, ptr %833, align 4, !tbaa !5
  %835 = call ptr @strerror(i32 noundef %834) #11
  %836 = call ptr @__errno_location() #12
  %837 = load i32, ptr %836, align 4, !tbaa !5
  %838 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %825, ptr noundef @.str.2, i32 noundef %826, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 149, ptr noundef %829, ptr noundef %832, ptr noundef %835, i32 noundef %837) #11
  br label %856

839:                                              ; preds = %817, %810
  %840 = load i32, ptr %32, align 4, !tbaa !5
  %841 = call ptr @__errno_location() #12
  store i32 %840, ptr %841, align 4, !tbaa !5
  %842 = load ptr, ptr @stderr, align 8, !tbaa !9
  %843 = load i32, ptr @test_count, align 4, !tbaa !5
  %844 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %845 = load i32, ptr %844, align 4, !tbaa !5
  %846 = call ptr @s2n_strerror(i32 noundef %845, ptr noundef @.str.4)
  %847 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %848 = load i32, ptr %847, align 4, !tbaa !5
  %849 = call ptr @s2n_strerror_debug(i32 noundef %848, ptr noundef @.str.4)
  %850 = call ptr @__errno_location() #12
  %851 = load i32, ptr %850, align 4, !tbaa !5
  %852 = call ptr @strerror(i32 noundef %851) #11
  %853 = call ptr @__errno_location() #12
  %854 = load i32, ptr %853, align 4, !tbaa !5
  %855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %842, ptr noundef @.str.5, i32 noundef %843, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 149, ptr noundef %846, ptr noundef %849, ptr noundef %852, i32 noundef %854) #11
  br label %856

856:                                              ; preds = %839, %822
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %857

857:                                              ; preds = %856
  br label %858

858:                                              ; preds = %857
  call void @exit(i32 noundef 1) #13
  unreachable

859:                                              ; No predecessors!
  br label %860

860:                                              ; preds = %859
  br label %861

861:                                              ; preds = %860, %798
  br label %862

862:                                              ; preds = %861
  br label %863

863:                                              ; preds = %862
  br label %864

864:                                              ; preds = %863, %793
  br label %865

865:                                              ; preds = %864
  br label %866

866:                                              ; preds = %865
  br label %942

867:                                              ; preds = %787
  br label %868

868:                                              ; preds = %867
  %869 = getelementptr inbounds %struct.s2n_blob, ptr %20, i32 0, i32 1
  %870 = load i32, ptr %869, align 8, !tbaa !62
  %871 = icmp ne i32 %870, 0
  br i1 %871, label %872, label %939

872:                                              ; preds = %868
  br label %873

873:                                              ; preds = %872
  %874 = load i32, ptr @test_count, align 4, !tbaa !5
  %875 = add nsw i32 %874, 1
  store i32 %875, ptr @test_count, align 4, !tbaa !5
  %876 = getelementptr inbounds %struct.s2n_blob, ptr %20, i32 0, i32 0
  %877 = load ptr, ptr %876, align 8, !tbaa !63
  %878 = getelementptr inbounds %struct.s2n_blob, ptr %20, i32 0, i32 1
  %879 = load i32, ptr %878, align 8, !tbaa !62
  %880 = zext i32 %879 to i64
  %881 = call i32 @memcmp(ptr noundef @test_recv_key, ptr noundef %877, i64 noundef %880) #14
  %882 = icmp eq i32 %881, 0
  br i1 %882, label %936, label %883

883:                                              ; preds = %873
  br label %884

884:                                              ; preds = %883
  br label %885

885:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  %886 = call ptr @__errno_location() #12
  %887 = load i32, ptr %886, align 4, !tbaa !5
  store i32 %887, ptr %33, align 4, !tbaa !5
  %888 = load ptr, ptr @stderr, align 8, !tbaa !9
  %889 = call i32 @s2n_print_stacktrace(ptr noundef %888)
  %890 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %891 = trunc i8 %890 to i1
  br i1 %891, label %892, label %914

892:                                              ; preds = %885
  %893 = load ptr, ptr @stderr, align 8, !tbaa !9
  %894 = call i32 @fileno(ptr noundef %893) #11
  %895 = call i32 @isatty(i32 noundef %894) #11
  %896 = icmp ne i32 %895, 0
  br i1 %896, label %897, label %914

897:                                              ; preds = %892
  %898 = load i32, ptr %33, align 4, !tbaa !5
  %899 = call ptr @__errno_location() #12
  store i32 %898, ptr %899, align 4, !tbaa !5
  %900 = load ptr, ptr @stderr, align 8, !tbaa !9
  %901 = load i32, ptr @test_count, align 4, !tbaa !5
  %902 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %903 = load i32, ptr %902, align 4, !tbaa !5
  %904 = call ptr @s2n_strerror(i32 noundef %903, ptr noundef @.str.4)
  %905 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %906 = load i32, ptr %905, align 4, !tbaa !5
  %907 = call ptr @s2n_strerror_debug(i32 noundef %906, ptr noundef @.str.4)
  %908 = call ptr @__errno_location() #12
  %909 = load i32, ptr %908, align 4, !tbaa !5
  %910 = call ptr @strerror(i32 noundef %909) #11
  %911 = call ptr @__errno_location() #12
  %912 = load i32, ptr %911, align 4, !tbaa !5
  %913 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %900, ptr noundef @.str.2, i32 noundef %901, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 149, ptr noundef %904, ptr noundef %907, ptr noundef %910, i32 noundef %912) #11
  br label %931

914:                                              ; preds = %892, %885
  %915 = load i32, ptr %33, align 4, !tbaa !5
  %916 = call ptr @__errno_location() #12
  store i32 %915, ptr %916, align 4, !tbaa !5
  %917 = load ptr, ptr @stderr, align 8, !tbaa !9
  %918 = load i32, ptr @test_count, align 4, !tbaa !5
  %919 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %920 = load i32, ptr %919, align 4, !tbaa !5
  %921 = call ptr @s2n_strerror(i32 noundef %920, ptr noundef @.str.4)
  %922 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %923 = load i32, ptr %922, align 4, !tbaa !5
  %924 = call ptr @s2n_strerror_debug(i32 noundef %923, ptr noundef @.str.4)
  %925 = call ptr @__errno_location() #12
  %926 = load i32, ptr %925, align 4, !tbaa !5
  %927 = call ptr @strerror(i32 noundef %926) #11
  %928 = call ptr @__errno_location() #12
  %929 = load i32, ptr %928, align 4, !tbaa !5
  %930 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %917, ptr noundef @.str.5, i32 noundef %918, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 149, ptr noundef %921, ptr noundef %924, ptr noundef %927, i32 noundef %929) #11
  br label %931

931:                                              ; preds = %914, %897
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %932

932:                                              ; preds = %931
  br label %933

933:                                              ; preds = %932
  call void @exit(i32 noundef 1) #13
  unreachable

934:                                              ; No predecessors!
  br label %935

935:                                              ; preds = %934
  br label %936

936:                                              ; preds = %935, %873
  br label %937

937:                                              ; preds = %936
  br label %938

938:                                              ; preds = %937
  br label %939

939:                                              ; preds = %938, %868
  br label %940

940:                                              ; preds = %939
  br label %941

941:                                              ; preds = %940
  br label %942

942:                                              ; preds = %941, %866
  %943 = call i32 @s2n_connection_ptr_free(ptr noundef %25)
  %944 = getelementptr inbounds %struct.s2n_result, ptr %34, i32 0, i32 0
  store i32 %943, ptr %944, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  br label %945

945:                                              ; preds = %942
  %946 = load i64, ptr %24, align 8, !tbaa !20
  %947 = add i64 %946, 1
  store i64 %947, ptr %24, align 8, !tbaa !20
  br label %488, !llvm.loop !65

948:                                              ; preds = %491
  store i32 0, ptr %19, align 4
  br label %949

949:                                              ; preds = %948, %484
  %950 = call i32 @s2n_free(ptr noundef %22)
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #11
  br label %951

951:                                              ; preds = %949, %474
  %952 = call i32 @s2n_free(ptr noundef %20)
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #11
  br label %953

953:                                              ; preds = %951, %464
  %954 = call i32 @s2n_free(ptr noundef %17)
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #11
  %955 = load i32, ptr %19, align 4
  switch i32 %955, label %2658 [
    i32 0, label %956
  ]

956:                                              ; preds = %953
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #11
  call void @llvm.memset.p0.i64(ptr align 8 %35, i8 0, i64 24, i1 false)
  br label %957

957:                                              ; preds = %956
  %958 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %35, ptr noundef @.str.23)
  %959 = getelementptr inbounds %struct.s2n_result, ptr %36, i32 0, i32 0
  store i32 %958, ptr %959, align 4
  %960 = getelementptr inbounds %struct.s2n_result, ptr %36, i32 0, i32 0
  %961 = load i32, ptr %960, align 4
  %962 = call zeroext i1 @s2n_result_is_ok(i32 %961)
  br i1 %962, label %964, label %963

963:                                              ; preds = %957
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1517

964:                                              ; preds = %957
  br label %965

965:                                              ; preds = %964
  br label %966

966:                                              ; preds = %965
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #11
  call void @llvm.memset.p0.i64(ptr align 8 %37, i8 0, i64 24, i1 false)
  br label %967

967:                                              ; preds = %966
  %968 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %37, ptr noundef @.str.24)
  %969 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  store i32 %968, ptr %969, align 4
  %970 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  %971 = load i32, ptr %970, align 4
  %972 = call zeroext i1 @s2n_result_is_ok(i32 %971)
  br i1 %972, label %974, label %973

973:                                              ; preds = %967
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1515

974:                                              ; preds = %967
  br label %975

975:                                              ; preds = %974
  br label %976

976:                                              ; preds = %975
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #11
  call void @llvm.memset.p0.i64(ptr align 8 %39, i8 0, i64 24, i1 false)
  br label %977

977:                                              ; preds = %976
  %978 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %39, ptr noundef @.str.25)
  %979 = getelementptr inbounds %struct.s2n_result, ptr %40, i32 0, i32 0
  store i32 %978, ptr %979, align 4
  %980 = getelementptr inbounds %struct.s2n_result, ptr %40, i32 0, i32 0
  %981 = load i32, ptr %980, align 4
  %982 = call zeroext i1 @s2n_result_is_ok(i32 %981)
  br i1 %982, label %984, label %983

983:                                              ; preds = %977
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1513

984:                                              ; preds = %977
  br label %985

985:                                              ; preds = %984
  br label %986

986:                                              ; preds = %985
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #11
  store i64 0, ptr %41, align 8, !tbaa !20
  br label %987

987:                                              ; preds = %1509, %986
  %988 = load i64, ptr %41, align 8, !tbaa !20
  %989 = icmp ult i64 %988, 2
  br i1 %989, label %991, label %990

990:                                              ; preds = %987
  store i32 97, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  br label %1512

991:                                              ; preds = %987
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #11
  %992 = load i64, ptr %41, align 8, !tbaa !20
  %993 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %992
  %994 = load i32, ptr %993, align 4, !tbaa !5
  %995 = call ptr @s2n_connection_new(i32 noundef %994)
  store ptr %995, ptr %42, align 8, !tbaa !9
  %996 = load ptr, ptr %14, align 8, !tbaa !9
  %997 = load ptr, ptr %42, align 8, !tbaa !9
  %998 = getelementptr inbounds %struct.s2n_connection, ptr %997, i32 0, i32 27
  %999 = load ptr, ptr %998, align 8, !tbaa !28
  %1000 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %999, i32 0, i32 0
  store ptr %996, ptr %1000, align 8, !tbaa !54
  %1001 = load ptr, ptr %42, align 8, !tbaa !9
  %1002 = getelementptr inbounds %struct.s2n_connection, ptr %1001, i32 0, i32 23
  store i8 34, ptr %1002, align 4, !tbaa !59
  br label %1003

1003:                                             ; preds = %991
  %1004 = load i32, ptr @test_count, align 4, !tbaa !5
  %1005 = add nsw i32 %1004, 1
  store i32 %1005, ptr @test_count, align 4, !tbaa !5
  %1006 = load ptr, ptr %42, align 8, !tbaa !9
  %1007 = call i32 @s2n_conn_choose_state_machine(ptr noundef %1006, i8 noundef zeroext 34)
  %1008 = getelementptr inbounds %struct.s2n_result, ptr %43, i32 0, i32 0
  store i32 %1007, ptr %1008, align 4
  %1009 = getelementptr inbounds %struct.s2n_result, ptr %43, i32 0, i32 0
  %1010 = load i32, ptr %1009, align 4
  %1011 = call zeroext i1 @s2n_result_is_ok(i32 %1010)
  br i1 %1011, label %1065, label %1012

1012:                                             ; preds = %1003
  br label %1013

1013:                                             ; preds = %1012
  br label %1014

1014:                                             ; preds = %1013
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  %1015 = call ptr @__errno_location() #12
  %1016 = load i32, ptr %1015, align 4, !tbaa !5
  store i32 %1016, ptr %44, align 4, !tbaa !5
  %1017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1018 = call i32 @s2n_print_stacktrace(ptr noundef %1017)
  %1019 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1020 = trunc i8 %1019 to i1
  br i1 %1020, label %1021, label %1043

1021:                                             ; preds = %1014
  %1022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1023 = call i32 @fileno(ptr noundef %1022) #11
  %1024 = call i32 @isatty(i32 noundef %1023) #11
  %1025 = icmp ne i32 %1024, 0
  br i1 %1025, label %1026, label %1043

1026:                                             ; preds = %1021
  %1027 = load i32, ptr %44, align 4, !tbaa !5
  %1028 = call ptr @__errno_location() #12
  store i32 %1027, ptr %1028, align 4, !tbaa !5
  %1029 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1030 = load i32, ptr @test_count, align 4, !tbaa !5
  %1031 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1032 = load i32, ptr %1031, align 4, !tbaa !5
  %1033 = call ptr @s2n_strerror(i32 noundef %1032, ptr noundef @.str.4)
  %1034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1035 = load i32, ptr %1034, align 4, !tbaa !5
  %1036 = call ptr @s2n_strerror_debug(i32 noundef %1035, ptr noundef @.str.4)
  %1037 = call ptr @__errno_location() #12
  %1038 = load i32, ptr %1037, align 4, !tbaa !5
  %1039 = call ptr @strerror(i32 noundef %1038) #11
  %1040 = call ptr @__errno_location() #12
  %1041 = load i32, ptr %1040, align 4, !tbaa !5
  %1042 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1029, ptr noundef @.str.2, i32 noundef %1030, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 187, ptr noundef %1033, ptr noundef %1036, ptr noundef %1039, i32 noundef %1041) #11
  br label %1060

1043:                                             ; preds = %1021, %1014
  %1044 = load i32, ptr %44, align 4, !tbaa !5
  %1045 = call ptr @__errno_location() #12
  store i32 %1044, ptr %1045, align 4, !tbaa !5
  %1046 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1047 = load i32, ptr @test_count, align 4, !tbaa !5
  %1048 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1049 = load i32, ptr %1048, align 4, !tbaa !5
  %1050 = call ptr @s2n_strerror(i32 noundef %1049, ptr noundef @.str.4)
  %1051 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1052 = load i32, ptr %1051, align 4, !tbaa !5
  %1053 = call ptr @s2n_strerror_debug(i32 noundef %1052, ptr noundef @.str.4)
  %1054 = call ptr @__errno_location() #12
  %1055 = load i32, ptr %1054, align 4, !tbaa !5
  %1056 = call ptr @strerror(i32 noundef %1055) #11
  %1057 = call ptr @__errno_location() #12
  %1058 = load i32, ptr %1057, align 4, !tbaa !5
  %1059 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1046, ptr noundef @.str.5, i32 noundef %1047, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 187, ptr noundef %1050, ptr noundef %1053, ptr noundef %1056, i32 noundef %1058) #11
  br label %1060

1060:                                             ; preds = %1043, %1026
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %1061

1061:                                             ; preds = %1060
  br label %1062

1062:                                             ; preds = %1061
  call void @exit(i32 noundef 1) #13
  unreachable

1063:                                             ; No predecessors!
  br label %1064

1064:                                             ; preds = %1063
  br label %1065

1065:                                             ; preds = %1064, %1003
  br label %1066

1066:                                             ; preds = %1065
  br label %1067

1067:                                             ; preds = %1066
  br label %1068

1068:                                             ; preds = %1067
  %1069 = load i32, ptr @test_count, align 4, !tbaa !5
  %1070 = add nsw i32 %1069, 1
  store i32 %1070, ptr @test_count, align 4, !tbaa !5
  %1071 = load ptr, ptr %42, align 8, !tbaa !9
  %1072 = load ptr, ptr %42, align 8, !tbaa !9
  %1073 = getelementptr inbounds %struct.s2n_connection, ptr %1072, i32 0, i32 28
  %1074 = getelementptr inbounds %struct.s2n_secrets, ptr %1073, i32 0, i32 0
  %1075 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %1074, i32 0, i32 2
  %1076 = getelementptr inbounds [48 x i8], ptr %1075, i64 0, i64 0
  %1077 = call i32 @s2n_set_test_secret(ptr noundef %1071, ptr noundef %1076, ptr noundef byval(%struct.s2n_blob) align 8 %35)
  %1078 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  store i32 %1077, ptr %1078, align 4
  %1079 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  %1080 = load i32, ptr %1079, align 4
  %1081 = call zeroext i1 @s2n_result_is_ok(i32 %1080)
  br i1 %1081, label %1135, label %1082

1082:                                             ; preds = %1068
  br label %1083

1083:                                             ; preds = %1082
  br label %1084

1084:                                             ; preds = %1083
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  %1085 = call ptr @__errno_location() #12
  %1086 = load i32, ptr %1085, align 4, !tbaa !5
  store i32 %1086, ptr %46, align 4, !tbaa !5
  %1087 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1088 = call i32 @s2n_print_stacktrace(ptr noundef %1087)
  %1089 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1090 = trunc i8 %1089 to i1
  br i1 %1090, label %1091, label %1113

1091:                                             ; preds = %1084
  %1092 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1093 = call i32 @fileno(ptr noundef %1092) #11
  %1094 = call i32 @isatty(i32 noundef %1093) #11
  %1095 = icmp ne i32 %1094, 0
  br i1 %1095, label %1096, label %1113

1096:                                             ; preds = %1091
  %1097 = load i32, ptr %46, align 4, !tbaa !5
  %1098 = call ptr @__errno_location() #12
  store i32 %1097, ptr %1098, align 4, !tbaa !5
  %1099 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1100 = load i32, ptr @test_count, align 4, !tbaa !5
  %1101 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1102 = load i32, ptr %1101, align 4, !tbaa !5
  %1103 = call ptr @s2n_strerror(i32 noundef %1102, ptr noundef @.str.4)
  %1104 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1105 = load i32, ptr %1104, align 4, !tbaa !5
  %1106 = call ptr @s2n_strerror_debug(i32 noundef %1105, ptr noundef @.str.4)
  %1107 = call ptr @__errno_location() #12
  %1108 = load i32, ptr %1107, align 4, !tbaa !5
  %1109 = call ptr @strerror(i32 noundef %1108) #11
  %1110 = call ptr @__errno_location() #12
  %1111 = load i32, ptr %1110, align 4, !tbaa !5
  %1112 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1099, ptr noundef @.str.2, i32 noundef %1100, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 188, ptr noundef %1103, ptr noundef %1106, ptr noundef %1109, i32 noundef %1111) #11
  br label %1130

1113:                                             ; preds = %1091, %1084
  %1114 = load i32, ptr %46, align 4, !tbaa !5
  %1115 = call ptr @__errno_location() #12
  store i32 %1114, ptr %1115, align 4, !tbaa !5
  %1116 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1117 = load i32, ptr @test_count, align 4, !tbaa !5
  %1118 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1119 = load i32, ptr %1118, align 4, !tbaa !5
  %1120 = call ptr @s2n_strerror(i32 noundef %1119, ptr noundef @.str.4)
  %1121 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1122 = load i32, ptr %1121, align 4, !tbaa !5
  %1123 = call ptr @s2n_strerror_debug(i32 noundef %1122, ptr noundef @.str.4)
  %1124 = call ptr @__errno_location() #12
  %1125 = load i32, ptr %1124, align 4, !tbaa !5
  %1126 = call ptr @strerror(i32 noundef %1125) #11
  %1127 = call ptr @__errno_location() #12
  %1128 = load i32, ptr %1127, align 4, !tbaa !5
  %1129 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1116, ptr noundef @.str.5, i32 noundef %1117, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 188, ptr noundef %1120, ptr noundef %1123, ptr noundef %1126, i32 noundef %1128) #11
  br label %1130

1130:                                             ; preds = %1113, %1096
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  br label %1131

1131:                                             ; preds = %1130
  br label %1132

1132:                                             ; preds = %1131
  call void @exit(i32 noundef 1) #13
  unreachable

1133:                                             ; No predecessors!
  br label %1134

1134:                                             ; preds = %1133
  br label %1135

1135:                                             ; preds = %1134, %1068
  br label %1136

1136:                                             ; preds = %1135
  br label %1137

1137:                                             ; preds = %1136
  %1138 = load ptr, ptr %42, align 8, !tbaa !9
  %1139 = getelementptr inbounds %struct.s2n_connection, ptr %1138, i32 0, i32 52
  %1140 = getelementptr inbounds %struct.s2n_handshake, ptr %1139, i32 0, i32 6
  store i32 3, ptr %1140, align 4, !tbaa !60
  %1141 = getelementptr inbounds [16 x i32], ptr %16, i64 0, i64 15
  %1142 = load i32, ptr %1141, align 4, !tbaa !5
  %1143 = load ptr, ptr %42, align 8, !tbaa !9
  %1144 = getelementptr inbounds %struct.s2n_connection, ptr %1143, i32 0, i32 52
  %1145 = getelementptr inbounds %struct.s2n_handshake, ptr %1144, i32 0, i32 7
  store i32 %1142, ptr %1145, align 8, !tbaa !61
  br label %1146

1146:                                             ; preds = %1137
  %1147 = load i32, ptr @test_count, align 4, !tbaa !5
  %1148 = add nsw i32 %1147, 1
  store i32 %1148, ptr @test_count, align 4, !tbaa !5
  %1149 = load ptr, ptr %42, align 8, !tbaa !9
  %1150 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1149)
  %1151 = icmp eq i32 %1150, 15
  br i1 %1151, label %1205, label %1152

1152:                                             ; preds = %1146
  br label %1153

1153:                                             ; preds = %1152
  br label %1154

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

1161:                                             ; preds = %1154
  %1162 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1163 = call i32 @fileno(ptr noundef %1162) #11
  %1164 = call i32 @isatty(i32 noundef %1163) #11
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1166, label %1183

1166:                                             ; preds = %1161
  %1167 = load i32, ptr %47, align 4, !tbaa !5
  %1168 = call ptr @__errno_location() #12
  store i32 %1167, ptr %1168, align 4, !tbaa !5
  %1169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1170 = load i32, ptr @test_count, align 4, !tbaa !5
  %1171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1172 = load i32, ptr %1171, align 4, !tbaa !5
  %1173 = call ptr @s2n_strerror(i32 noundef %1172, ptr noundef @.str.4)
  %1174 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1175 = load i32, ptr %1174, align 4, !tbaa !5
  %1176 = call ptr @s2n_strerror_debug(i32 noundef %1175, ptr noundef @.str.4)
  %1177 = call ptr @__errno_location() #12
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  %1179 = call ptr @strerror(i32 noundef %1178) #11
  %1180 = call ptr @__errno_location() #12
  %1181 = load i32, ptr %1180, align 4, !tbaa !5
  %1182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1169, ptr noundef @.str.2, i32 noundef %1170, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 192, ptr noundef %1173, ptr noundef %1176, ptr noundef %1179, i32 noundef %1181) #11
  br label %1200

1183:                                             ; preds = %1161, %1154
  %1184 = load i32, ptr %47, align 4, !tbaa !5
  %1185 = call ptr @__errno_location() #12
  store i32 %1184, ptr %1185, align 4, !tbaa !5
  %1186 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1187 = load i32, ptr @test_count, align 4, !tbaa !5
  %1188 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1189 = load i32, ptr %1188, align 4, !tbaa !5
  %1190 = call ptr @s2n_strerror(i32 noundef %1189, ptr noundef @.str.4)
  %1191 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1192 = load i32, ptr %1191, align 4, !tbaa !5
  %1193 = call ptr @s2n_strerror_debug(i32 noundef %1192, ptr noundef @.str.4)
  %1194 = call ptr @__errno_location() #12
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  %1196 = call ptr @strerror(i32 noundef %1195) #11
  %1197 = call ptr @__errno_location() #12
  %1198 = load i32, ptr %1197, align 4, !tbaa !5
  %1199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1186, ptr noundef @.str.5, i32 noundef %1187, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 192, ptr noundef %1190, ptr noundef %1193, ptr noundef %1196, i32 noundef %1198) #11
  br label %1200

1200:                                             ; preds = %1183, %1166
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201
  call void @exit(i32 noundef 1) #13
  unreachable

1203:                                             ; No predecessors!
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204, %1146
  br label %1206

1206:                                             ; preds = %1205
  br label %1207

1207:                                             ; preds = %1206
  br label %1208

1208:                                             ; preds = %1207
  %1209 = load i32, ptr @test_count, align 4, !tbaa !5
  %1210 = add nsw i32 %1209, 1
  store i32 %1210, ptr @test_count, align 4, !tbaa !5
  %1211 = load ptr, ptr %42, align 8, !tbaa !9
  %1212 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %1211)
  %1213 = getelementptr inbounds %struct.s2n_result, ptr %48, i32 0, i32 0
  store i32 %1212, ptr %1213, align 4
  %1214 = getelementptr inbounds %struct.s2n_result, ptr %48, i32 0, i32 0
  %1215 = load i32, ptr %1214, align 4
  %1216 = call zeroext i1 @s2n_result_is_ok(i32 %1215)
  br i1 %1216, label %1270, label %1217

1217:                                             ; preds = %1208
  br label %1218

1218:                                             ; preds = %1217
  br label %1219

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

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

1231:                                             ; preds = %1226
  %1232 = load i32, ptr %49, align 4, !tbaa !5
  %1233 = call ptr @__errno_location() #12
  store i32 %1232, ptr %1233, align 4, !tbaa !5
  %1234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1235 = load i32, ptr @test_count, align 4, !tbaa !5
  %1236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1237 = load i32, ptr %1236, align 4, !tbaa !5
  %1238 = call ptr @s2n_strerror(i32 noundef %1237, ptr noundef @.str.4)
  %1239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1240 = load i32, ptr %1239, align 4, !tbaa !5
  %1241 = call ptr @s2n_strerror_debug(i32 noundef %1240, ptr noundef @.str.4)
  %1242 = call ptr @__errno_location() #12
  %1243 = load i32, ptr %1242, align 4, !tbaa !5
  %1244 = call ptr @strerror(i32 noundef %1243) #11
  %1245 = call ptr @__errno_location() #12
  %1246 = load i32, ptr %1245, align 4, !tbaa !5
  %1247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1234, ptr noundef @.str.2, i32 noundef %1235, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 193, ptr noundef %1238, ptr noundef %1241, ptr noundef %1244, i32 noundef %1246) #11
  br label %1265

1248:                                             ; preds = %1226, %1219
  %1249 = load i32, ptr %49, align 4, !tbaa !5
  %1250 = call ptr @__errno_location() #12
  store i32 %1249, ptr %1250, align 4, !tbaa !5
  %1251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1252 = load i32, ptr @test_count, align 4, !tbaa !5
  %1253 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1254 = load i32, ptr %1253, align 4, !tbaa !5
  %1255 = call ptr @s2n_strerror(i32 noundef %1254, ptr noundef @.str.4)
  %1256 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1257 = load i32, ptr %1256, align 4, !tbaa !5
  %1258 = call ptr @s2n_strerror_debug(i32 noundef %1257, ptr noundef @.str.4)
  %1259 = call ptr @__errno_location() #12
  %1260 = load i32, ptr %1259, align 4, !tbaa !5
  %1261 = call ptr @strerror(i32 noundef %1260) #11
  %1262 = call ptr @__errno_location() #12
  %1263 = load i32, ptr %1262, align 4, !tbaa !5
  %1264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1251, ptr noundef @.str.5, i32 noundef %1252, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 193, ptr noundef %1255, ptr noundef %1258, ptr noundef %1261, i32 noundef %1263) #11
  br label %1265

1265:                                             ; preds = %1248, %1231
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

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

1268:                                             ; No predecessors!
  br label %1269

1269:                                             ; preds = %1268
  br label %1270

1270:                                             ; preds = %1269, %1208
  br label %1271

1271:                                             ; preds = %1270
  br label %1272

1272:                                             ; preds = %1271
  br label %1273

1273:                                             ; preds = %1272
  %1274 = getelementptr inbounds %struct.s2n_blob, ptr %39, i32 0, i32 1
  %1275 = load i32, ptr %1274, align 8, !tbaa !62
  %1276 = icmp ne i32 %1275, 0
  br i1 %1276, label %1277, label %1349

1277:                                             ; preds = %1273
  br label %1278

1278:                                             ; preds = %1277
  %1279 = load i32, ptr @test_count, align 4, !tbaa !5
  %1280 = add nsw i32 %1279, 1
  store i32 %1280, ptr @test_count, align 4, !tbaa !5
  %1281 = load ptr, ptr %42, align 8, !tbaa !9
  %1282 = getelementptr inbounds %struct.s2n_connection, ptr %1281, i32 0, i32 27
  %1283 = load ptr, ptr %1282, align 8, !tbaa !28
  %1284 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1283, i32 0, i32 5
  %1285 = getelementptr inbounds [16 x i8], ptr %1284, i64 0, i64 0
  %1286 = getelementptr inbounds %struct.s2n_blob, ptr %39, i32 0, i32 0
  %1287 = load ptr, ptr %1286, align 8, !tbaa !63
  %1288 = getelementptr inbounds %struct.s2n_blob, ptr %39, i32 0, i32 1
  %1289 = load i32, ptr %1288, align 8, !tbaa !62
  %1290 = zext i32 %1289 to i64
  %1291 = call i32 @memcmp(ptr noundef %1285, ptr noundef %1287, i64 noundef %1290) #14
  %1292 = icmp eq i32 %1291, 0
  br i1 %1292, label %1346, label %1293

1293:                                             ; preds = %1278
  br label %1294

1294:                                             ; preds = %1293
  br label %1295

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

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

1307:                                             ; preds = %1302
  %1308 = load i32, ptr %50, align 4, !tbaa !5
  %1309 = call ptr @__errno_location() #12
  store i32 %1308, ptr %1309, align 4, !tbaa !5
  %1310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1311 = load i32, ptr @test_count, align 4, !tbaa !5
  %1312 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1313 = load i32, ptr %1312, align 4, !tbaa !5
  %1314 = call ptr @s2n_strerror(i32 noundef %1313, ptr noundef @.str.4)
  %1315 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1316 = load i32, ptr %1315, align 4, !tbaa !5
  %1317 = call ptr @s2n_strerror_debug(i32 noundef %1316, ptr noundef @.str.4)
  %1318 = call ptr @__errno_location() #12
  %1319 = load i32, ptr %1318, align 4, !tbaa !5
  %1320 = call ptr @strerror(i32 noundef %1319) #11
  %1321 = call ptr @__errno_location() #12
  %1322 = load i32, ptr %1321, align 4, !tbaa !5
  %1323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1310, ptr noundef @.str.2, i32 noundef %1311, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 195, ptr noundef %1314, ptr noundef %1317, ptr noundef %1320, i32 noundef %1322) #11
  br label %1341

1324:                                             ; preds = %1302, %1295
  %1325 = load i32, ptr %50, align 4, !tbaa !5
  %1326 = call ptr @__errno_location() #12
  store i32 %1325, ptr %1326, align 4, !tbaa !5
  %1327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1328 = load i32, ptr @test_count, align 4, !tbaa !5
  %1329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1330 = load i32, ptr %1329, align 4, !tbaa !5
  %1331 = call ptr @s2n_strerror(i32 noundef %1330, ptr noundef @.str.4)
  %1332 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1333 = load i32, ptr %1332, align 4, !tbaa !5
  %1334 = call ptr @s2n_strerror_debug(i32 noundef %1333, ptr noundef @.str.4)
  %1335 = call ptr @__errno_location() #12
  %1336 = load i32, ptr %1335, align 4, !tbaa !5
  %1337 = call ptr @strerror(i32 noundef %1336) #11
  %1338 = call ptr @__errno_location() #12
  %1339 = load i32, ptr %1338, align 4, !tbaa !5
  %1340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1327, ptr noundef @.str.5, i32 noundef %1328, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 195, ptr noundef %1331, ptr noundef %1334, ptr noundef %1337, i32 noundef %1339) #11
  br label %1341

1341:                                             ; preds = %1324, %1307
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1342

1342:                                             ; preds = %1341
  br label %1343

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

1344:                                             ; No predecessors!
  br label %1345

1345:                                             ; preds = %1344
  br label %1346

1346:                                             ; preds = %1345, %1278
  br label %1347

1347:                                             ; preds = %1346
  br label %1348

1348:                                             ; preds = %1347
  br label %1349

1349:                                             ; preds = %1348, %1273
  br label %1350

1350:                                             ; preds = %1349
  br label %1351

1351:                                             ; preds = %1350
  %1352 = load ptr, ptr %42, align 8, !tbaa !9
  %1353 = getelementptr inbounds %struct.s2n_connection, ptr %1352, i32 0, i32 13
  %1354 = load i32, ptr %1353, align 4, !tbaa !64
  %1355 = icmp eq i32 %1354, 1
  br i1 %1355, label %1356, label %1431

1356:                                             ; preds = %1351
  br label %1357

1357:                                             ; preds = %1356
  %1358 = getelementptr inbounds %struct.s2n_blob, ptr %37, i32 0, i32 1
  %1359 = load i32, ptr %1358, align 8, !tbaa !62
  %1360 = icmp ne i32 %1359, 0
  br i1 %1360, label %1361, label %1428

1361:                                             ; preds = %1357
  br label %1362

1362:                                             ; preds = %1361
  %1363 = load i32, ptr @test_count, align 4, !tbaa !5
  %1364 = add nsw i32 %1363, 1
  store i32 %1364, ptr @test_count, align 4, !tbaa !5
  %1365 = getelementptr inbounds %struct.s2n_blob, ptr %37, i32 0, i32 0
  %1366 = load ptr, ptr %1365, align 8, !tbaa !63
  %1367 = getelementptr inbounds %struct.s2n_blob, ptr %37, i32 0, i32 1
  %1368 = load i32, ptr %1367, align 8, !tbaa !62
  %1369 = zext i32 %1368 to i64
  %1370 = call i32 @memcmp(ptr noundef @test_send_key, ptr noundef %1366, i64 noundef %1369) #14
  %1371 = icmp eq i32 %1370, 0
  br i1 %1371, label %1425, label %1372

1372:                                             ; preds = %1362
  br label %1373

1373:                                             ; preds = %1372
  br label %1374

1374:                                             ; preds = %1373
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #11
  %1375 = call ptr @__errno_location() #12
  %1376 = load i32, ptr %1375, align 4, !tbaa !5
  store i32 %1376, ptr %51, align 4, !tbaa !5
  %1377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1378 = call i32 @s2n_print_stacktrace(ptr noundef %1377)
  %1379 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1380 = trunc i8 %1379 to i1
  br i1 %1380, label %1381, label %1403

1381:                                             ; preds = %1374
  %1382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1383 = call i32 @fileno(ptr noundef %1382) #11
  %1384 = call i32 @isatty(i32 noundef %1383) #11
  %1385 = icmp ne i32 %1384, 0
  br i1 %1385, label %1386, label %1403

1386:                                             ; preds = %1381
  %1387 = load i32, ptr %51, align 4, !tbaa !5
  %1388 = call ptr @__errno_location() #12
  store i32 %1387, ptr %1388, align 4, !tbaa !5
  %1389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1390 = load i32, ptr @test_count, align 4, !tbaa !5
  %1391 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1392 = load i32, ptr %1391, align 4, !tbaa !5
  %1393 = call ptr @s2n_strerror(i32 noundef %1392, ptr noundef @.str.4)
  %1394 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1395 = load i32, ptr %1394, align 4, !tbaa !5
  %1396 = call ptr @s2n_strerror_debug(i32 noundef %1395, ptr noundef @.str.4)
  %1397 = call ptr @__errno_location() #12
  %1398 = load i32, ptr %1397, align 4, !tbaa !5
  %1399 = call ptr @strerror(i32 noundef %1398) #11
  %1400 = call ptr @__errno_location() #12
  %1401 = load i32, ptr %1400, align 4, !tbaa !5
  %1402 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1389, ptr noundef @.str.2, i32 noundef %1390, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 196, ptr noundef %1393, ptr noundef %1396, ptr noundef %1399, i32 noundef %1401) #11
  br label %1420

1403:                                             ; preds = %1381, %1374
  %1404 = load i32, ptr %51, align 4, !tbaa !5
  %1405 = call ptr @__errno_location() #12
  store i32 %1404, ptr %1405, align 4, !tbaa !5
  %1406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1407 = load i32, ptr @test_count, align 4, !tbaa !5
  %1408 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1409 = load i32, ptr %1408, align 4, !tbaa !5
  %1410 = call ptr @s2n_strerror(i32 noundef %1409, ptr noundef @.str.4)
  %1411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1412 = load i32, ptr %1411, align 4, !tbaa !5
  %1413 = call ptr @s2n_strerror_debug(i32 noundef %1412, ptr noundef @.str.4)
  %1414 = call ptr @__errno_location() #12
  %1415 = load i32, ptr %1414, align 4, !tbaa !5
  %1416 = call ptr @strerror(i32 noundef %1415) #11
  %1417 = call ptr @__errno_location() #12
  %1418 = load i32, ptr %1417, align 4, !tbaa !5
  %1419 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1406, ptr noundef @.str.5, i32 noundef %1407, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 196, ptr noundef %1410, ptr noundef %1413, ptr noundef %1416, i32 noundef %1418) #11
  br label %1420

1420:                                             ; preds = %1403, %1386
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  br label %1421

1421:                                             ; preds = %1420
  br label %1422

1422:                                             ; preds = %1421
  call void @exit(i32 noundef 1) #13
  unreachable

1423:                                             ; No predecessors!
  br label %1424

1424:                                             ; preds = %1423
  br label %1425

1425:                                             ; preds = %1424, %1362
  br label %1426

1426:                                             ; preds = %1425
  br label %1427

1427:                                             ; preds = %1426
  br label %1428

1428:                                             ; preds = %1427, %1357
  br label %1429

1429:                                             ; preds = %1428
  br label %1430

1430:                                             ; preds = %1429
  br label %1506

1431:                                             ; preds = %1351
  br label %1432

1432:                                             ; preds = %1431
  %1433 = getelementptr inbounds %struct.s2n_blob, ptr %37, i32 0, i32 1
  %1434 = load i32, ptr %1433, align 8, !tbaa !62
  %1435 = icmp ne i32 %1434, 0
  br i1 %1435, label %1436, label %1503

1436:                                             ; preds = %1432
  br label %1437

1437:                                             ; preds = %1436
  %1438 = load i32, ptr @test_count, align 4, !tbaa !5
  %1439 = add nsw i32 %1438, 1
  store i32 %1439, ptr @test_count, align 4, !tbaa !5
  %1440 = getelementptr inbounds %struct.s2n_blob, ptr %37, i32 0, i32 0
  %1441 = load ptr, ptr %1440, align 8, !tbaa !63
  %1442 = getelementptr inbounds %struct.s2n_blob, ptr %37, i32 0, i32 1
  %1443 = load i32, ptr %1442, align 8, !tbaa !62
  %1444 = zext i32 %1443 to i64
  %1445 = call i32 @memcmp(ptr noundef @test_recv_key, ptr noundef %1441, i64 noundef %1444) #14
  %1446 = icmp eq i32 %1445, 0
  br i1 %1446, label %1500, label %1447

1447:                                             ; preds = %1437
  br label %1448

1448:                                             ; preds = %1447
  br label %1449

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

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

1461:                                             ; preds = %1456
  %1462 = load i32, ptr %52, align 4, !tbaa !5
  %1463 = call ptr @__errno_location() #12
  store i32 %1462, ptr %1463, align 4, !tbaa !5
  %1464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1465 = load i32, ptr @test_count, align 4, !tbaa !5
  %1466 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1467 = load i32, ptr %1466, align 4, !tbaa !5
  %1468 = call ptr @s2n_strerror(i32 noundef %1467, ptr noundef @.str.4)
  %1469 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1470 = load i32, ptr %1469, align 4, !tbaa !5
  %1471 = call ptr @s2n_strerror_debug(i32 noundef %1470, ptr noundef @.str.4)
  %1472 = call ptr @__errno_location() #12
  %1473 = load i32, ptr %1472, align 4, !tbaa !5
  %1474 = call ptr @strerror(i32 noundef %1473) #11
  %1475 = call ptr @__errno_location() #12
  %1476 = load i32, ptr %1475, align 4, !tbaa !5
  %1477 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1464, ptr noundef @.str.2, i32 noundef %1465, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 196, ptr noundef %1468, ptr noundef %1471, ptr noundef %1474, i32 noundef %1476) #11
  br label %1495

1478:                                             ; preds = %1456, %1449
  %1479 = load i32, ptr %52, align 4, !tbaa !5
  %1480 = call ptr @__errno_location() #12
  store i32 %1479, ptr %1480, align 4, !tbaa !5
  %1481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1482 = load i32, ptr @test_count, align 4, !tbaa !5
  %1483 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1484 = load i32, ptr %1483, align 4, !tbaa !5
  %1485 = call ptr @s2n_strerror(i32 noundef %1484, ptr noundef @.str.4)
  %1486 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1487 = load i32, ptr %1486, align 4, !tbaa !5
  %1488 = call ptr @s2n_strerror_debug(i32 noundef %1487, ptr noundef @.str.4)
  %1489 = call ptr @__errno_location() #12
  %1490 = load i32, ptr %1489, align 4, !tbaa !5
  %1491 = call ptr @strerror(i32 noundef %1490) #11
  %1492 = call ptr @__errno_location() #12
  %1493 = load i32, ptr %1492, align 4, !tbaa !5
  %1494 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1481, ptr noundef @.str.5, i32 noundef %1482, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 196, ptr noundef %1485, ptr noundef %1488, ptr noundef %1491, i32 noundef %1493) #11
  br label %1495

1495:                                             ; preds = %1478, %1461
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  br label %1496

1496:                                             ; preds = %1495
  br label %1497

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

1498:                                             ; No predecessors!
  br label %1499

1499:                                             ; preds = %1498
  br label %1500

1500:                                             ; preds = %1499, %1437
  br label %1501

1501:                                             ; preds = %1500
  br label %1502

1502:                                             ; preds = %1501
  br label %1503

1503:                                             ; preds = %1502, %1432
  br label %1504

1504:                                             ; preds = %1503
  br label %1505

1505:                                             ; preds = %1504
  br label %1506

1506:                                             ; preds = %1505, %1430
  %1507 = call i32 @s2n_connection_ptr_free(ptr noundef %42)
  %1508 = getelementptr inbounds %struct.s2n_result, ptr %53, i32 0, i32 0
  store i32 %1507, ptr %1508, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  br label %1509

1509:                                             ; preds = %1506
  %1510 = load i64, ptr %41, align 8, !tbaa !20
  %1511 = add i64 %1510, 1
  store i64 %1511, ptr %41, align 8, !tbaa !20
  br label %987, !llvm.loop !67

1512:                                             ; preds = %990
  store i32 0, ptr %19, align 4
  br label %1513

1513:                                             ; preds = %1512, %983
  %1514 = call i32 @s2n_free(ptr noundef %39)
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #11
  br label %1515

1515:                                             ; preds = %1513, %973
  %1516 = call i32 @s2n_free(ptr noundef %37)
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #11
  br label %1517

1517:                                             ; preds = %1515, %963
  %1518 = call i32 @s2n_free(ptr noundef %35)
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #11
  %1519 = load i32, ptr %19, align 4
  switch i32 %1519, label %2658 [
    i32 0, label %1520
  ]

1520:                                             ; preds = %1517
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #11
  call void @llvm.memset.p0.i64(ptr align 8 %54, i8 0, i64 24, i1 false)
  br label %1521

1521:                                             ; preds = %1520
  %1522 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %54, ptr noundef @.str.30)
  %1523 = getelementptr inbounds %struct.s2n_result, ptr %55, i32 0, i32 0
  store i32 %1522, ptr %1523, align 4
  %1524 = getelementptr inbounds %struct.s2n_result, ptr %55, i32 0, i32 0
  %1525 = load i32, ptr %1524, align 4
  %1526 = call zeroext i1 @s2n_result_is_ok(i32 %1525)
  br i1 %1526, label %1528, label %1527

1527:                                             ; preds = %1521
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %2090

1528:                                             ; preds = %1521
  br label %1529

1529:                                             ; preds = %1528
  br label %1530

1530:                                             ; preds = %1529
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #11
  call void @llvm.memset.p0.i64(ptr align 8 %56, i8 0, i64 24, i1 false)
  br label %1531

1531:                                             ; preds = %1530
  %1532 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %56, ptr noundef @.str.31)
  %1533 = getelementptr inbounds %struct.s2n_result, ptr %57, i32 0, i32 0
  store i32 %1532, ptr %1533, align 4
  %1534 = getelementptr inbounds %struct.s2n_result, ptr %57, i32 0, i32 0
  %1535 = load i32, ptr %1534, align 4
  %1536 = call zeroext i1 @s2n_result_is_ok(i32 %1535)
  br i1 %1536, label %1538, label %1537

1537:                                             ; preds = %1531
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %2088

1538:                                             ; preds = %1531
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

1540:                                             ; preds = %1539
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #11
  call void @llvm.memset.p0.i64(ptr align 8 %58, i8 0, i64 24, i1 false)
  br label %1541

1541:                                             ; preds = %1540
  %1542 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %58, ptr noundef @.str.32)
  %1543 = getelementptr inbounds %struct.s2n_result, ptr %59, i32 0, i32 0
  store i32 %1542, ptr %1543, align 4
  %1544 = getelementptr inbounds %struct.s2n_result, ptr %59, i32 0, i32 0
  %1545 = load i32, ptr %1544, align 4
  %1546 = call zeroext i1 @s2n_result_is_ok(i32 %1545)
  br i1 %1546, label %1548, label %1547

1547:                                             ; preds = %1541
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %2086

1548:                                             ; preds = %1541
  br label %1549

1549:                                             ; preds = %1548
  br label %1550

1550:                                             ; preds = %1549
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 @__const.main.trigger_messages, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #11
  store i64 0, ptr %61, align 8, !tbaa !20
  br label %1551

1551:                                             ; preds = %2082, %1550
  %1552 = load i64, ptr %61, align 8, !tbaa !20
  %1553 = icmp ult i64 %1552, 2
  br i1 %1553, label %1555, label %1554

1554:                                             ; preds = %1551
  store i32 154, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  br label %2085

1555:                                             ; preds = %1551
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #11
  %1556 = load i64, ptr %61, align 8, !tbaa !20
  %1557 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %1556
  %1558 = load i32, ptr %1557, align 4, !tbaa !5
  %1559 = zext i32 %1558 to i64
  %1560 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 %1559
  %1561 = load i32, ptr %1560, align 4, !tbaa !5
  store i32 %1561, ptr %62, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #11
  %1562 = load i64, ptr %61, align 8, !tbaa !20
  %1563 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %1562
  %1564 = load i32, ptr %1563, align 4, !tbaa !5
  %1565 = call ptr @s2n_connection_new(i32 noundef %1564)
  store ptr %1565, ptr %63, align 8, !tbaa !9
  %1566 = load ptr, ptr %14, align 8, !tbaa !9
  %1567 = load ptr, ptr %63, align 8, !tbaa !9
  %1568 = getelementptr inbounds %struct.s2n_connection, ptr %1567, i32 0, i32 27
  %1569 = load ptr, ptr %1568, align 8, !tbaa !28
  %1570 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1569, i32 0, i32 0
  store ptr %1566, ptr %1570, align 8, !tbaa !54
  %1571 = load ptr, ptr %63, align 8, !tbaa !9
  %1572 = getelementptr inbounds %struct.s2n_connection, ptr %1571, i32 0, i32 23
  store i8 34, ptr %1572, align 4, !tbaa !59
  br label %1573

1573:                                             ; preds = %1555
  %1574 = load i32, ptr @test_count, align 4, !tbaa !5
  %1575 = add nsw i32 %1574, 1
  store i32 %1575, ptr @test_count, align 4, !tbaa !5
  %1576 = load ptr, ptr %63, align 8, !tbaa !9
  %1577 = call i32 @s2n_conn_choose_state_machine(ptr noundef %1576, i8 noundef zeroext 34)
  %1578 = getelementptr inbounds %struct.s2n_result, ptr %64, i32 0, i32 0
  store i32 %1577, ptr %1578, align 4
  %1579 = getelementptr inbounds %struct.s2n_result, ptr %64, i32 0, i32 0
  %1580 = load i32, ptr %1579, align 4
  %1581 = call zeroext i1 @s2n_result_is_ok(i32 %1580)
  br i1 %1581, label %1635, label %1582

1582:                                             ; preds = %1573
  br label %1583

1583:                                             ; preds = %1582
  br label %1584

1584:                                             ; preds = %1583
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #11
  %1585 = call ptr @__errno_location() #12
  %1586 = load i32, ptr %1585, align 4, !tbaa !5
  store i32 %1586, ptr %65, align 4, !tbaa !5
  %1587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1588 = call i32 @s2n_print_stacktrace(ptr noundef %1587)
  %1589 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1590 = trunc i8 %1589 to i1
  br i1 %1590, label %1591, label %1613

1591:                                             ; preds = %1584
  %1592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1593 = call i32 @fileno(ptr noundef %1592) #11
  %1594 = call i32 @isatty(i32 noundef %1593) #11
  %1595 = icmp ne i32 %1594, 0
  br i1 %1595, label %1596, label %1613

1596:                                             ; preds = %1591
  %1597 = load i32, ptr %65, align 4, !tbaa !5
  %1598 = call ptr @__errno_location() #12
  store i32 %1597, ptr %1598, align 4, !tbaa !5
  %1599 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1600 = load i32, ptr @test_count, align 4, !tbaa !5
  %1601 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1602 = load i32, ptr %1601, align 4, !tbaa !5
  %1603 = call ptr @s2n_strerror(i32 noundef %1602, ptr noundef @.str.4)
  %1604 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1605 = load i32, ptr %1604, align 4, !tbaa !5
  %1606 = call ptr @s2n_strerror_debug(i32 noundef %1605, ptr noundef @.str.4)
  %1607 = call ptr @__errno_location() #12
  %1608 = load i32, ptr %1607, align 4, !tbaa !5
  %1609 = call ptr @strerror(i32 noundef %1608) #11
  %1610 = call ptr @__errno_location() #12
  %1611 = load i32, ptr %1610, align 4, !tbaa !5
  %1612 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1599, ptr noundef @.str.2, i32 noundef %1600, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 240, ptr noundef %1603, ptr noundef %1606, ptr noundef %1609, i32 noundef %1611) #11
  br label %1630

1613:                                             ; preds = %1591, %1584
  %1614 = load i32, ptr %65, align 4, !tbaa !5
  %1615 = call ptr @__errno_location() #12
  store i32 %1614, ptr %1615, align 4, !tbaa !5
  %1616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1617 = load i32, ptr @test_count, align 4, !tbaa !5
  %1618 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1619 = load i32, ptr %1618, align 4, !tbaa !5
  %1620 = call ptr @s2n_strerror(i32 noundef %1619, ptr noundef @.str.4)
  %1621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1622 = load i32, ptr %1621, align 4, !tbaa !5
  %1623 = call ptr @s2n_strerror_debug(i32 noundef %1622, ptr noundef @.str.4)
  %1624 = call ptr @__errno_location() #12
  %1625 = load i32, ptr %1624, align 4, !tbaa !5
  %1626 = call ptr @strerror(i32 noundef %1625) #11
  %1627 = call ptr @__errno_location() #12
  %1628 = load i32, ptr %1627, align 4, !tbaa !5
  %1629 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1616, ptr noundef @.str.5, i32 noundef %1617, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 240, ptr noundef %1620, ptr noundef %1623, ptr noundef %1626, i32 noundef %1628) #11
  br label %1630

1630:                                             ; preds = %1613, %1596
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  br label %1631

1631:                                             ; preds = %1630
  br label %1632

1632:                                             ; preds = %1631
  call void @exit(i32 noundef 1) #13
  unreachable

1633:                                             ; No predecessors!
  br label %1634

1634:                                             ; preds = %1633
  br label %1635

1635:                                             ; preds = %1634, %1573
  br label %1636

1636:                                             ; preds = %1635
  br label %1637

1637:                                             ; preds = %1636
  br label %1638

1638:                                             ; preds = %1637
  %1639 = load i32, ptr @test_count, align 4, !tbaa !5
  %1640 = add nsw i32 %1639, 1
  store i32 %1640, ptr @test_count, align 4, !tbaa !5
  %1641 = load ptr, ptr %63, align 8, !tbaa !9
  %1642 = load ptr, ptr %63, align 8, !tbaa !9
  %1643 = getelementptr inbounds %struct.s2n_connection, ptr %1642, i32 0, i32 28
  %1644 = getelementptr inbounds %struct.s2n_secrets, ptr %1643, i32 0, i32 0
  %1645 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %1644, i32 0, i32 5
  %1646 = getelementptr inbounds [48 x i8], ptr %1645, i64 0, i64 0
  %1647 = call i32 @s2n_set_test_secret(ptr noundef %1641, ptr noundef %1646, ptr noundef byval(%struct.s2n_blob) align 8 %54)
  %1648 = getelementptr inbounds %struct.s2n_result, ptr %66, i32 0, i32 0
  store i32 %1647, ptr %1648, align 4
  %1649 = getelementptr inbounds %struct.s2n_result, ptr %66, i32 0, i32 0
  %1650 = load i32, ptr %1649, align 4
  %1651 = call zeroext i1 @s2n_result_is_ok(i32 %1650)
  br i1 %1651, label %1705, label %1652

1652:                                             ; preds = %1638
  br label %1653

1653:                                             ; preds = %1652
  br label %1654

1654:                                             ; preds = %1653
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #11
  %1655 = call ptr @__errno_location() #12
  %1656 = load i32, ptr %1655, align 4, !tbaa !5
  store i32 %1656, ptr %67, align 4, !tbaa !5
  %1657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1658 = call i32 @s2n_print_stacktrace(ptr noundef %1657)
  %1659 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1660 = trunc i8 %1659 to i1
  br i1 %1660, label %1661, label %1683

1661:                                             ; preds = %1654
  %1662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1663 = call i32 @fileno(ptr noundef %1662) #11
  %1664 = call i32 @isatty(i32 noundef %1663) #11
  %1665 = icmp ne i32 %1664, 0
  br i1 %1665, label %1666, label %1683

1666:                                             ; preds = %1661
  %1667 = load i32, ptr %67, align 4, !tbaa !5
  %1668 = call ptr @__errno_location() #12
  store i32 %1667, ptr %1668, align 4, !tbaa !5
  %1669 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1670 = load i32, ptr @test_count, align 4, !tbaa !5
  %1671 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1672 = load i32, ptr %1671, align 4, !tbaa !5
  %1673 = call ptr @s2n_strerror(i32 noundef %1672, ptr noundef @.str.4)
  %1674 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1675 = load i32, ptr %1674, align 4, !tbaa !5
  %1676 = call ptr @s2n_strerror_debug(i32 noundef %1675, ptr noundef @.str.4)
  %1677 = call ptr @__errno_location() #12
  %1678 = load i32, ptr %1677, align 4, !tbaa !5
  %1679 = call ptr @strerror(i32 noundef %1678) #11
  %1680 = call ptr @__errno_location() #12
  %1681 = load i32, ptr %1680, align 4, !tbaa !5
  %1682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1669, ptr noundef @.str.2, i32 noundef %1670, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 241, ptr noundef %1673, ptr noundef %1676, ptr noundef %1679, i32 noundef %1681) #11
  br label %1700

1683:                                             ; preds = %1661, %1654
  %1684 = load i32, ptr %67, align 4, !tbaa !5
  %1685 = call ptr @__errno_location() #12
  store i32 %1684, ptr %1685, align 4, !tbaa !5
  %1686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1687 = load i32, ptr @test_count, align 4, !tbaa !5
  %1688 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1689 = load i32, ptr %1688, align 4, !tbaa !5
  %1690 = call ptr @s2n_strerror(i32 noundef %1689, ptr noundef @.str.4)
  %1691 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1692 = load i32, ptr %1691, align 4, !tbaa !5
  %1693 = call ptr @s2n_strerror_debug(i32 noundef %1692, ptr noundef @.str.4)
  %1694 = call ptr @__errno_location() #12
  %1695 = load i32, ptr %1694, align 4, !tbaa !5
  %1696 = call ptr @strerror(i32 noundef %1695) #11
  %1697 = call ptr @__errno_location() #12
  %1698 = load i32, ptr %1697, align 4, !tbaa !5
  %1699 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1686, ptr noundef @.str.5, i32 noundef %1687, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 241, ptr noundef %1690, ptr noundef %1693, ptr noundef %1696, i32 noundef %1698) #11
  br label %1700

1700:                                             ; preds = %1683, %1666
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #11
  br label %1701

1701:                                             ; preds = %1700
  br label %1702

1702:                                             ; preds = %1701
  call void @exit(i32 noundef 1) #13
  unreachable

1703:                                             ; No predecessors!
  br label %1704

1704:                                             ; preds = %1703
  br label %1705

1705:                                             ; preds = %1704, %1638
  br label %1706

1706:                                             ; preds = %1705
  br label %1707

1707:                                             ; preds = %1706
  %1708 = load ptr, ptr %63, align 8, !tbaa !9
  %1709 = getelementptr inbounds %struct.s2n_connection, ptr %1708, i32 0, i32 52
  %1710 = getelementptr inbounds %struct.s2n_handshake, ptr %1709, i32 0, i32 6
  store i32 3, ptr %1710, align 4, !tbaa !60
  %1711 = load i32, ptr %62, align 4, !tbaa !5
  %1712 = zext i32 %1711 to i64
  %1713 = getelementptr inbounds [16 x i32], ptr %16, i64 0, i64 %1712
  %1714 = load i32, ptr %1713, align 4, !tbaa !5
  %1715 = load ptr, ptr %63, align 8, !tbaa !9
  %1716 = getelementptr inbounds %struct.s2n_connection, ptr %1715, i32 0, i32 52
  %1717 = getelementptr inbounds %struct.s2n_handshake, ptr %1716, i32 0, i32 7
  store i32 %1714, ptr %1717, align 8, !tbaa !61
  br label %1718

1718:                                             ; preds = %1707
  %1719 = load i32, ptr @test_count, align 4, !tbaa !5
  %1720 = add nsw i32 %1719, 1
  store i32 %1720, ptr @test_count, align 4, !tbaa !5
  %1721 = load ptr, ptr %63, align 8, !tbaa !9
  %1722 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1721)
  %1723 = load i32, ptr %62, align 4, !tbaa !5
  %1724 = icmp eq i32 %1722, %1723
  br i1 %1724, label %1778, label %1725

1725:                                             ; preds = %1718
  br label %1726

1726:                                             ; preds = %1725
  br label %1727

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

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

1739:                                             ; preds = %1734
  %1740 = load i32, ptr %68, align 4, !tbaa !5
  %1741 = call ptr @__errno_location() #12
  store i32 %1740, ptr %1741, align 4, !tbaa !5
  %1742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1743 = load i32, ptr @test_count, align 4, !tbaa !5
  %1744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1745 = load i32, ptr %1744, align 4, !tbaa !5
  %1746 = call ptr @s2n_strerror(i32 noundef %1745, ptr noundef @.str.4)
  %1747 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1748 = load i32, ptr %1747, align 4, !tbaa !5
  %1749 = call ptr @s2n_strerror_debug(i32 noundef %1748, ptr noundef @.str.4)
  %1750 = call ptr @__errno_location() #12
  %1751 = load i32, ptr %1750, align 4, !tbaa !5
  %1752 = call ptr @strerror(i32 noundef %1751) #11
  %1753 = call ptr @__errno_location() #12
  %1754 = load i32, ptr %1753, align 4, !tbaa !5
  %1755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1742, ptr noundef @.str.2, i32 noundef %1743, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 245, ptr noundef %1746, ptr noundef %1749, ptr noundef %1752, i32 noundef %1754) #11
  br label %1773

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

1773:                                             ; preds = %1756, %1739
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #11
  br label %1774

1774:                                             ; preds = %1773
  br label %1775

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

1776:                                             ; No predecessors!
  br label %1777

1777:                                             ; preds = %1776
  br label %1778

1778:                                             ; preds = %1777, %1718
  br label %1779

1779:                                             ; preds = %1778
  br label %1780

1780:                                             ; preds = %1779
  br label %1781

1781:                                             ; preds = %1780
  %1782 = load i32, ptr @test_count, align 4, !tbaa !5
  %1783 = add nsw i32 %1782, 1
  store i32 %1783, ptr @test_count, align 4, !tbaa !5
  %1784 = load ptr, ptr %63, align 8, !tbaa !9
  %1785 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %1784)
  %1786 = getelementptr inbounds %struct.s2n_result, ptr %69, i32 0, i32 0
  store i32 %1785, ptr %1786, align 4
  %1787 = getelementptr inbounds %struct.s2n_result, ptr %69, i32 0, i32 0
  %1788 = load i32, ptr %1787, align 4
  %1789 = call zeroext i1 @s2n_result_is_ok(i32 %1788)
  br i1 %1789, label %1843, label %1790

1790:                                             ; preds = %1781
  br label %1791

1791:                                             ; preds = %1790
  br label %1792

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

1799:                                             ; preds = %1792
  %1800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1801 = call i32 @fileno(ptr noundef %1800) #11
  %1802 = call i32 @isatty(i32 noundef %1801) #11
  %1803 = icmp ne i32 %1802, 0
  br i1 %1803, label %1804, label %1821

1804:                                             ; preds = %1799
  %1805 = load i32, ptr %70, align 4, !tbaa !5
  %1806 = call ptr @__errno_location() #12
  store i32 %1805, ptr %1806, align 4, !tbaa !5
  %1807 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1808 = load i32, ptr @test_count, align 4, !tbaa !5
  %1809 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1810 = load i32, ptr %1809, align 4, !tbaa !5
  %1811 = call ptr @s2n_strerror(i32 noundef %1810, ptr noundef @.str.4)
  %1812 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1813 = load i32, ptr %1812, align 4, !tbaa !5
  %1814 = call ptr @s2n_strerror_debug(i32 noundef %1813, ptr noundef @.str.4)
  %1815 = call ptr @__errno_location() #12
  %1816 = load i32, ptr %1815, align 4, !tbaa !5
  %1817 = call ptr @strerror(i32 noundef %1816) #11
  %1818 = call ptr @__errno_location() #12
  %1819 = load i32, ptr %1818, align 4, !tbaa !5
  %1820 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1807, ptr noundef @.str.2, i32 noundef %1808, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 246, ptr noundef %1811, ptr noundef %1814, ptr noundef %1817, i32 noundef %1819) #11
  br label %1838

1821:                                             ; preds = %1799, %1792
  %1822 = load i32, ptr %70, align 4, !tbaa !5
  %1823 = call ptr @__errno_location() #12
  store i32 %1822, ptr %1823, align 4, !tbaa !5
  %1824 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1825 = load i32, ptr @test_count, align 4, !tbaa !5
  %1826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1827 = load i32, ptr %1826, align 4, !tbaa !5
  %1828 = call ptr @s2n_strerror(i32 noundef %1827, ptr noundef @.str.4)
  %1829 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1830 = load i32, ptr %1829, align 4, !tbaa !5
  %1831 = call ptr @s2n_strerror_debug(i32 noundef %1830, ptr noundef @.str.4)
  %1832 = call ptr @__errno_location() #12
  %1833 = load i32, ptr %1832, align 4, !tbaa !5
  %1834 = call ptr @strerror(i32 noundef %1833) #11
  %1835 = call ptr @__errno_location() #12
  %1836 = load i32, ptr %1835, align 4, !tbaa !5
  %1837 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1824, ptr noundef @.str.5, i32 noundef %1825, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 246, ptr noundef %1828, ptr noundef %1831, ptr noundef %1834, i32 noundef %1836) #11
  br label %1838

1838:                                             ; preds = %1821, %1804
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #11
  br label %1839

1839:                                             ; preds = %1838
  br label %1840

1840:                                             ; preds = %1839
  call void @exit(i32 noundef 1) #13
  unreachable

1841:                                             ; No predecessors!
  br label %1842

1842:                                             ; preds = %1841
  br label %1843

1843:                                             ; preds = %1842, %1781
  br label %1844

1844:                                             ; preds = %1843
  br label %1845

1845:                                             ; preds = %1844
  br label %1846

1846:                                             ; preds = %1845
  %1847 = getelementptr inbounds %struct.s2n_blob, ptr %58, i32 0, i32 1
  %1848 = load i32, ptr %1847, align 8, !tbaa !62
  %1849 = icmp ne i32 %1848, 0
  br i1 %1849, label %1850, label %1922

1850:                                             ; preds = %1846
  br label %1851

1851:                                             ; preds = %1850
  %1852 = load i32, ptr @test_count, align 4, !tbaa !5
  %1853 = add nsw i32 %1852, 1
  store i32 %1853, ptr @test_count, align 4, !tbaa !5
  %1854 = load ptr, ptr %63, align 8, !tbaa !9
  %1855 = getelementptr inbounds %struct.s2n_connection, ptr %1854, i32 0, i32 27
  %1856 = load ptr, ptr %1855, align 8, !tbaa !28
  %1857 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1856, i32 0, i32 6
  %1858 = getelementptr inbounds [16 x i8], ptr %1857, i64 0, i64 0
  %1859 = getelementptr inbounds %struct.s2n_blob, ptr %58, i32 0, i32 0
  %1860 = load ptr, ptr %1859, align 8, !tbaa !63
  %1861 = getelementptr inbounds %struct.s2n_blob, ptr %58, i32 0, i32 1
  %1862 = load i32, ptr %1861, align 8, !tbaa !62
  %1863 = zext i32 %1862 to i64
  %1864 = call i32 @memcmp(ptr noundef %1858, ptr noundef %1860, i64 noundef %1863) #14
  %1865 = icmp eq i32 %1864, 0
  br i1 %1865, label %1919, label %1866

1866:                                             ; preds = %1851
  br label %1867

1867:                                             ; preds = %1866
  br label %1868

1868:                                             ; preds = %1867
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #11
  %1869 = call ptr @__errno_location() #12
  %1870 = load i32, ptr %1869, align 4, !tbaa !5
  store i32 %1870, ptr %71, align 4, !tbaa !5
  %1871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1872 = call i32 @s2n_print_stacktrace(ptr noundef %1871)
  %1873 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1874 = trunc i8 %1873 to i1
  br i1 %1874, label %1875, label %1897

1875:                                             ; preds = %1868
  %1876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1877 = call i32 @fileno(ptr noundef %1876) #11
  %1878 = call i32 @isatty(i32 noundef %1877) #11
  %1879 = icmp ne i32 %1878, 0
  br i1 %1879, label %1880, label %1897

1880:                                             ; preds = %1875
  %1881 = load i32, ptr %71, align 4, !tbaa !5
  %1882 = call ptr @__errno_location() #12
  store i32 %1881, ptr %1882, align 4, !tbaa !5
  %1883 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1884 = load i32, ptr @test_count, align 4, !tbaa !5
  %1885 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1886 = load i32, ptr %1885, align 4, !tbaa !5
  %1887 = call ptr @s2n_strerror(i32 noundef %1886, ptr noundef @.str.4)
  %1888 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1889 = load i32, ptr %1888, align 4, !tbaa !5
  %1890 = call ptr @s2n_strerror_debug(i32 noundef %1889, ptr noundef @.str.4)
  %1891 = call ptr @__errno_location() #12
  %1892 = load i32, ptr %1891, align 4, !tbaa !5
  %1893 = call ptr @strerror(i32 noundef %1892) #11
  %1894 = call ptr @__errno_location() #12
  %1895 = load i32, ptr %1894, align 4, !tbaa !5
  %1896 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1883, ptr noundef @.str.2, i32 noundef %1884, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 248, ptr noundef %1887, ptr noundef %1890, ptr noundef %1893, i32 noundef %1895) #11
  br label %1914

1897:                                             ; preds = %1875, %1868
  %1898 = load i32, ptr %71, align 4, !tbaa !5
  %1899 = call ptr @__errno_location() #12
  store i32 %1898, ptr %1899, align 4, !tbaa !5
  %1900 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1901 = load i32, ptr @test_count, align 4, !tbaa !5
  %1902 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1903 = load i32, ptr %1902, align 4, !tbaa !5
  %1904 = call ptr @s2n_strerror(i32 noundef %1903, ptr noundef @.str.4)
  %1905 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1906 = load i32, ptr %1905, align 4, !tbaa !5
  %1907 = call ptr @s2n_strerror_debug(i32 noundef %1906, ptr noundef @.str.4)
  %1908 = call ptr @__errno_location() #12
  %1909 = load i32, ptr %1908, align 4, !tbaa !5
  %1910 = call ptr @strerror(i32 noundef %1909) #11
  %1911 = call ptr @__errno_location() #12
  %1912 = load i32, ptr %1911, align 4, !tbaa !5
  %1913 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1900, ptr noundef @.str.5, i32 noundef %1901, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 248, ptr noundef %1904, ptr noundef %1907, ptr noundef %1910, i32 noundef %1912) #11
  br label %1914

1914:                                             ; preds = %1897, %1880
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  br label %1915

1915:                                             ; preds = %1914
  br label %1916

1916:                                             ; preds = %1915
  call void @exit(i32 noundef 1) #13
  unreachable

1917:                                             ; No predecessors!
  br label %1918

1918:                                             ; preds = %1917
  br label %1919

1919:                                             ; preds = %1918, %1851
  br label %1920

1920:                                             ; preds = %1919
  br label %1921

1921:                                             ; preds = %1920
  br label %1922

1922:                                             ; preds = %1921, %1846
  br label %1923

1923:                                             ; preds = %1922
  br label %1924

1924:                                             ; preds = %1923
  %1925 = load ptr, ptr %63, align 8, !tbaa !9
  %1926 = getelementptr inbounds %struct.s2n_connection, ptr %1925, i32 0, i32 13
  %1927 = load i32, ptr %1926, align 4, !tbaa !64
  %1928 = icmp eq i32 %1927, 0
  br i1 %1928, label %1929, label %2004

1929:                                             ; preds = %1924
  br label %1930

1930:                                             ; preds = %1929
  %1931 = getelementptr inbounds %struct.s2n_blob, ptr %56, i32 0, i32 1
  %1932 = load i32, ptr %1931, align 8, !tbaa !62
  %1933 = icmp ne i32 %1932, 0
  br i1 %1933, label %1934, label %2001

1934:                                             ; preds = %1930
  br label %1935

1935:                                             ; preds = %1934
  %1936 = load i32, ptr @test_count, align 4, !tbaa !5
  %1937 = add nsw i32 %1936, 1
  store i32 %1937, ptr @test_count, align 4, !tbaa !5
  %1938 = getelementptr inbounds %struct.s2n_blob, ptr %56, i32 0, i32 0
  %1939 = load ptr, ptr %1938, align 8, !tbaa !63
  %1940 = getelementptr inbounds %struct.s2n_blob, ptr %56, i32 0, i32 1
  %1941 = load i32, ptr %1940, align 8, !tbaa !62
  %1942 = zext i32 %1941 to i64
  %1943 = call i32 @memcmp(ptr noundef @test_send_key, ptr noundef %1939, i64 noundef %1942) #14
  %1944 = icmp eq i32 %1943, 0
  br i1 %1944, label %1998, label %1945

1945:                                             ; preds = %1935
  br label %1946

1946:                                             ; preds = %1945
  br label %1947

1947:                                             ; preds = %1946
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #11
  %1948 = call ptr @__errno_location() #12
  %1949 = load i32, ptr %1948, align 4, !tbaa !5
  store i32 %1949, ptr %72, align 4, !tbaa !5
  %1950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1951 = call i32 @s2n_print_stacktrace(ptr noundef %1950)
  %1952 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1953 = trunc i8 %1952 to i1
  br i1 %1953, label %1954, label %1976

1954:                                             ; preds = %1947
  %1955 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1956 = call i32 @fileno(ptr noundef %1955) #11
  %1957 = call i32 @isatty(i32 noundef %1956) #11
  %1958 = icmp ne i32 %1957, 0
  br i1 %1958, label %1959, label %1976

1959:                                             ; preds = %1954
  %1960 = load i32, ptr %72, align 4, !tbaa !5
  %1961 = call ptr @__errno_location() #12
  store i32 %1960, ptr %1961, align 4, !tbaa !5
  %1962 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1963 = load i32, ptr @test_count, align 4, !tbaa !5
  %1964 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1965 = load i32, ptr %1964, align 4, !tbaa !5
  %1966 = call ptr @s2n_strerror(i32 noundef %1965, ptr noundef @.str.4)
  %1967 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1968 = load i32, ptr %1967, align 4, !tbaa !5
  %1969 = call ptr @s2n_strerror_debug(i32 noundef %1968, ptr noundef @.str.4)
  %1970 = call ptr @__errno_location() #12
  %1971 = load i32, ptr %1970, align 4, !tbaa !5
  %1972 = call ptr @strerror(i32 noundef %1971) #11
  %1973 = call ptr @__errno_location() #12
  %1974 = load i32, ptr %1973, align 4, !tbaa !5
  %1975 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1962, ptr noundef @.str.2, i32 noundef %1963, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 249, ptr noundef %1966, ptr noundef %1969, ptr noundef %1972, i32 noundef %1974) #11
  br label %1993

1976:                                             ; preds = %1954, %1947
  %1977 = load i32, ptr %72, align 4, !tbaa !5
  %1978 = call ptr @__errno_location() #12
  store i32 %1977, ptr %1978, align 4, !tbaa !5
  %1979 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1980 = load i32, ptr @test_count, align 4, !tbaa !5
  %1981 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1982 = load i32, ptr %1981, align 4, !tbaa !5
  %1983 = call ptr @s2n_strerror(i32 noundef %1982, ptr noundef @.str.4)
  %1984 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1985 = load i32, ptr %1984, align 4, !tbaa !5
  %1986 = call ptr @s2n_strerror_debug(i32 noundef %1985, ptr noundef @.str.4)
  %1987 = call ptr @__errno_location() #12
  %1988 = load i32, ptr %1987, align 4, !tbaa !5
  %1989 = call ptr @strerror(i32 noundef %1988) #11
  %1990 = call ptr @__errno_location() #12
  %1991 = load i32, ptr %1990, align 4, !tbaa !5
  %1992 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1979, ptr noundef @.str.5, i32 noundef %1980, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 249, ptr noundef %1983, ptr noundef %1986, ptr noundef %1989, i32 noundef %1991) #11
  br label %1993

1993:                                             ; preds = %1976, %1959
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #11
  br label %1994

1994:                                             ; preds = %1993
  br label %1995

1995:                                             ; preds = %1994
  call void @exit(i32 noundef 1) #13
  unreachable

1996:                                             ; No predecessors!
  br label %1997

1997:                                             ; preds = %1996
  br label %1998

1998:                                             ; preds = %1997, %1935
  br label %1999

1999:                                             ; preds = %1998
  br label %2000

2000:                                             ; preds = %1999
  br label %2001

2001:                                             ; preds = %2000, %1930
  br label %2002

2002:                                             ; preds = %2001
  br label %2003

2003:                                             ; preds = %2002
  br label %2079

2004:                                             ; preds = %1924
  br label %2005

2005:                                             ; preds = %2004
  %2006 = getelementptr inbounds %struct.s2n_blob, ptr %56, i32 0, i32 1
  %2007 = load i32, ptr %2006, align 8, !tbaa !62
  %2008 = icmp ne i32 %2007, 0
  br i1 %2008, label %2009, label %2076

2009:                                             ; preds = %2005
  br label %2010

2010:                                             ; preds = %2009
  %2011 = load i32, ptr @test_count, align 4, !tbaa !5
  %2012 = add nsw i32 %2011, 1
  store i32 %2012, ptr @test_count, align 4, !tbaa !5
  %2013 = getelementptr inbounds %struct.s2n_blob, ptr %56, i32 0, i32 0
  %2014 = load ptr, ptr %2013, align 8, !tbaa !63
  %2015 = getelementptr inbounds %struct.s2n_blob, ptr %56, i32 0, i32 1
  %2016 = load i32, ptr %2015, align 8, !tbaa !62
  %2017 = zext i32 %2016 to i64
  %2018 = call i32 @memcmp(ptr noundef @test_recv_key, ptr noundef %2014, i64 noundef %2017) #14
  %2019 = icmp eq i32 %2018, 0
  br i1 %2019, label %2073, label %2020

2020:                                             ; preds = %2010
  br label %2021

2021:                                             ; preds = %2020
  br label %2022

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

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

2034:                                             ; preds = %2029
  %2035 = load i32, ptr %73, align 4, !tbaa !5
  %2036 = call ptr @__errno_location() #12
  store i32 %2035, ptr %2036, align 4, !tbaa !5
  %2037 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2038 = load i32, ptr @test_count, align 4, !tbaa !5
  %2039 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2040 = load i32, ptr %2039, align 4, !tbaa !5
  %2041 = call ptr @s2n_strerror(i32 noundef %2040, ptr noundef @.str.4)
  %2042 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2043 = load i32, ptr %2042, align 4, !tbaa !5
  %2044 = call ptr @s2n_strerror_debug(i32 noundef %2043, ptr noundef @.str.4)
  %2045 = call ptr @__errno_location() #12
  %2046 = load i32, ptr %2045, align 4, !tbaa !5
  %2047 = call ptr @strerror(i32 noundef %2046) #11
  %2048 = call ptr @__errno_location() #12
  %2049 = load i32, ptr %2048, align 4, !tbaa !5
  %2050 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2037, ptr noundef @.str.2, i32 noundef %2038, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 249, ptr noundef %2041, ptr noundef %2044, ptr noundef %2047, i32 noundef %2049) #11
  br label %2068

2051:                                             ; preds = %2029, %2022
  %2052 = load i32, ptr %73, align 4, !tbaa !5
  %2053 = call ptr @__errno_location() #12
  store i32 %2052, ptr %2053, align 4, !tbaa !5
  %2054 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2055 = load i32, ptr @test_count, align 4, !tbaa !5
  %2056 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2057 = load i32, ptr %2056, align 4, !tbaa !5
  %2058 = call ptr @s2n_strerror(i32 noundef %2057, ptr noundef @.str.4)
  %2059 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2060 = load i32, ptr %2059, align 4, !tbaa !5
  %2061 = call ptr @s2n_strerror_debug(i32 noundef %2060, ptr noundef @.str.4)
  %2062 = call ptr @__errno_location() #12
  %2063 = load i32, ptr %2062, align 4, !tbaa !5
  %2064 = call ptr @strerror(i32 noundef %2063) #11
  %2065 = call ptr @__errno_location() #12
  %2066 = load i32, ptr %2065, align 4, !tbaa !5
  %2067 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2054, ptr noundef @.str.5, i32 noundef %2055, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 249, ptr noundef %2058, ptr noundef %2061, ptr noundef %2064, i32 noundef %2066) #11
  br label %2068

2068:                                             ; preds = %2051, %2034
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #11
  br label %2069

2069:                                             ; preds = %2068
  br label %2070

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

2071:                                             ; No predecessors!
  br label %2072

2072:                                             ; preds = %2071
  br label %2073

2073:                                             ; preds = %2072, %2010
  br label %2074

2074:                                             ; preds = %2073
  br label %2075

2075:                                             ; preds = %2074
  br label %2076

2076:                                             ; preds = %2075, %2005
  br label %2077

2077:                                             ; preds = %2076
  br label %2078

2078:                                             ; preds = %2077
  br label %2079

2079:                                             ; preds = %2078, %2003
  %2080 = call i32 @s2n_connection_ptr_free(ptr noundef %63)
  %2081 = getelementptr inbounds %struct.s2n_result, ptr %74, i32 0, i32 0
  store i32 %2080, ptr %2081, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #11
  br label %2082

2082:                                             ; preds = %2079
  %2083 = load i64, ptr %61, align 8, !tbaa !20
  %2084 = add i64 %2083, 1
  store i64 %2084, ptr %61, align 8, !tbaa !20
  br label %1551, !llvm.loop !68

2085:                                             ; preds = %1554
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  store i32 0, ptr %19, align 4
  br label %2086

2086:                                             ; preds = %2085, %1547
  %2087 = call i32 @s2n_free(ptr noundef %58)
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #11
  br label %2088

2088:                                             ; preds = %2086, %1537
  %2089 = call i32 @s2n_free(ptr noundef %56)
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #11
  br label %2090

2090:                                             ; preds = %2088, %1527
  %2091 = call i32 @s2n_free(ptr noundef %54)
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #11
  %2092 = load i32, ptr %19, align 4
  switch i32 %2092, label %2658 [
    i32 0, label %2093
  ]

2093:                                             ; preds = %2090
  call void @llvm.lifetime.start.p0(i64 24, ptr %75) #11
  call void @llvm.memset.p0.i64(ptr align 8 %75, i8 0, i64 24, i1 false)
  br label %2094

2094:                                             ; preds = %2093
  %2095 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %75, ptr noundef @.str.35)
  %2096 = getelementptr inbounds %struct.s2n_result, ptr %76, i32 0, i32 0
  store i32 %2095, ptr %2096, align 4
  %2097 = getelementptr inbounds %struct.s2n_result, ptr %76, i32 0, i32 0
  %2098 = load i32, ptr %2097, align 4
  %2099 = call zeroext i1 @s2n_result_is_ok(i32 %2098)
  br i1 %2099, label %2101, label %2100

2100:                                             ; preds = %2094
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %2654

2101:                                             ; preds = %2094
  br label %2102

2102:                                             ; preds = %2101
  br label %2103

2103:                                             ; preds = %2102
  call void @llvm.lifetime.start.p0(i64 24, ptr %77) #11
  call void @llvm.memset.p0.i64(ptr align 8 %77, i8 0, i64 24, i1 false)
  br label %2104

2104:                                             ; preds = %2103
  %2105 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %77, ptr noundef @.str.36)
  %2106 = getelementptr inbounds %struct.s2n_result, ptr %78, i32 0, i32 0
  store i32 %2105, ptr %2106, align 4
  %2107 = getelementptr inbounds %struct.s2n_result, ptr %78, i32 0, i32 0
  %2108 = load i32, ptr %2107, align 4
  %2109 = call zeroext i1 @s2n_result_is_ok(i32 %2108)
  br i1 %2109, label %2111, label %2110

2110:                                             ; preds = %2104
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %2652

2111:                                             ; preds = %2104
  br label %2112

2112:                                             ; preds = %2111
  br label %2113

2113:                                             ; preds = %2112
  call void @llvm.lifetime.start.p0(i64 24, ptr %79) #11
  call void @llvm.memset.p0.i64(ptr align 8 %79, i8 0, i64 24, i1 false)
  br label %2114

2114:                                             ; preds = %2113
  %2115 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %79, ptr noundef @.str.37)
  %2116 = getelementptr inbounds %struct.s2n_result, ptr %80, i32 0, i32 0
  store i32 %2115, ptr %2116, align 4
  %2117 = getelementptr inbounds %struct.s2n_result, ptr %80, i32 0, i32 0
  %2118 = load i32, ptr %2117, align 4
  %2119 = call zeroext i1 @s2n_result_is_ok(i32 %2118)
  br i1 %2119, label %2121, label %2120

2120:                                             ; preds = %2114
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %2650

2121:                                             ; preds = %2114
  br label %2122

2122:                                             ; preds = %2121
  br label %2123

2123:                                             ; preds = %2122
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #11
  store i64 0, ptr %81, align 8, !tbaa !20
  br label %2124

2124:                                             ; preds = %2646, %2123
  %2125 = load i64, ptr %81, align 8, !tbaa !20
  %2126 = icmp ult i64 %2125, 2
  br i1 %2126, label %2128, label %2127

2127:                                             ; preds = %2124
  store i32 211, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #11
  br label %2649

2128:                                             ; preds = %2124
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #11
  %2129 = load i64, ptr %81, align 8, !tbaa !20
  %2130 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %2129
  %2131 = load i32, ptr %2130, align 4, !tbaa !5
  %2132 = call ptr @s2n_connection_new(i32 noundef %2131)
  store ptr %2132, ptr %82, align 8, !tbaa !9
  %2133 = load ptr, ptr %14, align 8, !tbaa !9
  %2134 = load ptr, ptr %82, align 8, !tbaa !9
  %2135 = getelementptr inbounds %struct.s2n_connection, ptr %2134, i32 0, i32 27
  %2136 = load ptr, ptr %2135, align 8, !tbaa !28
  %2137 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2136, i32 0, i32 0
  store ptr %2133, ptr %2137, align 8, !tbaa !54
  %2138 = load ptr, ptr %82, align 8, !tbaa !9
  %2139 = getelementptr inbounds %struct.s2n_connection, ptr %2138, i32 0, i32 23
  store i8 34, ptr %2139, align 4, !tbaa !59
  br label %2140

2140:                                             ; preds = %2128
  %2141 = load i32, ptr @test_count, align 4, !tbaa !5
  %2142 = add nsw i32 %2141, 1
  store i32 %2142, ptr @test_count, align 4, !tbaa !5
  %2143 = load ptr, ptr %82, align 8, !tbaa !9
  %2144 = call i32 @s2n_conn_choose_state_machine(ptr noundef %2143, i8 noundef zeroext 34)
  %2145 = getelementptr inbounds %struct.s2n_result, ptr %83, i32 0, i32 0
  store i32 %2144, ptr %2145, align 4
  %2146 = getelementptr inbounds %struct.s2n_result, ptr %83, i32 0, i32 0
  %2147 = load i32, ptr %2146, align 4
  %2148 = call zeroext i1 @s2n_result_is_ok(i32 %2147)
  br i1 %2148, label %2202, label %2149

2149:                                             ; preds = %2140
  br label %2150

2150:                                             ; preds = %2149
  br label %2151

2151:                                             ; preds = %2150
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #11
  %2152 = call ptr @__errno_location() #12
  %2153 = load i32, ptr %2152, align 4, !tbaa !5
  store i32 %2153, ptr %84, align 4, !tbaa !5
  %2154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2155 = call i32 @s2n_print_stacktrace(ptr noundef %2154)
  %2156 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2157 = trunc i8 %2156 to i1
  br i1 %2157, label %2158, label %2180

2158:                                             ; preds = %2151
  %2159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2160 = call i32 @fileno(ptr noundef %2159) #11
  %2161 = call i32 @isatty(i32 noundef %2160) #11
  %2162 = icmp ne i32 %2161, 0
  br i1 %2162, label %2163, label %2180

2163:                                             ; preds = %2158
  %2164 = load i32, ptr %84, align 4, !tbaa !5
  %2165 = call ptr @__errno_location() #12
  store i32 %2164, ptr %2165, align 4, !tbaa !5
  %2166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2167 = load i32, ptr @test_count, align 4, !tbaa !5
  %2168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2169 = load i32, ptr %2168, align 4, !tbaa !5
  %2170 = call ptr @s2n_strerror(i32 noundef %2169, ptr noundef @.str.4)
  %2171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2172 = load i32, ptr %2171, align 4, !tbaa !5
  %2173 = call ptr @s2n_strerror_debug(i32 noundef %2172, ptr noundef @.str.4)
  %2174 = call ptr @__errno_location() #12
  %2175 = load i32, ptr %2174, align 4, !tbaa !5
  %2176 = call ptr @strerror(i32 noundef %2175) #11
  %2177 = call ptr @__errno_location() #12
  %2178 = load i32, ptr %2177, align 4, !tbaa !5
  %2179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2166, ptr noundef @.str.2, i32 noundef %2167, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 287, ptr noundef %2170, ptr noundef %2173, ptr noundef %2176, i32 noundef %2178) #11
  br label %2197

2180:                                             ; preds = %2158, %2151
  %2181 = load i32, ptr %84, align 4, !tbaa !5
  %2182 = call ptr @__errno_location() #12
  store i32 %2181, ptr %2182, align 4, !tbaa !5
  %2183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2184 = load i32, ptr @test_count, align 4, !tbaa !5
  %2185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2186 = load i32, ptr %2185, align 4, !tbaa !5
  %2187 = call ptr @s2n_strerror(i32 noundef %2186, ptr noundef @.str.4)
  %2188 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2189 = load i32, ptr %2188, align 4, !tbaa !5
  %2190 = call ptr @s2n_strerror_debug(i32 noundef %2189, ptr noundef @.str.4)
  %2191 = call ptr @__errno_location() #12
  %2192 = load i32, ptr %2191, align 4, !tbaa !5
  %2193 = call ptr @strerror(i32 noundef %2192) #11
  %2194 = call ptr @__errno_location() #12
  %2195 = load i32, ptr %2194, align 4, !tbaa !5
  %2196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2183, ptr noundef @.str.5, i32 noundef %2184, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 287, ptr noundef %2187, ptr noundef %2190, ptr noundef %2193, i32 noundef %2195) #11
  br label %2197

2197:                                             ; preds = %2180, %2163
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #11
  br label %2198

2198:                                             ; preds = %2197
  br label %2199

2199:                                             ; preds = %2198
  call void @exit(i32 noundef 1) #13
  unreachable

2200:                                             ; No predecessors!
  br label %2201

2201:                                             ; preds = %2200
  br label %2202

2202:                                             ; preds = %2201, %2140
  br label %2203

2203:                                             ; preds = %2202
  br label %2204

2204:                                             ; preds = %2203
  br label %2205

2205:                                             ; preds = %2204
  %2206 = load i32, ptr @test_count, align 4, !tbaa !5
  %2207 = add nsw i32 %2206, 1
  store i32 %2207, ptr @test_count, align 4, !tbaa !5
  %2208 = load ptr, ptr %82, align 8, !tbaa !9
  %2209 = load ptr, ptr %82, align 8, !tbaa !9
  %2210 = getelementptr inbounds %struct.s2n_connection, ptr %2209, i32 0, i32 28
  %2211 = getelementptr inbounds %struct.s2n_secrets, ptr %2210, i32 0, i32 0
  %2212 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %2211, i32 0, i32 4
  %2213 = getelementptr inbounds [48 x i8], ptr %2212, i64 0, i64 0
  %2214 = call i32 @s2n_set_test_secret(ptr noundef %2208, ptr noundef %2213, ptr noundef byval(%struct.s2n_blob) align 8 %75)
  %2215 = getelementptr inbounds %struct.s2n_result, ptr %85, i32 0, i32 0
  store i32 %2214, ptr %2215, align 4
  %2216 = getelementptr inbounds %struct.s2n_result, ptr %85, i32 0, i32 0
  %2217 = load i32, ptr %2216, align 4
  %2218 = call zeroext i1 @s2n_result_is_ok(i32 %2217)
  br i1 %2218, label %2272, label %2219

2219:                                             ; preds = %2205
  br label %2220

2220:                                             ; preds = %2219
  br label %2221

2221:                                             ; preds = %2220
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #11
  %2222 = call ptr @__errno_location() #12
  %2223 = load i32, ptr %2222, align 4, !tbaa !5
  store i32 %2223, ptr %86, align 4, !tbaa !5
  %2224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2225 = call i32 @s2n_print_stacktrace(ptr noundef %2224)
  %2226 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2227 = trunc i8 %2226 to i1
  br i1 %2227, label %2228, label %2250

2228:                                             ; preds = %2221
  %2229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2230 = call i32 @fileno(ptr noundef %2229) #11
  %2231 = call i32 @isatty(i32 noundef %2230) #11
  %2232 = icmp ne i32 %2231, 0
  br i1 %2232, label %2233, label %2250

2233:                                             ; preds = %2228
  %2234 = load i32, ptr %86, align 4, !tbaa !5
  %2235 = call ptr @__errno_location() #12
  store i32 %2234, ptr %2235, align 4, !tbaa !5
  %2236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2237 = load i32, ptr @test_count, align 4, !tbaa !5
  %2238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2239 = load i32, ptr %2238, align 4, !tbaa !5
  %2240 = call ptr @s2n_strerror(i32 noundef %2239, ptr noundef @.str.4)
  %2241 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2242 = load i32, ptr %2241, align 4, !tbaa !5
  %2243 = call ptr @s2n_strerror_debug(i32 noundef %2242, ptr noundef @.str.4)
  %2244 = call ptr @__errno_location() #12
  %2245 = load i32, ptr %2244, align 4, !tbaa !5
  %2246 = call ptr @strerror(i32 noundef %2245) #11
  %2247 = call ptr @__errno_location() #12
  %2248 = load i32, ptr %2247, align 4, !tbaa !5
  %2249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2236, ptr noundef @.str.2, i32 noundef %2237, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 288, ptr noundef %2240, ptr noundef %2243, ptr noundef %2246, i32 noundef %2248) #11
  br label %2267

2250:                                             ; preds = %2228, %2221
  %2251 = load i32, ptr %86, align 4, !tbaa !5
  %2252 = call ptr @__errno_location() #12
  store i32 %2251, ptr %2252, align 4, !tbaa !5
  %2253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2254 = load i32, ptr @test_count, align 4, !tbaa !5
  %2255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2256 = load i32, ptr %2255, align 4, !tbaa !5
  %2257 = call ptr @s2n_strerror(i32 noundef %2256, ptr noundef @.str.4)
  %2258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2259 = load i32, ptr %2258, align 4, !tbaa !5
  %2260 = call ptr @s2n_strerror_debug(i32 noundef %2259, ptr noundef @.str.4)
  %2261 = call ptr @__errno_location() #12
  %2262 = load i32, ptr %2261, align 4, !tbaa !5
  %2263 = call ptr @strerror(i32 noundef %2262) #11
  %2264 = call ptr @__errno_location() #12
  %2265 = load i32, ptr %2264, align 4, !tbaa !5
  %2266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2253, ptr noundef @.str.5, i32 noundef %2254, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 288, ptr noundef %2257, ptr noundef %2260, ptr noundef %2263, i32 noundef %2265) #11
  br label %2267

2267:                                             ; preds = %2250, %2233
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  br label %2268

2268:                                             ; preds = %2267
  br label %2269

2269:                                             ; preds = %2268
  call void @exit(i32 noundef 1) #13
  unreachable

2270:                                             ; No predecessors!
  br label %2271

2271:                                             ; preds = %2270
  br label %2272

2272:                                             ; preds = %2271, %2205
  br label %2273

2273:                                             ; preds = %2272
  br label %2274

2274:                                             ; preds = %2273
  %2275 = load ptr, ptr %82, align 8, !tbaa !9
  %2276 = getelementptr inbounds %struct.s2n_connection, ptr %2275, i32 0, i32 52
  %2277 = getelementptr inbounds %struct.s2n_handshake, ptr %2276, i32 0, i32 6
  store i32 3, ptr %2277, align 4, !tbaa !60
  %2278 = getelementptr inbounds [16 x i32], ptr %16, i64 0, i64 13
  %2279 = load i32, ptr %2278, align 4, !tbaa !5
  %2280 = load ptr, ptr %82, align 8, !tbaa !9
  %2281 = getelementptr inbounds %struct.s2n_connection, ptr %2280, i32 0, i32 52
  %2282 = getelementptr inbounds %struct.s2n_handshake, ptr %2281, i32 0, i32 7
  store i32 %2279, ptr %2282, align 8, !tbaa !61
  br label %2283

2283:                                             ; preds = %2274
  %2284 = load i32, ptr @test_count, align 4, !tbaa !5
  %2285 = add nsw i32 %2284, 1
  store i32 %2285, ptr @test_count, align 4, !tbaa !5
  %2286 = load ptr, ptr %82, align 8, !tbaa !9
  %2287 = call i32 @s2n_conn_get_current_message_type(ptr noundef %2286)
  %2288 = icmp eq i32 %2287, 13
  br i1 %2288, label %2342, label %2289

2289:                                             ; preds = %2283
  br label %2290

2290:                                             ; preds = %2289
  br label %2291

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

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

2303:                                             ; preds = %2298
  %2304 = load i32, ptr %87, align 4, !tbaa !5
  %2305 = call ptr @__errno_location() #12
  store i32 %2304, ptr %2305, align 4, !tbaa !5
  %2306 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2307 = load i32, ptr @test_count, align 4, !tbaa !5
  %2308 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2309 = load i32, ptr %2308, align 4, !tbaa !5
  %2310 = call ptr @s2n_strerror(i32 noundef %2309, ptr noundef @.str.4)
  %2311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2312 = load i32, ptr %2311, align 4, !tbaa !5
  %2313 = call ptr @s2n_strerror_debug(i32 noundef %2312, ptr noundef @.str.4)
  %2314 = call ptr @__errno_location() #12
  %2315 = load i32, ptr %2314, align 4, !tbaa !5
  %2316 = call ptr @strerror(i32 noundef %2315) #11
  %2317 = call ptr @__errno_location() #12
  %2318 = load i32, ptr %2317, align 4, !tbaa !5
  %2319 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2306, ptr noundef @.str.2, i32 noundef %2307, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 292, ptr noundef %2310, ptr noundef %2313, ptr noundef %2316, i32 noundef %2318) #11
  br label %2337

2320:                                             ; preds = %2298, %2291
  %2321 = load i32, ptr %87, align 4, !tbaa !5
  %2322 = call ptr @__errno_location() #12
  store i32 %2321, ptr %2322, align 4, !tbaa !5
  %2323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2324 = load i32, ptr @test_count, align 4, !tbaa !5
  %2325 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2326 = load i32, ptr %2325, align 4, !tbaa !5
  %2327 = call ptr @s2n_strerror(i32 noundef %2326, ptr noundef @.str.4)
  %2328 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2329 = load i32, ptr %2328, align 4, !tbaa !5
  %2330 = call ptr @s2n_strerror_debug(i32 noundef %2329, ptr noundef @.str.4)
  %2331 = call ptr @__errno_location() #12
  %2332 = load i32, ptr %2331, align 4, !tbaa !5
  %2333 = call ptr @strerror(i32 noundef %2332) #11
  %2334 = call ptr @__errno_location() #12
  %2335 = load i32, ptr %2334, align 4, !tbaa !5
  %2336 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2323, ptr noundef @.str.5, i32 noundef %2324, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 292, ptr noundef %2327, ptr noundef %2330, ptr noundef %2333, i32 noundef %2335) #11
  br label %2337

2337:                                             ; preds = %2320, %2303
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #11
  br label %2338

2338:                                             ; preds = %2337
  br label %2339

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

2340:                                             ; No predecessors!
  br label %2341

2341:                                             ; preds = %2340
  br label %2342

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

2343:                                             ; preds = %2342
  br label %2344

2344:                                             ; preds = %2343
  br label %2345

2345:                                             ; preds = %2344
  %2346 = load i32, ptr @test_count, align 4, !tbaa !5
  %2347 = add nsw i32 %2346, 1
  store i32 %2347, ptr @test_count, align 4, !tbaa !5
  %2348 = load ptr, ptr %82, align 8, !tbaa !9
  %2349 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %2348)
  %2350 = getelementptr inbounds %struct.s2n_result, ptr %88, i32 0, i32 0
  store i32 %2349, ptr %2350, align 4
  %2351 = getelementptr inbounds %struct.s2n_result, ptr %88, i32 0, i32 0
  %2352 = load i32, ptr %2351, align 4
  %2353 = call zeroext i1 @s2n_result_is_ok(i32 %2352)
  br i1 %2353, label %2407, label %2354

2354:                                             ; preds = %2345
  br label %2355

2355:                                             ; preds = %2354
  br label %2356

2356:                                             ; preds = %2355
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #11
  %2357 = call ptr @__errno_location() #12
  %2358 = load i32, ptr %2357, align 4, !tbaa !5
  store i32 %2358, ptr %89, align 4, !tbaa !5
  %2359 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2360 = call i32 @s2n_print_stacktrace(ptr noundef %2359)
  %2361 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2362 = trunc i8 %2361 to i1
  br i1 %2362, label %2363, label %2385

2363:                                             ; preds = %2356
  %2364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2365 = call i32 @fileno(ptr noundef %2364) #11
  %2366 = call i32 @isatty(i32 noundef %2365) #11
  %2367 = icmp ne i32 %2366, 0
  br i1 %2367, label %2368, label %2385

2368:                                             ; preds = %2363
  %2369 = load i32, ptr %89, align 4, !tbaa !5
  %2370 = call ptr @__errno_location() #12
  store i32 %2369, ptr %2370, align 4, !tbaa !5
  %2371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2372 = load i32, ptr @test_count, align 4, !tbaa !5
  %2373 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2374 = load i32, ptr %2373, align 4, !tbaa !5
  %2375 = call ptr @s2n_strerror(i32 noundef %2374, ptr noundef @.str.4)
  %2376 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2377 = load i32, ptr %2376, align 4, !tbaa !5
  %2378 = call ptr @s2n_strerror_debug(i32 noundef %2377, ptr noundef @.str.4)
  %2379 = call ptr @__errno_location() #12
  %2380 = load i32, ptr %2379, align 4, !tbaa !5
  %2381 = call ptr @strerror(i32 noundef %2380) #11
  %2382 = call ptr @__errno_location() #12
  %2383 = load i32, ptr %2382, align 4, !tbaa !5
  %2384 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2371, ptr noundef @.str.2, i32 noundef %2372, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 293, ptr noundef %2375, ptr noundef %2378, ptr noundef %2381, i32 noundef %2383) #11
  br label %2402

2385:                                             ; preds = %2363, %2356
  %2386 = load i32, ptr %89, align 4, !tbaa !5
  %2387 = call ptr @__errno_location() #12
  store i32 %2386, ptr %2387, align 4, !tbaa !5
  %2388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2389 = load i32, ptr @test_count, align 4, !tbaa !5
  %2390 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2391 = load i32, ptr %2390, align 4, !tbaa !5
  %2392 = call ptr @s2n_strerror(i32 noundef %2391, ptr noundef @.str.4)
  %2393 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2394 = load i32, ptr %2393, align 4, !tbaa !5
  %2395 = call ptr @s2n_strerror_debug(i32 noundef %2394, ptr noundef @.str.4)
  %2396 = call ptr @__errno_location() #12
  %2397 = load i32, ptr %2396, align 4, !tbaa !5
  %2398 = call ptr @strerror(i32 noundef %2397) #11
  %2399 = call ptr @__errno_location() #12
  %2400 = load i32, ptr %2399, align 4, !tbaa !5
  %2401 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2388, ptr noundef @.str.5, i32 noundef %2389, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 293, ptr noundef %2392, ptr noundef %2395, ptr noundef %2398, i32 noundef %2400) #11
  br label %2402

2402:                                             ; preds = %2385, %2368
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #11
  br label %2403

2403:                                             ; preds = %2402
  br label %2404

2404:                                             ; preds = %2403
  call void @exit(i32 noundef 1) #13
  unreachable

2405:                                             ; No predecessors!
  br label %2406

2406:                                             ; preds = %2405
  br label %2407

2407:                                             ; preds = %2406, %2345
  br label %2408

2408:                                             ; preds = %2407
  br label %2409

2409:                                             ; preds = %2408
  br label %2410

2410:                                             ; preds = %2409
  %2411 = getelementptr inbounds %struct.s2n_blob, ptr %79, i32 0, i32 1
  %2412 = load i32, ptr %2411, align 8, !tbaa !62
  %2413 = icmp ne i32 %2412, 0
  br i1 %2413, label %2414, label %2486

2414:                                             ; preds = %2410
  br label %2415

2415:                                             ; preds = %2414
  %2416 = load i32, ptr @test_count, align 4, !tbaa !5
  %2417 = add nsw i32 %2416, 1
  store i32 %2417, ptr @test_count, align 4, !tbaa !5
  %2418 = load ptr, ptr %82, align 8, !tbaa !9
  %2419 = getelementptr inbounds %struct.s2n_connection, ptr %2418, i32 0, i32 27
  %2420 = load ptr, ptr %2419, align 8, !tbaa !28
  %2421 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2420, i32 0, i32 5
  %2422 = getelementptr inbounds [16 x i8], ptr %2421, i64 0, i64 0
  %2423 = getelementptr inbounds %struct.s2n_blob, ptr %79, i32 0, i32 0
  %2424 = load ptr, ptr %2423, align 8, !tbaa !63
  %2425 = getelementptr inbounds %struct.s2n_blob, ptr %79, i32 0, i32 1
  %2426 = load i32, ptr %2425, align 8, !tbaa !62
  %2427 = zext i32 %2426 to i64
  %2428 = call i32 @memcmp(ptr noundef %2422, ptr noundef %2424, i64 noundef %2427) #14
  %2429 = icmp eq i32 %2428, 0
  br i1 %2429, label %2483, label %2430

2430:                                             ; preds = %2415
  br label %2431

2431:                                             ; preds = %2430
  br label %2432

2432:                                             ; preds = %2431
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #11
  %2433 = call ptr @__errno_location() #12
  %2434 = load i32, ptr %2433, align 4, !tbaa !5
  store i32 %2434, ptr %90, align 4, !tbaa !5
  %2435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2436 = call i32 @s2n_print_stacktrace(ptr noundef %2435)
  %2437 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2438 = trunc i8 %2437 to i1
  br i1 %2438, label %2439, label %2461

2439:                                             ; preds = %2432
  %2440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2441 = call i32 @fileno(ptr noundef %2440) #11
  %2442 = call i32 @isatty(i32 noundef %2441) #11
  %2443 = icmp ne i32 %2442, 0
  br i1 %2443, label %2444, label %2461

2444:                                             ; preds = %2439
  %2445 = load i32, ptr %90, align 4, !tbaa !5
  %2446 = call ptr @__errno_location() #12
  store i32 %2445, ptr %2446, align 4, !tbaa !5
  %2447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2448 = load i32, ptr @test_count, align 4, !tbaa !5
  %2449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2450 = load i32, ptr %2449, align 4, !tbaa !5
  %2451 = call ptr @s2n_strerror(i32 noundef %2450, ptr noundef @.str.4)
  %2452 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2453 = load i32, ptr %2452, align 4, !tbaa !5
  %2454 = call ptr @s2n_strerror_debug(i32 noundef %2453, ptr noundef @.str.4)
  %2455 = call ptr @__errno_location() #12
  %2456 = load i32, ptr %2455, align 4, !tbaa !5
  %2457 = call ptr @strerror(i32 noundef %2456) #11
  %2458 = call ptr @__errno_location() #12
  %2459 = load i32, ptr %2458, align 4, !tbaa !5
  %2460 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2447, ptr noundef @.str.2, i32 noundef %2448, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 295, ptr noundef %2451, ptr noundef %2454, ptr noundef %2457, i32 noundef %2459) #11
  br label %2478

2461:                                             ; preds = %2439, %2432
  %2462 = load i32, ptr %90, align 4, !tbaa !5
  %2463 = call ptr @__errno_location() #12
  store i32 %2462, ptr %2463, align 4, !tbaa !5
  %2464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2465 = load i32, ptr @test_count, align 4, !tbaa !5
  %2466 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2467 = load i32, ptr %2466, align 4, !tbaa !5
  %2468 = call ptr @s2n_strerror(i32 noundef %2467, ptr noundef @.str.4)
  %2469 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2470 = load i32, ptr %2469, align 4, !tbaa !5
  %2471 = call ptr @s2n_strerror_debug(i32 noundef %2470, ptr noundef @.str.4)
  %2472 = call ptr @__errno_location() #12
  %2473 = load i32, ptr %2472, align 4, !tbaa !5
  %2474 = call ptr @strerror(i32 noundef %2473) #11
  %2475 = call ptr @__errno_location() #12
  %2476 = load i32, ptr %2475, align 4, !tbaa !5
  %2477 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2464, ptr noundef @.str.5, i32 noundef %2465, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 295, ptr noundef %2468, ptr noundef %2471, ptr noundef %2474, i32 noundef %2476) #11
  br label %2478

2478:                                             ; preds = %2461, %2444
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #11
  br label %2479

2479:                                             ; preds = %2478
  br label %2480

2480:                                             ; preds = %2479
  call void @exit(i32 noundef 1) #13
  unreachable

2481:                                             ; No predecessors!
  br label %2482

2482:                                             ; preds = %2481
  br label %2483

2483:                                             ; preds = %2482, %2415
  br label %2484

2484:                                             ; preds = %2483
  br label %2485

2485:                                             ; preds = %2484
  br label %2486

2486:                                             ; preds = %2485, %2410
  br label %2487

2487:                                             ; preds = %2486
  br label %2488

2488:                                             ; preds = %2487
  %2489 = load ptr, ptr %82, align 8, !tbaa !9
  %2490 = getelementptr inbounds %struct.s2n_connection, ptr %2489, i32 0, i32 13
  %2491 = load i32, ptr %2490, align 4, !tbaa !64
  %2492 = icmp eq i32 %2491, 1
  br i1 %2492, label %2493, label %2568

2493:                                             ; preds = %2488
  br label %2494

2494:                                             ; preds = %2493
  %2495 = getelementptr inbounds %struct.s2n_blob, ptr %77, i32 0, i32 1
  %2496 = load i32, ptr %2495, align 8, !tbaa !62
  %2497 = icmp ne i32 %2496, 0
  br i1 %2497, label %2498, label %2565

2498:                                             ; preds = %2494
  br label %2499

2499:                                             ; preds = %2498
  %2500 = load i32, ptr @test_count, align 4, !tbaa !5
  %2501 = add nsw i32 %2500, 1
  store i32 %2501, ptr @test_count, align 4, !tbaa !5
  %2502 = getelementptr inbounds %struct.s2n_blob, ptr %77, i32 0, i32 0
  %2503 = load ptr, ptr %2502, align 8, !tbaa !63
  %2504 = getelementptr inbounds %struct.s2n_blob, ptr %77, i32 0, i32 1
  %2505 = load i32, ptr %2504, align 8, !tbaa !62
  %2506 = zext i32 %2505 to i64
  %2507 = call i32 @memcmp(ptr noundef @test_send_key, ptr noundef %2503, i64 noundef %2506) #14
  %2508 = icmp eq i32 %2507, 0
  br i1 %2508, label %2562, label %2509

2509:                                             ; preds = %2499
  br label %2510

2510:                                             ; preds = %2509
  br label %2511

2511:                                             ; preds = %2510
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #11
  %2512 = call ptr @__errno_location() #12
  %2513 = load i32, ptr %2512, align 4, !tbaa !5
  store i32 %2513, ptr %91, align 4, !tbaa !5
  %2514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2515 = call i32 @s2n_print_stacktrace(ptr noundef %2514)
  %2516 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2517 = trunc i8 %2516 to i1
  br i1 %2517, label %2518, label %2540

2518:                                             ; preds = %2511
  %2519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2520 = call i32 @fileno(ptr noundef %2519) #11
  %2521 = call i32 @isatty(i32 noundef %2520) #11
  %2522 = icmp ne i32 %2521, 0
  br i1 %2522, label %2523, label %2540

2523:                                             ; preds = %2518
  %2524 = load i32, ptr %91, align 4, !tbaa !5
  %2525 = call ptr @__errno_location() #12
  store i32 %2524, ptr %2525, align 4, !tbaa !5
  %2526 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2527 = load i32, ptr @test_count, align 4, !tbaa !5
  %2528 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2529 = load i32, ptr %2528, align 4, !tbaa !5
  %2530 = call ptr @s2n_strerror(i32 noundef %2529, ptr noundef @.str.4)
  %2531 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2532 = load i32, ptr %2531, align 4, !tbaa !5
  %2533 = call ptr @s2n_strerror_debug(i32 noundef %2532, ptr noundef @.str.4)
  %2534 = call ptr @__errno_location() #12
  %2535 = load i32, ptr %2534, align 4, !tbaa !5
  %2536 = call ptr @strerror(i32 noundef %2535) #11
  %2537 = call ptr @__errno_location() #12
  %2538 = load i32, ptr %2537, align 4, !tbaa !5
  %2539 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2526, ptr noundef @.str.2, i32 noundef %2527, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 296, ptr noundef %2530, ptr noundef %2533, ptr noundef %2536, i32 noundef %2538) #11
  br label %2557

2540:                                             ; preds = %2518, %2511
  %2541 = load i32, ptr %91, align 4, !tbaa !5
  %2542 = call ptr @__errno_location() #12
  store i32 %2541, ptr %2542, align 4, !tbaa !5
  %2543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2544 = load i32, ptr @test_count, align 4, !tbaa !5
  %2545 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2546 = load i32, ptr %2545, align 4, !tbaa !5
  %2547 = call ptr @s2n_strerror(i32 noundef %2546, ptr noundef @.str.4)
  %2548 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2549 = load i32, ptr %2548, align 4, !tbaa !5
  %2550 = call ptr @s2n_strerror_debug(i32 noundef %2549, ptr noundef @.str.4)
  %2551 = call ptr @__errno_location() #12
  %2552 = load i32, ptr %2551, align 4, !tbaa !5
  %2553 = call ptr @strerror(i32 noundef %2552) #11
  %2554 = call ptr @__errno_location() #12
  %2555 = load i32, ptr %2554, align 4, !tbaa !5
  %2556 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2543, ptr noundef @.str.5, i32 noundef %2544, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 296, ptr noundef %2547, ptr noundef %2550, ptr noundef %2553, i32 noundef %2555) #11
  br label %2557

2557:                                             ; preds = %2540, %2523
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #11
  br label %2558

2558:                                             ; preds = %2557
  br label %2559

2559:                                             ; preds = %2558
  call void @exit(i32 noundef 1) #13
  unreachable

2560:                                             ; No predecessors!
  br label %2561

2561:                                             ; preds = %2560
  br label %2562

2562:                                             ; preds = %2561, %2499
  br label %2563

2563:                                             ; preds = %2562
  br label %2564

2564:                                             ; preds = %2563
  br label %2565

2565:                                             ; preds = %2564, %2494
  br label %2566

2566:                                             ; preds = %2565
  br label %2567

2567:                                             ; preds = %2566
  br label %2643

2568:                                             ; preds = %2488
  br label %2569

2569:                                             ; preds = %2568
  %2570 = getelementptr inbounds %struct.s2n_blob, ptr %77, i32 0, i32 1
  %2571 = load i32, ptr %2570, align 8, !tbaa !62
  %2572 = icmp ne i32 %2571, 0
  br i1 %2572, label %2573, label %2640

2573:                                             ; preds = %2569
  br label %2574

2574:                                             ; preds = %2573
  %2575 = load i32, ptr @test_count, align 4, !tbaa !5
  %2576 = add nsw i32 %2575, 1
  store i32 %2576, ptr @test_count, align 4, !tbaa !5
  %2577 = getelementptr inbounds %struct.s2n_blob, ptr %77, i32 0, i32 0
  %2578 = load ptr, ptr %2577, align 8, !tbaa !63
  %2579 = getelementptr inbounds %struct.s2n_blob, ptr %77, i32 0, i32 1
  %2580 = load i32, ptr %2579, align 8, !tbaa !62
  %2581 = zext i32 %2580 to i64
  %2582 = call i32 @memcmp(ptr noundef @test_recv_key, ptr noundef %2578, i64 noundef %2581) #14
  %2583 = icmp eq i32 %2582, 0
  br i1 %2583, label %2637, label %2584

2584:                                             ; preds = %2574
  br label %2585

2585:                                             ; preds = %2584
  br label %2586

2586:                                             ; preds = %2585
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #11
  %2587 = call ptr @__errno_location() #12
  %2588 = load i32, ptr %2587, align 4, !tbaa !5
  store i32 %2588, ptr %92, align 4, !tbaa !5
  %2589 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2590 = call i32 @s2n_print_stacktrace(ptr noundef %2589)
  %2591 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2592 = trunc i8 %2591 to i1
  br i1 %2592, label %2593, label %2615

2593:                                             ; preds = %2586
  %2594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2595 = call i32 @fileno(ptr noundef %2594) #11
  %2596 = call i32 @isatty(i32 noundef %2595) #11
  %2597 = icmp ne i32 %2596, 0
  br i1 %2597, label %2598, label %2615

2598:                                             ; preds = %2593
  %2599 = load i32, ptr %92, align 4, !tbaa !5
  %2600 = call ptr @__errno_location() #12
  store i32 %2599, ptr %2600, align 4, !tbaa !5
  %2601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2602 = load i32, ptr @test_count, align 4, !tbaa !5
  %2603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2604 = load i32, ptr %2603, align 4, !tbaa !5
  %2605 = call ptr @s2n_strerror(i32 noundef %2604, ptr noundef @.str.4)
  %2606 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2607 = load i32, ptr %2606, align 4, !tbaa !5
  %2608 = call ptr @s2n_strerror_debug(i32 noundef %2607, ptr noundef @.str.4)
  %2609 = call ptr @__errno_location() #12
  %2610 = load i32, ptr %2609, align 4, !tbaa !5
  %2611 = call ptr @strerror(i32 noundef %2610) #11
  %2612 = call ptr @__errno_location() #12
  %2613 = load i32, ptr %2612, align 4, !tbaa !5
  %2614 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2601, ptr noundef @.str.2, i32 noundef %2602, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 296, ptr noundef %2605, ptr noundef %2608, ptr noundef %2611, i32 noundef %2613) #11
  br label %2632

2615:                                             ; preds = %2593, %2586
  %2616 = load i32, ptr %92, align 4, !tbaa !5
  %2617 = call ptr @__errno_location() #12
  store i32 %2616, ptr %2617, align 4, !tbaa !5
  %2618 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2619 = load i32, ptr @test_count, align 4, !tbaa !5
  %2620 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2621 = load i32, ptr %2620, align 4, !tbaa !5
  %2622 = call ptr @s2n_strerror(i32 noundef %2621, ptr noundef @.str.4)
  %2623 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2624 = load i32, ptr %2623, align 4, !tbaa !5
  %2625 = call ptr @s2n_strerror_debug(i32 noundef %2624, ptr noundef @.str.4)
  %2626 = call ptr @__errno_location() #12
  %2627 = load i32, ptr %2626, align 4, !tbaa !5
  %2628 = call ptr @strerror(i32 noundef %2627) #11
  %2629 = call ptr @__errno_location() #12
  %2630 = load i32, ptr %2629, align 4, !tbaa !5
  %2631 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2618, ptr noundef @.str.5, i32 noundef %2619, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 296, ptr noundef %2622, ptr noundef %2625, ptr noundef %2628, i32 noundef %2630) #11
  br label %2632

2632:                                             ; preds = %2615, %2598
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #11
  br label %2633

2633:                                             ; preds = %2632
  br label %2634

2634:                                             ; preds = %2633
  call void @exit(i32 noundef 1) #13
  unreachable

2635:                                             ; No predecessors!
  br label %2636

2636:                                             ; preds = %2635
  br label %2637

2637:                                             ; preds = %2636, %2574
  br label %2638

2638:                                             ; preds = %2637
  br label %2639

2639:                                             ; preds = %2638
  br label %2640

2640:                                             ; preds = %2639, %2569
  br label %2641

2641:                                             ; preds = %2640
  br label %2642

2642:                                             ; preds = %2641
  br label %2643

2643:                                             ; preds = %2642, %2567
  %2644 = call i32 @s2n_connection_ptr_free(ptr noundef %82)
  %2645 = getelementptr inbounds %struct.s2n_result, ptr %93, i32 0, i32 0
  store i32 %2644, ptr %2645, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #11
  br label %2646

2646:                                             ; preds = %2643
  %2647 = load i64, ptr %81, align 8, !tbaa !20
  %2648 = add i64 %2647, 1
  store i64 %2648, ptr %81, align 8, !tbaa !20
  br label %2124, !llvm.loop !69

2649:                                             ; preds = %2127
  store i32 0, ptr %19, align 4
  br label %2650

2650:                                             ; preds = %2649, %2120
  %2651 = call i32 @s2n_free(ptr noundef %79)
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #11
  br label %2652

2652:                                             ; preds = %2650, %2110
  %2653 = call i32 @s2n_free(ptr noundef %77)
  call void @llvm.lifetime.end.p0(i64 24, ptr %77) #11
  br label %2654

2654:                                             ; preds = %2652, %2100
  %2655 = call i32 @s2n_free(ptr noundef %75)
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #11
  %2656 = load i32, ptr %19, align 4
  switch i32 %2656, label %2658 [
    i32 0, label %2657
  ]

2657:                                             ; preds = %2654
  store i32 0, ptr %19, align 4
  br label %2658

2658:                                             ; preds = %2657, %2654, %2090, %1517, %953
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  %2659 = load i32, ptr %19, align 4
  switch i32 %2659, label %3394 [
    i32 0, label %2660
  ]

2660:                                             ; preds = %2658
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #11
  store i32 65, ptr %94, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %95) #11
  call void @llvm.memset.p0.i64(ptr align 16 %95, i8 0, i64 64, i1 false)
  %2661 = getelementptr inbounds [16 x i32], ptr %95, i32 0, i32 15
  store i32 3, ptr %2661, align 4
  call void @llvm.lifetime.start.p0(i64 24, ptr %96) #11
  call void @llvm.memset.p0.i64(ptr align 8 %96, i8 0, i64 24, i1 false)
  br label %2662

2662:                                             ; preds = %2660
  %2663 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %96, ptr noundef @.str.40)
  %2664 = getelementptr inbounds %struct.s2n_result, ptr %97, i32 0, i32 0
  store i32 %2663, ptr %2664, align 4
  %2665 = getelementptr inbounds %struct.s2n_result, ptr %97, i32 0, i32 0
  %2666 = load i32, ptr %2665, align 4
  %2667 = call zeroext i1 @s2n_result_is_ok(i32 %2666)
  br i1 %2667, label %2669, label %2668

2668:                                             ; preds = %2662
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %3233

2669:                                             ; preds = %2662
  br label %2670

2670:                                             ; preds = %2669
  br label %2671

2671:                                             ; preds = %2670
  call void @llvm.lifetime.start.p0(i64 24, ptr %98) #11
  call void @llvm.memset.p0.i64(ptr align 8 %98, i8 0, i64 24, i1 false)
  br label %2672

2672:                                             ; preds = %2671
  %2673 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %98, ptr noundef @.str.41)
  %2674 = getelementptr inbounds %struct.s2n_result, ptr %99, i32 0, i32 0
  store i32 %2673, ptr %2674, align 4
  %2675 = getelementptr inbounds %struct.s2n_result, ptr %99, i32 0, i32 0
  %2676 = load i32, ptr %2675, align 4
  %2677 = call zeroext i1 @s2n_result_is_ok(i32 %2676)
  br i1 %2677, label %2679, label %2678

2678:                                             ; preds = %2672
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %3231

2679:                                             ; preds = %2672
  br label %2680

2680:                                             ; preds = %2679
  br label %2681

2681:                                             ; preds = %2680
  call void @llvm.lifetime.start.p0(i64 24, ptr %100) #11
  call void @llvm.memset.p0.i64(ptr align 8 %100, i8 0, i64 24, i1 false)
  br label %2682

2682:                                             ; preds = %2681
  %2683 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %100, ptr noundef @.str.42)
  %2684 = getelementptr inbounds %struct.s2n_result, ptr %101, i32 0, i32 0
  store i32 %2683, ptr %2684, align 4
  %2685 = getelementptr inbounds %struct.s2n_result, ptr %101, i32 0, i32 0
  %2686 = load i32, ptr %2685, align 4
  %2687 = call zeroext i1 @s2n_result_is_ok(i32 %2686)
  br i1 %2687, label %2689, label %2688

2688:                                             ; preds = %2682
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %3229

2689:                                             ; preds = %2682
  br label %2690

2690:                                             ; preds = %2689
  br label %2691

2691:                                             ; preds = %2690
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %102, ptr align 4 @__const.main.trigger_messages.43, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #11
  store i64 0, ptr %103, align 8, !tbaa !20
  br label %2692

2692:                                             ; preds = %3225, %2691
  %2693 = load i64, ptr %103, align 8, !tbaa !20
  %2694 = icmp ult i64 %2693, 2
  br i1 %2694, label %2696, label %2695

2695:                                             ; preds = %2692
  store i32 268, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #11
  br label %3228

2696:                                             ; preds = %2692
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #11
  %2697 = load i64, ptr %103, align 8, !tbaa !20
  %2698 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %2697
  %2699 = load i32, ptr %2698, align 4, !tbaa !5
  %2700 = zext i32 %2699 to i64
  %2701 = getelementptr inbounds [2 x i32], ptr %102, i64 0, i64 %2700
  %2702 = load i32, ptr %2701, align 4, !tbaa !5
  store i32 %2702, ptr %104, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #11
  %2703 = load i64, ptr %103, align 8, !tbaa !20
  %2704 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %2703
  %2705 = load i32, ptr %2704, align 4, !tbaa !5
  %2706 = call ptr @s2n_connection_new(i32 noundef %2705)
  store ptr %2706, ptr %105, align 8, !tbaa !9
  %2707 = load ptr, ptr %14, align 8, !tbaa !9
  %2708 = load ptr, ptr %105, align 8, !tbaa !9
  %2709 = getelementptr inbounds %struct.s2n_connection, ptr %2708, i32 0, i32 27
  %2710 = load ptr, ptr %2709, align 8, !tbaa !28
  %2711 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2710, i32 0, i32 0
  store ptr %2707, ptr %2711, align 8, !tbaa !54
  %2712 = load ptr, ptr %105, align 8, !tbaa !9
  %2713 = getelementptr inbounds %struct.s2n_connection, ptr %2712, i32 0, i32 23
  store i8 34, ptr %2713, align 4, !tbaa !59
  br label %2714

2714:                                             ; preds = %2696
  %2715 = load i32, ptr @test_count, align 4, !tbaa !5
  %2716 = add nsw i32 %2715, 1
  store i32 %2716, ptr @test_count, align 4, !tbaa !5
  %2717 = load ptr, ptr %105, align 8, !tbaa !9
  %2718 = call i32 @s2n_conn_choose_state_machine(ptr noundef %2717, i8 noundef zeroext 34)
  %2719 = getelementptr inbounds %struct.s2n_result, ptr %106, i32 0, i32 0
  store i32 %2718, ptr %2719, align 4
  %2720 = getelementptr inbounds %struct.s2n_result, ptr %106, i32 0, i32 0
  %2721 = load i32, ptr %2720, align 4
  %2722 = call zeroext i1 @s2n_result_is_ok(i32 %2721)
  br i1 %2722, label %2776, label %2723

2723:                                             ; preds = %2714
  br label %2724

2724:                                             ; preds = %2723
  br label %2725

2725:                                             ; preds = %2724
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #11
  %2726 = call ptr @__errno_location() #12
  %2727 = load i32, ptr %2726, align 4, !tbaa !5
  store i32 %2727, ptr %107, align 4, !tbaa !5
  %2728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2729 = call i32 @s2n_print_stacktrace(ptr noundef %2728)
  %2730 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2731 = trunc i8 %2730 to i1
  br i1 %2731, label %2732, label %2754

2732:                                             ; preds = %2725
  %2733 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2734 = call i32 @fileno(ptr noundef %2733) #11
  %2735 = call i32 @isatty(i32 noundef %2734) #11
  %2736 = icmp ne i32 %2735, 0
  br i1 %2736, label %2737, label %2754

2737:                                             ; preds = %2732
  %2738 = load i32, ptr %107, align 4, !tbaa !5
  %2739 = call ptr @__errno_location() #12
  store i32 %2738, ptr %2739, align 4, !tbaa !5
  %2740 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2741 = load i32, ptr @test_count, align 4, !tbaa !5
  %2742 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2743 = load i32, ptr %2742, align 4, !tbaa !5
  %2744 = call ptr @s2n_strerror(i32 noundef %2743, ptr noundef @.str.4)
  %2745 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2746 = load i32, ptr %2745, align 4, !tbaa !5
  %2747 = call ptr @s2n_strerror_debug(i32 noundef %2746, ptr noundef @.str.4)
  %2748 = call ptr @__errno_location() #12
  %2749 = load i32, ptr %2748, align 4, !tbaa !5
  %2750 = call ptr @strerror(i32 noundef %2749) #11
  %2751 = call ptr @__errno_location() #12
  %2752 = load i32, ptr %2751, align 4, !tbaa !5
  %2753 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2740, ptr noundef @.str.2, i32 noundef %2741, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 349, ptr noundef %2744, ptr noundef %2747, ptr noundef %2750, i32 noundef %2752) #11
  br label %2771

2754:                                             ; preds = %2732, %2725
  %2755 = load i32, ptr %107, align 4, !tbaa !5
  %2756 = call ptr @__errno_location() #12
  store i32 %2755, ptr %2756, align 4, !tbaa !5
  %2757 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2758 = load i32, ptr @test_count, align 4, !tbaa !5
  %2759 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2760 = load i32, ptr %2759, align 4, !tbaa !5
  %2761 = call ptr @s2n_strerror(i32 noundef %2760, ptr noundef @.str.4)
  %2762 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2763 = load i32, ptr %2762, align 4, !tbaa !5
  %2764 = call ptr @s2n_strerror_debug(i32 noundef %2763, ptr noundef @.str.4)
  %2765 = call ptr @__errno_location() #12
  %2766 = load i32, ptr %2765, align 4, !tbaa !5
  %2767 = call ptr @strerror(i32 noundef %2766) #11
  %2768 = call ptr @__errno_location() #12
  %2769 = load i32, ptr %2768, align 4, !tbaa !5
  %2770 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2757, ptr noundef @.str.5, i32 noundef %2758, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 349, ptr noundef %2761, ptr noundef %2764, ptr noundef %2767, i32 noundef %2769) #11
  br label %2771

2771:                                             ; preds = %2754, %2737
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #11
  br label %2772

2772:                                             ; preds = %2771
  br label %2773

2773:                                             ; preds = %2772
  call void @exit(i32 noundef 1) #13
  unreachable

2774:                                             ; No predecessors!
  br label %2775

2775:                                             ; preds = %2774
  br label %2776

2776:                                             ; preds = %2775, %2714
  br label %2777

2777:                                             ; preds = %2776
  br label %2778

2778:                                             ; preds = %2777
  %2779 = load ptr, ptr %105, align 8, !tbaa !9
  %2780 = getelementptr inbounds %struct.s2n_connection, ptr %2779, i32 0, i32 89
  store i32 1, ptr %2780, align 8, !tbaa !70
  br label %2781

2781:                                             ; preds = %2778
  %2782 = load i32, ptr @test_count, align 4, !tbaa !5
  %2783 = add nsw i32 %2782, 1
  store i32 %2783, ptr @test_count, align 4, !tbaa !5
  %2784 = load ptr, ptr %105, align 8, !tbaa !9
  %2785 = load ptr, ptr %105, align 8, !tbaa !9
  %2786 = getelementptr inbounds %struct.s2n_connection, ptr %2785, i32 0, i32 28
  %2787 = getelementptr inbounds %struct.s2n_secrets, ptr %2786, i32 0, i32 0
  %2788 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %2787, i32 0, i32 1
  %2789 = getelementptr inbounds [48 x i8], ptr %2788, i64 0, i64 0
  %2790 = call i32 @s2n_set_test_secret(ptr noundef %2784, ptr noundef %2789, ptr noundef byval(%struct.s2n_blob) align 8 %96)
  %2791 = getelementptr inbounds %struct.s2n_result, ptr %108, i32 0, i32 0
  store i32 %2790, ptr %2791, align 4
  %2792 = getelementptr inbounds %struct.s2n_result, ptr %108, i32 0, i32 0
  %2793 = load i32, ptr %2792, align 4
  %2794 = call zeroext i1 @s2n_result_is_ok(i32 %2793)
  br i1 %2794, label %2848, label %2795

2795:                                             ; preds = %2781
  br label %2796

2796:                                             ; preds = %2795
  br label %2797

2797:                                             ; preds = %2796
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #11
  %2798 = call ptr @__errno_location() #12
  %2799 = load i32, ptr %2798, align 4, !tbaa !5
  store i32 %2799, ptr %109, align 4, !tbaa !5
  %2800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2801 = call i32 @s2n_print_stacktrace(ptr noundef %2800)
  %2802 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2803 = trunc i8 %2802 to i1
  br i1 %2803, label %2804, label %2826

2804:                                             ; preds = %2797
  %2805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2806 = call i32 @fileno(ptr noundef %2805) #11
  %2807 = call i32 @isatty(i32 noundef %2806) #11
  %2808 = icmp ne i32 %2807, 0
  br i1 %2808, label %2809, label %2826

2809:                                             ; preds = %2804
  %2810 = load i32, ptr %109, align 4, !tbaa !5
  %2811 = call ptr @__errno_location() #12
  store i32 %2810, ptr %2811, align 4, !tbaa !5
  %2812 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2813 = load i32, ptr @test_count, align 4, !tbaa !5
  %2814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2815 = load i32, ptr %2814, align 4, !tbaa !5
  %2816 = call ptr @s2n_strerror(i32 noundef %2815, ptr noundef @.str.4)
  %2817 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2818 = load i32, ptr %2817, align 4, !tbaa !5
  %2819 = call ptr @s2n_strerror_debug(i32 noundef %2818, ptr noundef @.str.4)
  %2820 = call ptr @__errno_location() #12
  %2821 = load i32, ptr %2820, align 4, !tbaa !5
  %2822 = call ptr @strerror(i32 noundef %2821) #11
  %2823 = call ptr @__errno_location() #12
  %2824 = load i32, ptr %2823, align 4, !tbaa !5
  %2825 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2812, ptr noundef @.str.2, i32 noundef %2813, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 351, ptr noundef %2816, ptr noundef %2819, ptr noundef %2822, i32 noundef %2824) #11
  br label %2843

2826:                                             ; preds = %2804, %2797
  %2827 = load i32, ptr %109, align 4, !tbaa !5
  %2828 = call ptr @__errno_location() #12
  store i32 %2827, ptr %2828, align 4, !tbaa !5
  %2829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2830 = load i32, ptr @test_count, align 4, !tbaa !5
  %2831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2832 = load i32, ptr %2831, align 4, !tbaa !5
  %2833 = call ptr @s2n_strerror(i32 noundef %2832, ptr noundef @.str.4)
  %2834 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2835 = load i32, ptr %2834, align 4, !tbaa !5
  %2836 = call ptr @s2n_strerror_debug(i32 noundef %2835, ptr noundef @.str.4)
  %2837 = call ptr @__errno_location() #12
  %2838 = load i32, ptr %2837, align 4, !tbaa !5
  %2839 = call ptr @strerror(i32 noundef %2838) #11
  %2840 = call ptr @__errno_location() #12
  %2841 = load i32, ptr %2840, align 4, !tbaa !5
  %2842 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2829, ptr noundef @.str.5, i32 noundef %2830, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 351, ptr noundef %2833, ptr noundef %2836, ptr noundef %2839, i32 noundef %2841) #11
  br label %2843

2843:                                             ; preds = %2826, %2809
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #11
  br label %2844

2844:                                             ; preds = %2843
  br label %2845

2845:                                             ; preds = %2844
  call void @exit(i32 noundef 1) #13
  unreachable

2846:                                             ; No predecessors!
  br label %2847

2847:                                             ; preds = %2846
  br label %2848

2848:                                             ; preds = %2847, %2781
  br label %2849

2849:                                             ; preds = %2848
  br label %2850

2850:                                             ; preds = %2849
  %2851 = load ptr, ptr %105, align 8, !tbaa !9
  %2852 = getelementptr inbounds %struct.s2n_connection, ptr %2851, i32 0, i32 52
  %2853 = getelementptr inbounds %struct.s2n_handshake, ptr %2852, i32 0, i32 6
  store i32 65, ptr %2853, align 4, !tbaa !60
  %2854 = load i32, ptr %104, align 4, !tbaa !5
  %2855 = zext i32 %2854 to i64
  %2856 = getelementptr inbounds [16 x i32], ptr %95, i64 0, i64 %2855
  %2857 = load i32, ptr %2856, align 4, !tbaa !5
  %2858 = load ptr, ptr %105, align 8, !tbaa !9
  %2859 = getelementptr inbounds %struct.s2n_connection, ptr %2858, i32 0, i32 52
  %2860 = getelementptr inbounds %struct.s2n_handshake, ptr %2859, i32 0, i32 7
  store i32 %2857, ptr %2860, align 8, !tbaa !61
  br label %2861

2861:                                             ; preds = %2850
  %2862 = load i32, ptr @test_count, align 4, !tbaa !5
  %2863 = add nsw i32 %2862, 1
  store i32 %2863, ptr @test_count, align 4, !tbaa !5
  %2864 = load ptr, ptr %105, align 8, !tbaa !9
  %2865 = call i32 @s2n_conn_get_current_message_type(ptr noundef %2864)
  %2866 = load i32, ptr %104, align 4, !tbaa !5
  %2867 = icmp eq i32 %2865, %2866
  br i1 %2867, label %2921, label %2868

2868:                                             ; preds = %2861
  br label %2869

2869:                                             ; preds = %2868
  br label %2870

2870:                                             ; preds = %2869
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #11
  %2871 = call ptr @__errno_location() #12
  %2872 = load i32, ptr %2871, align 4, !tbaa !5
  store i32 %2872, ptr %110, align 4, !tbaa !5
  %2873 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2874 = call i32 @s2n_print_stacktrace(ptr noundef %2873)
  %2875 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2876 = trunc i8 %2875 to i1
  br i1 %2876, label %2877, label %2899

2877:                                             ; preds = %2870
  %2878 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2879 = call i32 @fileno(ptr noundef %2878) #11
  %2880 = call i32 @isatty(i32 noundef %2879) #11
  %2881 = icmp ne i32 %2880, 0
  br i1 %2881, label %2882, label %2899

2882:                                             ; preds = %2877
  %2883 = load i32, ptr %110, align 4, !tbaa !5
  %2884 = call ptr @__errno_location() #12
  store i32 %2883, ptr %2884, align 4, !tbaa !5
  %2885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2886 = load i32, ptr @test_count, align 4, !tbaa !5
  %2887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2888 = load i32, ptr %2887, align 4, !tbaa !5
  %2889 = call ptr @s2n_strerror(i32 noundef %2888, ptr noundef @.str.4)
  %2890 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2891 = load i32, ptr %2890, align 4, !tbaa !5
  %2892 = call ptr @s2n_strerror_debug(i32 noundef %2891, ptr noundef @.str.4)
  %2893 = call ptr @__errno_location() #12
  %2894 = load i32, ptr %2893, align 4, !tbaa !5
  %2895 = call ptr @strerror(i32 noundef %2894) #11
  %2896 = call ptr @__errno_location() #12
  %2897 = load i32, ptr %2896, align 4, !tbaa !5
  %2898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2885, ptr noundef @.str.2, i32 noundef %2886, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 355, ptr noundef %2889, ptr noundef %2892, ptr noundef %2895, i32 noundef %2897) #11
  br label %2916

2899:                                             ; preds = %2877, %2870
  %2900 = load i32, ptr %110, align 4, !tbaa !5
  %2901 = call ptr @__errno_location() #12
  store i32 %2900, ptr %2901, align 4, !tbaa !5
  %2902 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2903 = load i32, ptr @test_count, align 4, !tbaa !5
  %2904 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2905 = load i32, ptr %2904, align 4, !tbaa !5
  %2906 = call ptr @s2n_strerror(i32 noundef %2905, ptr noundef @.str.4)
  %2907 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2908 = load i32, ptr %2907, align 4, !tbaa !5
  %2909 = call ptr @s2n_strerror_debug(i32 noundef %2908, ptr noundef @.str.4)
  %2910 = call ptr @__errno_location() #12
  %2911 = load i32, ptr %2910, align 4, !tbaa !5
  %2912 = call ptr @strerror(i32 noundef %2911) #11
  %2913 = call ptr @__errno_location() #12
  %2914 = load i32, ptr %2913, align 4, !tbaa !5
  %2915 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2902, ptr noundef @.str.5, i32 noundef %2903, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 355, ptr noundef %2906, ptr noundef %2909, ptr noundef %2912, i32 noundef %2914) #11
  br label %2916

2916:                                             ; preds = %2899, %2882
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #11
  br label %2917

2917:                                             ; preds = %2916
  br label %2918

2918:                                             ; preds = %2917
  call void @exit(i32 noundef 1) #13
  unreachable

2919:                                             ; No predecessors!
  br label %2920

2920:                                             ; preds = %2919
  br label %2921

2921:                                             ; preds = %2920, %2861
  br label %2922

2922:                                             ; preds = %2921
  br label %2923

2923:                                             ; preds = %2922
  br label %2924

2924:                                             ; preds = %2923
  %2925 = load i32, ptr @test_count, align 4, !tbaa !5
  %2926 = add nsw i32 %2925, 1
  store i32 %2926, ptr @test_count, align 4, !tbaa !5
  %2927 = load ptr, ptr %105, align 8, !tbaa !9
  %2928 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %2927)
  %2929 = getelementptr inbounds %struct.s2n_result, ptr %111, i32 0, i32 0
  store i32 %2928, ptr %2929, align 4
  %2930 = getelementptr inbounds %struct.s2n_result, ptr %111, i32 0, i32 0
  %2931 = load i32, ptr %2930, align 4
  %2932 = call zeroext i1 @s2n_result_is_ok(i32 %2931)
  br i1 %2932, label %2986, label %2933

2933:                                             ; preds = %2924
  br label %2934

2934:                                             ; preds = %2933
  br label %2935

2935:                                             ; preds = %2934
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #11
  %2936 = call ptr @__errno_location() #12
  %2937 = load i32, ptr %2936, align 4, !tbaa !5
  store i32 %2937, ptr %112, align 4, !tbaa !5
  %2938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2939 = call i32 @s2n_print_stacktrace(ptr noundef %2938)
  %2940 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2941 = trunc i8 %2940 to i1
  br i1 %2941, label %2942, label %2964

2942:                                             ; preds = %2935
  %2943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2944 = call i32 @fileno(ptr noundef %2943) #11
  %2945 = call i32 @isatty(i32 noundef %2944) #11
  %2946 = icmp ne i32 %2945, 0
  br i1 %2946, label %2947, label %2964

2947:                                             ; preds = %2942
  %2948 = load i32, ptr %112, align 4, !tbaa !5
  %2949 = call ptr @__errno_location() #12
  store i32 %2948, ptr %2949, align 4, !tbaa !5
  %2950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2951 = load i32, ptr @test_count, align 4, !tbaa !5
  %2952 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2953 = load i32, ptr %2952, align 4, !tbaa !5
  %2954 = call ptr @s2n_strerror(i32 noundef %2953, ptr noundef @.str.4)
  %2955 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2956 = load i32, ptr %2955, align 4, !tbaa !5
  %2957 = call ptr @s2n_strerror_debug(i32 noundef %2956, ptr noundef @.str.4)
  %2958 = call ptr @__errno_location() #12
  %2959 = load i32, ptr %2958, align 4, !tbaa !5
  %2960 = call ptr @strerror(i32 noundef %2959) #11
  %2961 = call ptr @__errno_location() #12
  %2962 = load i32, ptr %2961, align 4, !tbaa !5
  %2963 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2950, ptr noundef @.str.2, i32 noundef %2951, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 356, ptr noundef %2954, ptr noundef %2957, ptr noundef %2960, i32 noundef %2962) #11
  br label %2981

2964:                                             ; preds = %2942, %2935
  %2965 = load i32, ptr %112, align 4, !tbaa !5
  %2966 = call ptr @__errno_location() #12
  store i32 %2965, ptr %2966, align 4, !tbaa !5
  %2967 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2968 = load i32, ptr @test_count, align 4, !tbaa !5
  %2969 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2970 = load i32, ptr %2969, align 4, !tbaa !5
  %2971 = call ptr @s2n_strerror(i32 noundef %2970, ptr noundef @.str.4)
  %2972 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2973 = load i32, ptr %2972, align 4, !tbaa !5
  %2974 = call ptr @s2n_strerror_debug(i32 noundef %2973, ptr noundef @.str.4)
  %2975 = call ptr @__errno_location() #12
  %2976 = load i32, ptr %2975, align 4, !tbaa !5
  %2977 = call ptr @strerror(i32 noundef %2976) #11
  %2978 = call ptr @__errno_location() #12
  %2979 = load i32, ptr %2978, align 4, !tbaa !5
  %2980 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2967, ptr noundef @.str.5, i32 noundef %2968, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 356, ptr noundef %2971, ptr noundef %2974, ptr noundef %2977, i32 noundef %2979) #11
  br label %2981

2981:                                             ; preds = %2964, %2947
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #11
  br label %2982

2982:                                             ; preds = %2981
  br label %2983

2983:                                             ; preds = %2982
  call void @exit(i32 noundef 1) #13
  unreachable

2984:                                             ; No predecessors!
  br label %2985

2985:                                             ; preds = %2984
  br label %2986

2986:                                             ; preds = %2985, %2924
  br label %2987

2987:                                             ; preds = %2986
  br label %2988

2988:                                             ; preds = %2987
  br label %2989

2989:                                             ; preds = %2988
  %2990 = getelementptr inbounds %struct.s2n_blob, ptr %100, i32 0, i32 1
  %2991 = load i32, ptr %2990, align 8, !tbaa !62
  %2992 = icmp ne i32 %2991, 0
  br i1 %2992, label %2993, label %3065

2993:                                             ; preds = %2989
  br label %2994

2994:                                             ; preds = %2993
  %2995 = load i32, ptr @test_count, align 4, !tbaa !5
  %2996 = add nsw i32 %2995, 1
  store i32 %2996, ptr @test_count, align 4, !tbaa !5
  %2997 = load ptr, ptr %105, align 8, !tbaa !9
  %2998 = getelementptr inbounds %struct.s2n_connection, ptr %2997, i32 0, i32 27
  %2999 = load ptr, ptr %2998, align 8, !tbaa !28
  %3000 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2999, i32 0, i32 5
  %3001 = getelementptr inbounds [16 x i8], ptr %3000, i64 0, i64 0
  %3002 = getelementptr inbounds %struct.s2n_blob, ptr %100, i32 0, i32 0
  %3003 = load ptr, ptr %3002, align 8, !tbaa !63
  %3004 = getelementptr inbounds %struct.s2n_blob, ptr %100, i32 0, i32 1
  %3005 = load i32, ptr %3004, align 8, !tbaa !62
  %3006 = zext i32 %3005 to i64
  %3007 = call i32 @memcmp(ptr noundef %3001, ptr noundef %3003, i64 noundef %3006) #14
  %3008 = icmp eq i32 %3007, 0
  br i1 %3008, label %3062, label %3009

3009:                                             ; preds = %2994
  br label %3010

3010:                                             ; preds = %3009
  br label %3011

3011:                                             ; preds = %3010
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #11
  %3012 = call ptr @__errno_location() #12
  %3013 = load i32, ptr %3012, align 4, !tbaa !5
  store i32 %3013, ptr %113, align 4, !tbaa !5
  %3014 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3015 = call i32 @s2n_print_stacktrace(ptr noundef %3014)
  %3016 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3017 = trunc i8 %3016 to i1
  br i1 %3017, label %3018, label %3040

3018:                                             ; preds = %3011
  %3019 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3020 = call i32 @fileno(ptr noundef %3019) #11
  %3021 = call i32 @isatty(i32 noundef %3020) #11
  %3022 = icmp ne i32 %3021, 0
  br i1 %3022, label %3023, label %3040

3023:                                             ; preds = %3018
  %3024 = load i32, ptr %113, align 4, !tbaa !5
  %3025 = call ptr @__errno_location() #12
  store i32 %3024, ptr %3025, align 4, !tbaa !5
  %3026 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3027 = load i32, ptr @test_count, align 4, !tbaa !5
  %3028 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3029 = load i32, ptr %3028, align 4, !tbaa !5
  %3030 = call ptr @s2n_strerror(i32 noundef %3029, ptr noundef @.str.4)
  %3031 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3032 = load i32, ptr %3031, align 4, !tbaa !5
  %3033 = call ptr @s2n_strerror_debug(i32 noundef %3032, ptr noundef @.str.4)
  %3034 = call ptr @__errno_location() #12
  %3035 = load i32, ptr %3034, align 4, !tbaa !5
  %3036 = call ptr @strerror(i32 noundef %3035) #11
  %3037 = call ptr @__errno_location() #12
  %3038 = load i32, ptr %3037, align 4, !tbaa !5
  %3039 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3026, ptr noundef @.str.2, i32 noundef %3027, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 358, ptr noundef %3030, ptr noundef %3033, ptr noundef %3036, i32 noundef %3038) #11
  br label %3057

3040:                                             ; preds = %3018, %3011
  %3041 = load i32, ptr %113, align 4, !tbaa !5
  %3042 = call ptr @__errno_location() #12
  store i32 %3041, ptr %3042, align 4, !tbaa !5
  %3043 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3044 = load i32, ptr @test_count, align 4, !tbaa !5
  %3045 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3046 = load i32, ptr %3045, align 4, !tbaa !5
  %3047 = call ptr @s2n_strerror(i32 noundef %3046, ptr noundef @.str.4)
  %3048 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3049 = load i32, ptr %3048, align 4, !tbaa !5
  %3050 = call ptr @s2n_strerror_debug(i32 noundef %3049, ptr noundef @.str.4)
  %3051 = call ptr @__errno_location() #12
  %3052 = load i32, ptr %3051, align 4, !tbaa !5
  %3053 = call ptr @strerror(i32 noundef %3052) #11
  %3054 = call ptr @__errno_location() #12
  %3055 = load i32, ptr %3054, align 4, !tbaa !5
  %3056 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3043, ptr noundef @.str.5, i32 noundef %3044, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 358, ptr noundef %3047, ptr noundef %3050, ptr noundef %3053, i32 noundef %3055) #11
  br label %3057

3057:                                             ; preds = %3040, %3023
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #11
  br label %3058

3058:                                             ; preds = %3057
  br label %3059

3059:                                             ; preds = %3058
  call void @exit(i32 noundef 1) #13
  unreachable

3060:                                             ; No predecessors!
  br label %3061

3061:                                             ; preds = %3060
  br label %3062

3062:                                             ; preds = %3061, %2994
  br label %3063

3063:                                             ; preds = %3062
  br label %3064

3064:                                             ; preds = %3063
  br label %3065

3065:                                             ; preds = %3064, %2989
  br label %3066

3066:                                             ; preds = %3065
  br label %3067

3067:                                             ; preds = %3066
  %3068 = load ptr, ptr %105, align 8, !tbaa !9
  %3069 = getelementptr inbounds %struct.s2n_connection, ptr %3068, i32 0, i32 13
  %3070 = load i32, ptr %3069, align 4, !tbaa !64
  %3071 = icmp eq i32 %3070, 1
  br i1 %3071, label %3072, label %3147

3072:                                             ; preds = %3067
  br label %3073

3073:                                             ; preds = %3072
  %3074 = getelementptr inbounds %struct.s2n_blob, ptr %98, i32 0, i32 1
  %3075 = load i32, ptr %3074, align 8, !tbaa !62
  %3076 = icmp ne i32 %3075, 0
  br i1 %3076, label %3077, label %3144

3077:                                             ; preds = %3073
  br label %3078

3078:                                             ; preds = %3077
  %3079 = load i32, ptr @test_count, align 4, !tbaa !5
  %3080 = add nsw i32 %3079, 1
  store i32 %3080, ptr @test_count, align 4, !tbaa !5
  %3081 = getelementptr inbounds %struct.s2n_blob, ptr %98, i32 0, i32 0
  %3082 = load ptr, ptr %3081, align 8, !tbaa !63
  %3083 = getelementptr inbounds %struct.s2n_blob, ptr %98, i32 0, i32 1
  %3084 = load i32, ptr %3083, align 8, !tbaa !62
  %3085 = zext i32 %3084 to i64
  %3086 = call i32 @memcmp(ptr noundef @test_send_key, ptr noundef %3082, i64 noundef %3085) #14
  %3087 = icmp eq i32 %3086, 0
  br i1 %3087, label %3141, label %3088

3088:                                             ; preds = %3078
  br label %3089

3089:                                             ; preds = %3088
  br label %3090

3090:                                             ; preds = %3089
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #11
  %3091 = call ptr @__errno_location() #12
  %3092 = load i32, ptr %3091, align 4, !tbaa !5
  store i32 %3092, ptr %114, align 4, !tbaa !5
  %3093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3094 = call i32 @s2n_print_stacktrace(ptr noundef %3093)
  %3095 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3096 = trunc i8 %3095 to i1
  br i1 %3096, label %3097, label %3119

3097:                                             ; preds = %3090
  %3098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3099 = call i32 @fileno(ptr noundef %3098) #11
  %3100 = call i32 @isatty(i32 noundef %3099) #11
  %3101 = icmp ne i32 %3100, 0
  br i1 %3101, label %3102, label %3119

3102:                                             ; preds = %3097
  %3103 = load i32, ptr %114, align 4, !tbaa !5
  %3104 = call ptr @__errno_location() #12
  store i32 %3103, ptr %3104, align 4, !tbaa !5
  %3105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3106 = load i32, ptr @test_count, align 4, !tbaa !5
  %3107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3108 = load i32, ptr %3107, align 4, !tbaa !5
  %3109 = call ptr @s2n_strerror(i32 noundef %3108, ptr noundef @.str.4)
  %3110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3111 = load i32, ptr %3110, align 4, !tbaa !5
  %3112 = call ptr @s2n_strerror_debug(i32 noundef %3111, ptr noundef @.str.4)
  %3113 = call ptr @__errno_location() #12
  %3114 = load i32, ptr %3113, align 4, !tbaa !5
  %3115 = call ptr @strerror(i32 noundef %3114) #11
  %3116 = call ptr @__errno_location() #12
  %3117 = load i32, ptr %3116, align 4, !tbaa !5
  %3118 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3105, ptr noundef @.str.2, i32 noundef %3106, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 359, ptr noundef %3109, ptr noundef %3112, ptr noundef %3115, i32 noundef %3117) #11
  br label %3136

3119:                                             ; preds = %3097, %3090
  %3120 = load i32, ptr %114, align 4, !tbaa !5
  %3121 = call ptr @__errno_location() #12
  store i32 %3120, ptr %3121, align 4, !tbaa !5
  %3122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3123 = load i32, ptr @test_count, align 4, !tbaa !5
  %3124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3125 = load i32, ptr %3124, align 4, !tbaa !5
  %3126 = call ptr @s2n_strerror(i32 noundef %3125, ptr noundef @.str.4)
  %3127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3128 = load i32, ptr %3127, align 4, !tbaa !5
  %3129 = call ptr @s2n_strerror_debug(i32 noundef %3128, ptr noundef @.str.4)
  %3130 = call ptr @__errno_location() #12
  %3131 = load i32, ptr %3130, align 4, !tbaa !5
  %3132 = call ptr @strerror(i32 noundef %3131) #11
  %3133 = call ptr @__errno_location() #12
  %3134 = load i32, ptr %3133, align 4, !tbaa !5
  %3135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3122, ptr noundef @.str.5, i32 noundef %3123, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 359, ptr noundef %3126, ptr noundef %3129, ptr noundef %3132, i32 noundef %3134) #11
  br label %3136

3136:                                             ; preds = %3119, %3102
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #11
  br label %3137

3137:                                             ; preds = %3136
  br label %3138

3138:                                             ; preds = %3137
  call void @exit(i32 noundef 1) #13
  unreachable

3139:                                             ; No predecessors!
  br label %3140

3140:                                             ; preds = %3139
  br label %3141

3141:                                             ; preds = %3140, %3078
  br label %3142

3142:                                             ; preds = %3141
  br label %3143

3143:                                             ; preds = %3142
  br label %3144

3144:                                             ; preds = %3143, %3073
  br label %3145

3145:                                             ; preds = %3144
  br label %3146

3146:                                             ; preds = %3145
  br label %3222

3147:                                             ; preds = %3067
  br label %3148

3148:                                             ; preds = %3147
  %3149 = getelementptr inbounds %struct.s2n_blob, ptr %98, i32 0, i32 1
  %3150 = load i32, ptr %3149, align 8, !tbaa !62
  %3151 = icmp ne i32 %3150, 0
  br i1 %3151, label %3152, label %3219

3152:                                             ; preds = %3148
  br label %3153

3153:                                             ; preds = %3152
  %3154 = load i32, ptr @test_count, align 4, !tbaa !5
  %3155 = add nsw i32 %3154, 1
  store i32 %3155, ptr @test_count, align 4, !tbaa !5
  %3156 = getelementptr inbounds %struct.s2n_blob, ptr %98, i32 0, i32 0
  %3157 = load ptr, ptr %3156, align 8, !tbaa !63
  %3158 = getelementptr inbounds %struct.s2n_blob, ptr %98, i32 0, i32 1
  %3159 = load i32, ptr %3158, align 8, !tbaa !62
  %3160 = zext i32 %3159 to i64
  %3161 = call i32 @memcmp(ptr noundef @test_recv_key, ptr noundef %3157, i64 noundef %3160) #14
  %3162 = icmp eq i32 %3161, 0
  br i1 %3162, label %3216, label %3163

3163:                                             ; preds = %3153
  br label %3164

3164:                                             ; preds = %3163
  br label %3165

3165:                                             ; preds = %3164
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #11
  %3166 = call ptr @__errno_location() #12
  %3167 = load i32, ptr %3166, align 4, !tbaa !5
  store i32 %3167, ptr %115, align 4, !tbaa !5
  %3168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3169 = call i32 @s2n_print_stacktrace(ptr noundef %3168)
  %3170 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3171 = trunc i8 %3170 to i1
  br i1 %3171, label %3172, label %3194

3172:                                             ; preds = %3165
  %3173 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3174 = call i32 @fileno(ptr noundef %3173) #11
  %3175 = call i32 @isatty(i32 noundef %3174) #11
  %3176 = icmp ne i32 %3175, 0
  br i1 %3176, label %3177, label %3194

3177:                                             ; preds = %3172
  %3178 = load i32, ptr %115, align 4, !tbaa !5
  %3179 = call ptr @__errno_location() #12
  store i32 %3178, ptr %3179, align 4, !tbaa !5
  %3180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3181 = load i32, ptr @test_count, align 4, !tbaa !5
  %3182 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3183 = load i32, ptr %3182, align 4, !tbaa !5
  %3184 = call ptr @s2n_strerror(i32 noundef %3183, ptr noundef @.str.4)
  %3185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3186 = load i32, ptr %3185, align 4, !tbaa !5
  %3187 = call ptr @s2n_strerror_debug(i32 noundef %3186, ptr noundef @.str.4)
  %3188 = call ptr @__errno_location() #12
  %3189 = load i32, ptr %3188, align 4, !tbaa !5
  %3190 = call ptr @strerror(i32 noundef %3189) #11
  %3191 = call ptr @__errno_location() #12
  %3192 = load i32, ptr %3191, align 4, !tbaa !5
  %3193 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3180, ptr noundef @.str.2, i32 noundef %3181, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 359, ptr noundef %3184, ptr noundef %3187, ptr noundef %3190, i32 noundef %3192) #11
  br label %3211

3194:                                             ; preds = %3172, %3165
  %3195 = load i32, ptr %115, align 4, !tbaa !5
  %3196 = call ptr @__errno_location() #12
  store i32 %3195, ptr %3196, align 4, !tbaa !5
  %3197 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3198 = load i32, ptr @test_count, align 4, !tbaa !5
  %3199 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3200 = load i32, ptr %3199, align 4, !tbaa !5
  %3201 = call ptr @s2n_strerror(i32 noundef %3200, ptr noundef @.str.4)
  %3202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3203 = load i32, ptr %3202, align 4, !tbaa !5
  %3204 = call ptr @s2n_strerror_debug(i32 noundef %3203, ptr noundef @.str.4)
  %3205 = call ptr @__errno_location() #12
  %3206 = load i32, ptr %3205, align 4, !tbaa !5
  %3207 = call ptr @strerror(i32 noundef %3206) #11
  %3208 = call ptr @__errno_location() #12
  %3209 = load i32, ptr %3208, align 4, !tbaa !5
  %3210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3197, ptr noundef @.str.5, i32 noundef %3198, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 359, ptr noundef %3201, ptr noundef %3204, ptr noundef %3207, i32 noundef %3209) #11
  br label %3211

3211:                                             ; preds = %3194, %3177
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #11
  br label %3212

3212:                                             ; preds = %3211
  br label %3213

3213:                                             ; preds = %3212
  call void @exit(i32 noundef 1) #13
  unreachable

3214:                                             ; No predecessors!
  br label %3215

3215:                                             ; preds = %3214
  br label %3216

3216:                                             ; preds = %3215, %3153
  br label %3217

3217:                                             ; preds = %3216
  br label %3218

3218:                                             ; preds = %3217
  br label %3219

3219:                                             ; preds = %3218, %3148
  br label %3220

3220:                                             ; preds = %3219
  br label %3221

3221:                                             ; preds = %3220
  br label %3222

3222:                                             ; preds = %3221, %3146
  %3223 = call i32 @s2n_connection_ptr_free(ptr noundef %105)
  %3224 = getelementptr inbounds %struct.s2n_result, ptr %116, i32 0, i32 0
  store i32 %3223, ptr %3224, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #11
  br label %3225

3225:                                             ; preds = %3222
  %3226 = load i64, ptr %103, align 8, !tbaa !20
  %3227 = add i64 %3226, 1
  store i64 %3227, ptr %103, align 8, !tbaa !20
  br label %2692, !llvm.loop !71

3228:                                             ; preds = %2695
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #11
  store i32 0, ptr %19, align 4
  br label %3229

3229:                                             ; preds = %3228, %2688
  %3230 = call i32 @s2n_free(ptr noundef %100)
  call void @llvm.lifetime.end.p0(i64 24, ptr %100) #11
  br label %3231

3231:                                             ; preds = %3229, %2678
  %3232 = call i32 @s2n_free(ptr noundef %98)
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #11
  br label %3233

3233:                                             ; preds = %3231, %2668
  %3234 = call i32 @s2n_free(ptr noundef %96)
  call void @llvm.lifetime.end.p0(i64 24, ptr %96) #11
  %3235 = load i32, ptr %19, align 4
  switch i32 %3235, label %3237 [
    i32 0, label %3236
  ]

3236:                                             ; preds = %3233
  store i32 0, ptr %19, align 4
  br label %3237

3237:                                             ; preds = %3236, %3233
  call void @llvm.lifetime.end.p0(i64 64, ptr %95) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #11
  %3238 = load i32, ptr %19, align 4
  switch i32 %3238, label %3394 [
    i32 0, label %3239
  ]

3239:                                             ; preds = %3237
  br label %3240

3240:                                             ; preds = %3239
  br label %3241

3241:                                             ; preds = %3240
  %3242 = call i32 @s2n_cleanup()
  %3243 = icmp eq i32 %3242, -1
  br i1 %3243, label %3244, label %3297

3244:                                             ; preds = %3241
  br label %3245

3245:                                             ; preds = %3244
  br label %3246

3246:                                             ; preds = %3245
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #11
  %3247 = call ptr @__errno_location() #12
  %3248 = load i32, ptr %3247, align 4, !tbaa !5
  store i32 %3248, ptr %117, align 4, !tbaa !5
  %3249 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3250 = call i32 @s2n_print_stacktrace(ptr noundef %3249)
  %3251 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3252 = trunc i8 %3251 to i1
  br i1 %3252, label %3253, label %3275

3253:                                             ; preds = %3246
  %3254 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3255 = call i32 @fileno(ptr noundef %3254) #11
  %3256 = call i32 @isatty(i32 noundef %3255) #11
  %3257 = icmp ne i32 %3256, 0
  br i1 %3257, label %3258, label %3275

3258:                                             ; preds = %3253
  %3259 = load i32, ptr %117, align 4, !tbaa !5
  %3260 = call ptr @__errno_location() #12
  store i32 %3259, ptr %3260, align 4, !tbaa !5
  %3261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3262 = load i32, ptr @test_count, align 4, !tbaa !5
  %3263 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3264 = load i32, ptr %3263, align 4, !tbaa !5
  %3265 = call ptr @s2n_strerror(i32 noundef %3264, ptr noundef @.str.4)
  %3266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3267 = load i32, ptr %3266, align 4, !tbaa !5
  %3268 = call ptr @s2n_strerror_debug(i32 noundef %3267, ptr noundef @.str.4)
  %3269 = call ptr @__errno_location() #12
  %3270 = load i32, ptr %3269, align 4, !tbaa !5
  %3271 = call ptr @strerror(i32 noundef %3270) #11
  %3272 = call ptr @__errno_location() #12
  %3273 = load i32, ptr %3272, align 4, !tbaa !5
  %3274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3261, ptr noundef @.str.2, i32 noundef %3262, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 364, ptr noundef %3265, ptr noundef %3268, ptr noundef %3271, i32 noundef %3273) #11
  br label %3292

3275:                                             ; preds = %3253, %3246
  %3276 = load i32, ptr %117, align 4, !tbaa !5
  %3277 = call ptr @__errno_location() #12
  store i32 %3276, ptr %3277, align 4, !tbaa !5
  %3278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3279 = load i32, ptr @test_count, align 4, !tbaa !5
  %3280 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3281 = load i32, ptr %3280, align 4, !tbaa !5
  %3282 = call ptr @s2n_strerror(i32 noundef %3281, ptr noundef @.str.4)
  %3283 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3284 = load i32, ptr %3283, align 4, !tbaa !5
  %3285 = call ptr @s2n_strerror_debug(i32 noundef %3284, ptr noundef @.str.4)
  %3286 = call ptr @__errno_location() #12
  %3287 = load i32, ptr %3286, align 4, !tbaa !5
  %3288 = call ptr @strerror(i32 noundef %3287) #11
  %3289 = call ptr @__errno_location() #12
  %3290 = load i32, ptr %3289, align 4, !tbaa !5
  %3291 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3278, ptr noundef @.str.5, i32 noundef %3279, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 364, ptr noundef %3282, ptr noundef %3285, ptr noundef %3288, i32 noundef %3290) #11
  br label %3292

3292:                                             ; preds = %3275, %3258
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #11
  br label %3293

3293:                                             ; preds = %3292
  br label %3294

3294:                                             ; preds = %3293
  call void @exit(i32 noundef 1) #13
  unreachable

3295:                                             ; No predecessors!
  br label %3296

3296:                                             ; preds = %3295
  br label %3297

3297:                                             ; preds = %3296, %3241
  br label %3298

3298:                                             ; preds = %3297
  br label %3299

3299:                                             ; preds = %3298
  br label %3300

3300:                                             ; preds = %3299
  br label %3301

3301:                                             ; preds = %3300
  %3302 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %3303 = icmp eq i32 %3302, -1
  br i1 %3303, label %3304, label %3357

3304:                                             ; preds = %3301
  br label %3305

3305:                                             ; preds = %3304
  br label %3306

3306:                                             ; preds = %3305
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #11
  %3307 = call ptr @__errno_location() #12
  %3308 = load i32, ptr %3307, align 4, !tbaa !5
  store i32 %3308, ptr %118, align 4, !tbaa !5
  %3309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3310 = call i32 @s2n_print_stacktrace(ptr noundef %3309)
  %3311 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3312 = trunc i8 %3311 to i1
  br i1 %3312, label %3313, label %3335

3313:                                             ; preds = %3306
  %3314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3315 = call i32 @fileno(ptr noundef %3314) #11
  %3316 = call i32 @isatty(i32 noundef %3315) #11
  %3317 = icmp ne i32 %3316, 0
  br i1 %3317, label %3318, label %3335

3318:                                             ; preds = %3313
  %3319 = load i32, ptr %118, align 4, !tbaa !5
  %3320 = call ptr @__errno_location() #12
  store i32 %3319, ptr %3320, align 4, !tbaa !5
  %3321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3322 = load i32, ptr @test_count, align 4, !tbaa !5
  %3323 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3324 = load i32, ptr %3323, align 4, !tbaa !5
  %3325 = call ptr @s2n_strerror(i32 noundef %3324, ptr noundef @.str.4)
  %3326 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3327 = load i32, ptr %3326, align 4, !tbaa !5
  %3328 = call ptr @s2n_strerror_debug(i32 noundef %3327, ptr noundef @.str.4)
  %3329 = call ptr @__errno_location() #12
  %3330 = load i32, ptr %3329, align 4, !tbaa !5
  %3331 = call ptr @strerror(i32 noundef %3330) #11
  %3332 = call ptr @__errno_location() #12
  %3333 = load i32, ptr %3332, align 4, !tbaa !5
  %3334 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3321, ptr noundef @.str.2, i32 noundef %3322, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 364, ptr noundef %3325, ptr noundef %3328, ptr noundef %3331, i32 noundef %3333) #11
  br label %3352

3335:                                             ; preds = %3313, %3306
  %3336 = load i32, ptr %118, align 4, !tbaa !5
  %3337 = call ptr @__errno_location() #12
  store i32 %3336, ptr %3337, align 4, !tbaa !5
  %3338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3339 = load i32, ptr @test_count, align 4, !tbaa !5
  %3340 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3341 = load i32, ptr %3340, align 4, !tbaa !5
  %3342 = call ptr @s2n_strerror(i32 noundef %3341, ptr noundef @.str.4)
  %3343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3344 = load i32, ptr %3343, align 4, !tbaa !5
  %3345 = call ptr @s2n_strerror_debug(i32 noundef %3344, ptr noundef @.str.4)
  %3346 = call ptr @__errno_location() #12
  %3347 = load i32, ptr %3346, align 4, !tbaa !5
  %3348 = call ptr @strerror(i32 noundef %3347) #11
  %3349 = call ptr @__errno_location() #12
  %3350 = load i32, ptr %3349, align 4, !tbaa !5
  %3351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3338, ptr noundef @.str.5, i32 noundef %3339, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 364, ptr noundef %3342, ptr noundef %3345, ptr noundef %3348, i32 noundef %3350) #11
  br label %3352

3352:                                             ; preds = %3335, %3318
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #11
  br label %3353

3353:                                             ; preds = %3352
  br label %3354

3354:                                             ; preds = %3353
  call void @exit(i32 noundef 1) #13
  unreachable

3355:                                             ; No predecessors!
  br label %3356

3356:                                             ; preds = %3355
  br label %3357

3357:                                             ; preds = %3356, %3301
  br label %3358

3358:                                             ; preds = %3357
  br label %3359

3359:                                             ; preds = %3358
  %3360 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3361 = trunc i8 %3360 to i1
  br i1 %3361, label %3362, label %3378

3362:                                             ; preds = %3359
  %3363 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3364 = call i32 @fileno(ptr noundef %3363) #11
  %3365 = call i32 @isatty(i32 noundef %3364) #11
  %3366 = icmp ne i32 %3365, 0
  br i1 %3366, label %3367, label %3378

3367:                                             ; preds = %3362
  %3368 = load i32, ptr @test_count, align 4, !tbaa !5
  %3369 = icmp ne i32 %3368, 0
  br i1 %3369, label %3370, label %3374

3370:                                             ; preds = %3367
  %3371 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3372 = load i32, ptr @test_count, align 4, !tbaa !5
  %3373 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3371, ptr noundef @.str.10, i32 noundef %3372) #11
  br label %3377

3374:                                             ; preds = %3367
  %3375 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3375, ptr noundef @.str.11) #11
  br label %3377

3377:                                             ; preds = %3374, %3370
  br label %3389

3378:                                             ; preds = %3362, %3359
  %3379 = load i32, ptr @test_count, align 4, !tbaa !5
  %3380 = icmp ne i32 %3379, 0
  br i1 %3380, label %3381, label %3385

3381:                                             ; preds = %3378
  %3382 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3383 = load i32, ptr @test_count, align 4, !tbaa !5
  %3384 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3382, ptr noundef @.str.12, i32 noundef %3383) #11
  br label %3388

3385:                                             ; preds = %3378
  %3386 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3387 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3386, ptr noundef @.str.13) #11
  br label %3388

3388:                                             ; preds = %3385, %3381
  br label %3389

3389:                                             ; preds = %3388, %3377
  store i32 0, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %3394

3390:                                             ; No predecessors!
  br label %3391

3391:                                             ; preds = %3390
  br label %3392

3392:                                             ; preds = %3391
  br label %3393

3393:                                             ; preds = %3392
  store i32 0, ptr %19, align 4
  br label %3394

3394:                                             ; preds = %3393, %3389, %3237, %2658
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr %11) #11
  %3395 = load i32, ptr %19, align 4
  switch i32 %3395, label %3398 [
    i32 0, label %3396
    i32 1, label %3396
  ]

3396:                                             ; preds = %3394, %3394, %443
  %3397 = load i32, ptr %3, align 4
  ret i32 %3397

3398:                                             ; preds = %3394
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

declare i32 @s2n_is_evp_apis_supported(...) #2

declare i32 @s2n_cleanup() #2

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

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

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

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

declare i32 @s2n_free(ptr noundef) #2

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

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

declare ptr @s2n_connection_new(i32 noundef) #2

declare i32 @s2n_connection_ptr_free(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_set_test_secret(ptr noundef, ptr noundef, ptr noundef byval(%struct.s2n_blob) align 8) #0

declare i32 @s2n_conn_get_current_message_type(ptr noundef) #2

declare i32 @s2n_tls13_key_schedule_update(ptr noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #10

declare i32 @s2n_conn_choose_state_machine(ptr noundef, i8 noundef zeroext) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 #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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind 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 #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(none) }
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, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{i64 0, i64 1, !16, i64 8, i64 8, !9, i64 16, i64 8, !9, i64 24, i64 2, !16, i64 32, i64 8, !9, i64 40, i64 4, !5, i64 48, i64 8, !9, i64 56, i64 16, !16, i64 72, i64 1, !16, i64 80, i64 8, !9, i64 88, i64 8, !9, i64 96, i64 4, !5, i64 100, i64 1, !16}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !10, i64 48}
!18 = !{!"s2n_cipher_suite", !6, i64 0, !10, i64 8, !10, i64 16, !7, i64 24, !10, i64 32, !6, i64 40, !10, i64 48, !7, i64 56, !7, i64 72, !10, i64 80, !10, i64 88, !6, i64 96, !7, i64 100}
!19 = !{i64 0, i64 8, !9, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 8, !20}
!20 = !{!21, !21, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!23, !10, i64 0}
!23 = !{!"s2n_record_algorithm", !10, i64 0, !6, i64 8, !6, i64 12, !21, i64 16}
!24 = !{i64 0, i64 4, !5, i64 8, i64 40, !16, i64 48, i64 1, !16, i64 56, i64 8, !9, i64 64, i64 8, !9, i64 72, i64 8, !9, i64 80, i64 8, !9, i64 88, i64 8, !9, i64 96, i64 8, !9}
!25 = !{!26, !10, i64 72}
!26 = !{!"s2n_cipher", !6, i64 0, !7, i64 8, !7, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96}
!27 = !{!26, !10, i64 80}
!28 = !{!29, !10, i64 232}
!29 = !{!"s2n_connection", !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 1, !6, i64 2, !6, i64 2, !6, i64 2, !6, i64 2, !6, i64 2, !6, i64 2, !6, i64 2, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !7, i64 80, !7, i64 102, !7, i64 124, !6, i64 148, !6, i64 152, !30, i64 160, !21, i64 168, !21, i64 176, !7, i64 184, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !7, i64 220, !7, i64 221, !7, i64 222, !10, i64 224, !10, i64 232, !31, i64 240, !10, i64 632, !10, i64 640, !32, i64 648, !38, i64 1144, !41, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !44, i64 1776, !44, i64 1816, !44, i64 1856, !44, i64 1896, !6, i64 1936, !21, i64 1944, !7, i64 1952, !44, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !45, i64 2004, !45, i64 2008, !46, i64 2016, !43, i64 2208, !6, i64 2212, !43, i64 2216, !21, i64 2224, !7, i64 2232, !21, i64 2240, !21, i64 2248, !21, i64 2256, !45, i64 2264, !45, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !37, i64 2792, !6, i64 2816, !37, i64 2824, !37, i64 2848, !37, i64 2872, !48, i64 2896, !50, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !37, i64 3784, !6, i64 3808, !52, i64 3816, !7, i64 3848, !44, i64 3992, !37, i64 4032, !37, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !43, i64 4084, !43, i64 4086, !6, i64 4088, !6, i64 4092, !37, i64 4096, !6, i64 4120, !53, i64 4128, !45, i64 4176, !7, i64 4180, !7, i64 4181}
!30 = !{!"s2n_timer", !21, i64 0}
!31 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!32 = !{!"s2n_kex_parameters", !33, i64 0, !34, i64 8, !7, i64 24, !34, i64 56, !35, i64 72, !35, i64 184, !7, i64 296, !36, i64 360, !37, i64 448, !37, i64 472}
!33 = !{!"s2n_dh_params", !10, i64 0}
!34 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!35 = !{!"s2n_kem_group_params", !10, i64 0, !36, i64 8, !34, i64 96}
!36 = !{!"s2n_kem_params", !10, i64 0, !37, i64 8, !37, i64 32, !37, i64 56, !12, i64 80}
!37 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!38 = !{!"s2n_handshake_parameters", !39, i64 0, !39, i64 48, !37, i64 96, !6, i64 120, !40, i64 124, !10, i64 384, !10, i64 392, !10, i64 400, !7, i64 408, !7, i64 440, !7, i64 472, !7, i64 473, !7, i64 474, !7, i64 506}
!39 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!40 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!41 = !{!"s2n_psk_parameters", !6, i64 0, !42, i64 8, !43, i64 40, !43, i64 42, !10, i64 48, !6, i64 56}
!42 = !{!"s2n_array", !37, i64 0, !6, i64 24, !6, i64 28}
!43 = !{!"short", !7, i64 0}
!44 = !{!"s2n_stuffer", !37, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!45 = !{!"", !6, i64 0}
!46 = !{!"s2n_handshake", !44, i64 0, !10, i64 40, !7, i64 48, !7, i64 56, !7, i64 104, !7, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !47, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!47 = !{!"s2n_offered_early_data", !10, i64 0}
!48 = !{!"s2n_client_hello", !37, i64 0, !49, i64 24, !37, i64 728, !37, i64 752, !37, i64 776, !7, i64 800, !7, i64 801, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802}
!49 = !{!"", !7, i64 0, !37, i64 672, !43, i64 696}
!50 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !43, i64 18, !10, i64 24, !6, i64 32, !10, i64 40, !51, i64 48, !12, i64 52}
!51 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!52 = !{!"s2n_ticket_fields", !37, i64 0, !6, i64 24}
!53 = !{!"s2n_post_handshake", !44, i64 0, !7, i64 40}
!54 = !{!55, !10, i64 0}
!55 = !{!"s2n_crypto_parameters", !10, i64 0, !56, i64 8, !56, i64 16, !57, i64 24, !57, i64 456, !7, i64 888, !7, i64 904, !7, i64 920, !7, i64 928}
!56 = !{!"s2n_session_key", !10, i64 0}
!57 = !{!"s2n_hmac_state", !6, i64 0, !43, i64 4, !6, i64 8, !43, i64 12, !7, i64 14, !58, i64 16, !58, i64 72, !58, i64 128, !58, i64 184, !7, i64 240, !7, i64 368}
!58 = !{!"s2n_hash_state", !10, i64 0, !6, i64 8, !7, i64 12, !21, i64 16, !7, i64 24}
!59 = !{!29, !7, i64 220}
!60 = !{!29, !6, i64 2172}
!61 = !{!29, !6, i64 2176}
!62 = !{!37, !6, i64 8}
!63 = !{!37, !10, i64 0}
!64 = !{!29, !6, i64 148}
!65 = distinct !{!65, !66}
!66 = !{!"llvm.loop.mustprogress"}
!67 = distinct !{!67, !66}
!68 = distinct !{!68, !66}
!69 = distinct !{!69, !66}
!70 = !{!29, !6, i64 4088}
!71 = distinct !{!71, !66}


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

%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_record_algorithm = type { ptr, i32, i32, i64 }
%struct.s2n_cipher = type { i32, %union.anon, i8, ptr, ptr, ptr, ptr, ptr, ptr }
%union.anon = type { %struct.s2n_composite_cipher }
%struct.s2n_composite_cipher = type { i8, i8, i8, ptr, ptr, ptr, ptr }
%struct.s2n_blob = type { ptr, i32, i32, i8 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@modes = external dso_local local_unnamed_addr constant [2 x i32], align 4
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [94 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@s2n_tls13_aes_128_gcm_sha256 = external local_unnamed_addr global %struct.s2n_cipher_suite, align 8
@.str.14 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [95 x i8], align 1
@test_send_key = external hidden global [32 x i8], align 16
@.str.21 = external hidden unnamed_addr constant [76 x i8], align 1
@test_recv_key = external hidden global [32 x i8], align 16
@.str.22 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [36 x i8], align 1
@__const.main.trigger_messages = external hidden unnamed_addr constant [2 x i32], align 4
@.str.33 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [36 x i8], align 1
@__const.main.trigger_messages.43 = external hidden unnamed_addr constant [2 x i32], align 4
@.str.44 = external hidden unnamed_addr constant [114 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca %struct.s2n_cipher_suite, align 8
  %4 = alloca %struct.s2n_record_algorithm, align 8
  %5 = alloca %struct.s2n_cipher, align 8
  %6 = alloca [16 x i32], align 16
  %7 = alloca %struct.s2n_blob, align 8
  %8 = alloca %struct.s2n_blob, align 8
  %9 = alloca %struct.s2n_blob, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.s2n_blob, align 8
  %12 = alloca %struct.s2n_blob, align 8
  %13 = alloca %struct.s2n_blob, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %struct.s2n_blob, align 8
  %16 = alloca %struct.s2n_blob, align 8
  %17 = alloca %struct.s2n_blob, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %struct.s2n_blob, align 8
  %20 = alloca %struct.s2n_blob, align 8
  %21 = alloca %struct.s2n_blob, align 8
  %22 = alloca ptr, align 8
  %23 = alloca [16 x i32], align 16
  %24 = alloca %struct.s2n_blob, align 8
  %25 = alloca %struct.s2n_blob, align 8
  %26 = alloca %struct.s2n_blob, align 8
  %27 = alloca ptr, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %28 = load ptr, ptr @stdout, align 8, !tbaa !9
  %29 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %28, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #12
  %30 = load ptr, ptr @stdout, align 8, !tbaa !9
  %31 = tail call i32 @fflush(ptr noundef %30)
  %32 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #12
  %33 = icmp eq i32 %32, -1
  br i1 %33, label %34, label %58

34:                                               ; preds = %2
  %35 = tail call ptr @__errno_location() #13
  %36 = load i32, ptr %35, align 4, !tbaa !5
  %37 = load ptr, ptr @stderr, align 8, !tbaa !9
  %38 = tail call i32 @s2n_print_stacktrace(ptr noundef %37) #12
  %39 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %40 = trunc nuw i8 %39 to i1
  br i1 %40, label %41, label %45

41:                                               ; preds = %34
  %42 = load ptr, ptr @stderr, align 8, !tbaa !9
  %43 = tail call i32 @fileno(ptr noundef %42) #12
  %44 = tail call i32 @isatty(i32 noundef %43) #12
  %.not255 = icmp eq i32 %44, 0
  br i1 %.not255, label %45, label %46

45:                                               ; preds = %41, %34
  br label %46

46:                                               ; preds = %41, %45
  %.str.5.sink = phi ptr [ @.str.5, %45 ], [ @.str.2, %41 ]
  store i32 %36, ptr %35, align 4, !tbaa !5
  %47 = load ptr, ptr @stderr, align 8, !tbaa !9
  %48 = load i32, ptr @test_count, align 4, !tbaa !5
  %49 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %50 = load i32, ptr %49, align 4, !tbaa !5
  %51 = tail call ptr @s2n_strerror(i32 noundef %50, ptr noundef nonnull @.str.4) #12
  %52 = load i32, ptr %49, align 4, !tbaa !5
  %53 = tail call ptr @s2n_strerror_debug(i32 noundef %52, ptr noundef nonnull @.str.4) #12
  %54 = load i32, ptr %35, align 4, !tbaa !5
  %55 = tail call ptr @strerror(i32 noundef %54) #12
  %56 = load i32, ptr %35, align 4, !tbaa !5
  %57 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %47, ptr noundef nonnull %.str.5.sink, i32 noundef %48, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 75, ptr noundef %51, ptr noundef %53, ptr noundef %55, i32 noundef %56) #14
  tail call void @exit(i32 noundef 1) #15
  unreachable

58:                                               ; preds = %2
  %59 = load i32, ptr @test_count, align 4, !tbaa !5
  %60 = add nsw i32 %59, 1
  store i32 %60, ptr @test_count, align 4, !tbaa !5
  %61 = tail call i32 @s2n_enable_atexit() #12
  %62 = icmp eq i32 %61, -1
  br i1 %62, label %63, label %87

63:                                               ; preds = %58
  %64 = tail call ptr @__errno_location() #13
  %65 = load i32, ptr %64, align 4, !tbaa !5
  %66 = load ptr, ptr @stderr, align 8, !tbaa !9
  %67 = tail call i32 @s2n_print_stacktrace(ptr noundef %66) #12
  %68 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %69 = trunc nuw i8 %68 to i1
  br i1 %69, label %70, label %74

70:                                               ; preds = %63
  %71 = load ptr, ptr @stderr, align 8, !tbaa !9
  %72 = tail call i32 @fileno(ptr noundef %71) #12
  %73 = tail call i32 @isatty(i32 noundef %72) #12
  %.not254 = icmp eq i32 %73, 0
  br i1 %.not254, label %74, label %75

74:                                               ; preds = %70, %63
  br label %75

75:                                               ; preds = %70, %74
  %.str.5.sink310 = phi ptr [ @.str.5, %74 ], [ @.str.2, %70 ]
  store i32 %65, ptr %64, align 4, !tbaa !5
  %76 = load ptr, ptr @stderr, align 8, !tbaa !9
  %77 = load i32, ptr @test_count, align 4, !tbaa !5
  %78 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %79 = load i32, ptr %78, align 4, !tbaa !5
  %80 = tail call ptr @s2n_strerror(i32 noundef %79, ptr noundef nonnull @.str.4) #12
  %81 = load i32, ptr %78, align 4, !tbaa !5
  %82 = tail call ptr @s2n_strerror_debug(i32 noundef %81, ptr noundef nonnull @.str.4) #12
  %83 = load i32, ptr %64, align 4, !tbaa !5
  %84 = tail call ptr @strerror(i32 noundef %83) #12
  %85 = load i32, ptr %64, align 4, !tbaa !5
  %86 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %76, ptr noundef nonnull %.str.5.sink310, i32 noundef %77, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 75, ptr noundef %80, ptr noundef %82, ptr noundef %84, i32 noundef %85) #14
  tail call void @exit(i32 noundef 1) #15
  unreachable

87:                                               ; preds = %58
  %88 = tail call i32 @s2n_init() #12
  %89 = icmp eq i32 %88, -1
  br i1 %89, label %90, label %114

90:                                               ; preds = %87
  %91 = tail call ptr @__errno_location() #13
  %92 = load i32, ptr %91, align 4, !tbaa !5
  %93 = load ptr, ptr @stderr, align 8, !tbaa !9
  %94 = tail call i32 @s2n_print_stacktrace(ptr noundef %93) #12
  %95 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %96 = trunc nuw i8 %95 to i1
  br i1 %96, label %97, label %101

97:                                               ; preds = %90
  %98 = load ptr, ptr @stderr, align 8, !tbaa !9
  %99 = tail call i32 @fileno(ptr noundef %98) #12
  %100 = tail call i32 @isatty(i32 noundef %99) #12
  %.not253 = icmp eq i32 %100, 0
  br i1 %.not253, label %101, label %102

101:                                              ; preds = %97, %90
  br label %102

102:                                              ; preds = %97, %101
  %.str.5.sink321 = phi ptr [ @.str.5, %101 ], [ @.str.2, %97 ]
  store i32 %92, ptr %91, align 4, !tbaa !5
  %103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %104 = load i32, ptr @test_count, align 4, !tbaa !5
  %105 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %106 = load i32, ptr %105, align 4, !tbaa !5
  %107 = tail call ptr @s2n_strerror(i32 noundef %106, ptr noundef nonnull @.str.4) #12
  %108 = load i32, ptr %105, align 4, !tbaa !5
  %109 = tail call ptr @s2n_strerror_debug(i32 noundef %108, ptr noundef nonnull @.str.4) #12
  %110 = load i32, ptr %91, align 4, !tbaa !5
  %111 = tail call ptr @strerror(i32 noundef %110) #12
  %112 = load i32, ptr %91, align 4, !tbaa !5
  %113 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %103, ptr noundef nonnull %.str.5.sink321, i32 noundef %104, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 75, ptr noundef %107, ptr noundef %109, ptr noundef %111, i32 noundef %112) #14
  tail call void @exit(i32 noundef 1) #15
  unreachable

114:                                              ; preds = %87
  %115 = tail call i32 (...) @s2n_is_evp_apis_supported() #12
  %.not = icmp eq i32 %115, 0
  br i1 %.not, label %116, label %191

116:                                              ; preds = %114
  %117 = tail call i32 @s2n_cleanup() #12
  %118 = icmp eq i32 %117, -1
  br i1 %118, label %119, label %143

119:                                              ; preds = %116
  %120 = tail call ptr @__errno_location() #13
  %121 = load i32, ptr %120, align 4, !tbaa !5
  %122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %123 = tail call i32 @s2n_print_stacktrace(ptr noundef %122) #12
  %124 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %125 = trunc nuw i8 %124 to i1
  br i1 %125, label %126, label %130

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

130:                                              ; preds = %126, %119
  br label %131

131:                                              ; preds = %126, %130
  %.str.5.sink332 = phi ptr [ @.str.5, %130 ], [ @.str.2, %126 ]
  store i32 %121, ptr %120, align 4, !tbaa !5
  %132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %133 = load i32, ptr @test_count, align 4, !tbaa !5
  %134 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %135 = load i32, ptr %134, align 4, !tbaa !5
  %136 = tail call ptr @s2n_strerror(i32 noundef %135, ptr noundef nonnull @.str.4) #12
  %137 = load i32, ptr %134, align 4, !tbaa !5
  %138 = tail call ptr @s2n_strerror_debug(i32 noundef %137, ptr noundef nonnull @.str.4) #12
  %139 = load i32, ptr %120, align 4, !tbaa !5
  %140 = tail call ptr @strerror(i32 noundef %139) #12
  %141 = load i32, ptr %120, align 4, !tbaa !5
  %142 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %132, ptr noundef nonnull %.str.5.sink332, i32 noundef %133, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 81, ptr noundef %136, ptr noundef %138, ptr noundef %140, i32 noundef %141) #14
  tail call void @exit(i32 noundef 1) #15
  unreachable

143:                                              ; preds = %116
  %144 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #12
  %145 = icmp eq i32 %144, -1
  br i1 %145, label %146, label %170

146:                                              ; preds = %143
  %147 = tail call ptr @__errno_location() #13
  %148 = load i32, ptr %147, align 4, !tbaa !5
  %149 = load ptr, ptr @stderr, align 8, !tbaa !9
  %150 = tail call i32 @s2n_print_stacktrace(ptr noundef %149) #12
  %151 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %152 = trunc nuw i8 %151 to i1
  br i1 %152, label %153, label %157

153:                                              ; preds = %146
  %154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %155 = tail call i32 @fileno(ptr noundef %154) #12
  %156 = tail call i32 @isatty(i32 noundef %155) #12
  %.not183 = icmp eq i32 %156, 0
  br i1 %.not183, label %157, label %158

157:                                              ; preds = %153, %146
  br label %158

158:                                              ; preds = %153, %157
  %.str.5.sink343 = phi ptr [ @.str.5, %157 ], [ @.str.2, %153 ]
  store i32 %148, ptr %147, align 4, !tbaa !5
  %159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %160 = load i32, ptr @test_count, align 4, !tbaa !5
  %161 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %162 = load i32, ptr %161, align 4, !tbaa !5
  %163 = tail call ptr @s2n_strerror(i32 noundef %162, ptr noundef nonnull @.str.4) #12
  %164 = load i32, ptr %161, align 4, !tbaa !5
  %165 = tail call ptr @s2n_strerror_debug(i32 noundef %164, ptr noundef nonnull @.str.4) #12
  %166 = load i32, ptr %147, align 4, !tbaa !5
  %167 = tail call ptr @strerror(i32 noundef %166) #12
  %168 = load i32, ptr %147, align 4, !tbaa !5
  %169 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %159, ptr noundef nonnull %.str.5.sink343, i32 noundef %160, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 81, ptr noundef %163, ptr noundef %165, ptr noundef %167, i32 noundef %168) #14
  tail call void @exit(i32 noundef 1) #15
  unreachable

170:                                              ; preds = %143
  %171 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %172 = trunc nuw i8 %171 to i1
  br i1 %172, label %173, label %184

173:                                              ; preds = %170
  %174 = load ptr, ptr @stdout, align 8, !tbaa !9
  %175 = tail call i32 @fileno(ptr noundef %174) #12
  %176 = tail call i32 @isatty(i32 noundef %175) #12
  %.not180 = icmp eq i32 %176, 0
  br i1 %.not180, label %184, label %177

177:                                              ; preds = %173
  %178 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not182 = icmp eq i32 %178, 0
  %179 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not182, label %182, label %180

180:                                              ; preds = %177
  %181 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %179, ptr noundef nonnull @.str.10, i32 noundef %178) #12
  br label %1811

182:                                              ; preds = %177
  %183 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %179, ptr noundef nonnull @.str.11) #12
  br label %1811

184:                                              ; preds = %173, %170
  %185 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not181 = icmp eq i32 %185, 0
  %186 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not181, label %189, label %187

187:                                              ; preds = %184
  %188 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %186, ptr noundef nonnull @.str.12, i32 noundef %185) #12
  br label %1811

189:                                              ; preds = %184
  %190 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %186, ptr noundef nonnull @.str.13) #12
  br label %1811

191:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %3) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %3, ptr noundef nonnull align 8 dereferenceable(104) @s2n_tls13_aes_128_gcm_sha256, i64 104, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #12
  %192 = getelementptr inbounds i8, ptr %3, i64 48
  %193 = load ptr, ptr %192, align 8, !tbaa !17
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %193, i64 24, i1 false), !tbaa.struct !19
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %5) #12
  %194 = load ptr, ptr %4, align 8, !tbaa !22
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef nonnull align 8 dereferenceable(104) %194, i64 104, i1 false), !tbaa.struct !24
  %195 = getelementptr inbounds i8, ptr %5, i64 72
  store ptr @s2n_test_set_recv_key, ptr %195, align 8, !tbaa !25
  %196 = getelementptr inbounds i8, ptr %5, i64 80
  store ptr @s2n_test_set_send_key, ptr %196, align 8, !tbaa !27
  store ptr %5, ptr %4, align 8, !tbaa !22
  store ptr %4, ptr %192, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %6, i8 0, i64 64, i1 false)
  %197 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 1, ptr %197, align 4
  %198 = getelementptr inbounds i8, ptr %6, i64 52
  store i32 6, ptr %198, align 4
  %199 = getelementptr inbounds i8, ptr %6, i64 60
  store i32 5, ptr %199, align 4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, i8 0, i64 24, i1 false)
  %200 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %7, ptr noundef nonnull @.str.14) #12
  %201 = call zeroext i1 @s2n_result_is_ok(i32 %200)
  br i1 %201, label %203, label %.thread

.thread:                                          ; preds = %191
  %202 = call i32 @s2n_free(ptr noundef nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #12
  br label %.thread267

203:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, i8 0, i64 24, i1 false)
  %204 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %8, ptr noundef nonnull @.str.15) #12
  %205 = call zeroext i1 @s2n_result_is_ok(i32 %204)
  br i1 %205, label %206, label %469

206:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, i8 0, i64 24, i1 false)
  %207 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %9, ptr noundef nonnull @.str.16) #12
  %208 = call zeroext i1 @s2n_result_is_ok(i32 %207)
  br i1 %208, label %.preheader284, label %.loopexit285

.preheader284:                                    ; preds = %206
  %209 = getelementptr inbounds i8, ptr %9, i64 8
  %210 = getelementptr inbounds i8, ptr %8, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  %211 = load i32, ptr @modes, align 4, !tbaa !5
  %212 = call ptr @s2n_connection_new(i32 noundef %211) #12
  store ptr %212, ptr %10, align 8, !tbaa !9
  %213 = getelementptr inbounds i8, ptr %212, i64 232
  %214 = load ptr, ptr %213, align 8, !tbaa !28
  store ptr %3, ptr %214, align 8, !tbaa !54
  %215 = load ptr, ptr %10, align 8, !tbaa !9
  %216 = getelementptr inbounds i8, ptr %215, i64 220
  store i8 34, ptr %216, align 4, !tbaa !59
  %217 = load i32, ptr @test_count, align 4, !tbaa !5
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr @test_count, align 4, !tbaa !5
  %219 = getelementptr inbounds i8, ptr %215, i64 384
  %220 = call i32 @s2n_set_test_secret(ptr noundef %215, ptr noundef nonnull %219, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %7)
  %221 = call zeroext i1 @s2n_result_is_ok(i32 %220)
  br i1 %221, label %246, label %222

222:                                              ; preds = %410, %.preheader284
  %223 = tail call ptr @__errno_location() #13
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = load ptr, ptr @stderr, align 8, !tbaa !9
  %226 = call i32 @s2n_print_stacktrace(ptr noundef %225) #12
  %227 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %228 = trunc nuw i8 %227 to i1
  br i1 %228, label %229, label %233

229:                                              ; preds = %222
  %230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %231 = call i32 @fileno(ptr noundef %230) #12
  %232 = call i32 @isatty(i32 noundef %231) #12
  %.not241 = icmp eq i32 %232, 0
  br i1 %.not241, label %233, label %234

233:                                              ; preds = %229, %222
  br label %234

234:                                              ; preds = %229, %233
  %.str.5.sink354 = phi ptr [ @.str.5, %233 ], [ @.str.2, %229 ]
  store i32 %224, ptr %223, align 4, !tbaa !5
  %235 = load ptr, ptr @stderr, align 8, !tbaa !9
  %236 = load i32, ptr @test_count, align 4, !tbaa !5
  %237 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %238 = load i32, ptr %237, align 4, !tbaa !5
  %239 = call ptr @s2n_strerror(i32 noundef %238, ptr noundef nonnull @.str.4) #12
  %240 = load i32, ptr %237, align 4, !tbaa !5
  %241 = call ptr @s2n_strerror_debug(i32 noundef %240, ptr noundef nonnull @.str.4) #12
  %242 = load i32, ptr %223, align 4, !tbaa !5
  %243 = call ptr @strerror(i32 noundef %242) #12
  %244 = load i32, ptr %223, align 4, !tbaa !5
  %245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %235, ptr noundef nonnull %.str.5.sink354, i32 noundef %236, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 141, ptr noundef %239, ptr noundef %241, ptr noundef %243, i32 noundef %244) #14
  call void @exit(i32 noundef 1) #15
  unreachable

246:                                              ; preds = %.preheader284
  %247 = load ptr, ptr %10, align 8, !tbaa !9
  %248 = getelementptr inbounds i8, ptr %247, i64 2172
  store i32 3, ptr %248, align 4, !tbaa !60
  %249 = getelementptr inbounds i8, ptr %247, i64 2176
  store i32 1, ptr %249, align 8, !tbaa !61
  %250 = load i32, ptr @test_count, align 4, !tbaa !5
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr @test_count, align 4, !tbaa !5
  %252 = call i32 @s2n_conn_get_current_message_type(ptr noundef %247) #12
  %253 = icmp eq i32 %252, 1
  br i1 %253, label %278, label %254

254:                                              ; preds = %423, %246
  %255 = tail call ptr @__errno_location() #13
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %258 = call i32 @s2n_print_stacktrace(ptr noundef %257) #12
  %259 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %260 = trunc nuw i8 %259 to i1
  br i1 %260, label %261, label %265

261:                                              ; preds = %254
  %262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %263 = call i32 @fileno(ptr noundef %262) #12
  %264 = call i32 @isatty(i32 noundef %263) #12
  %.not242 = icmp eq i32 %264, 0
  br i1 %.not242, label %265, label %266

265:                                              ; preds = %261, %254
  br label %266

266:                                              ; preds = %261, %265
  %.str.5.sink365 = phi ptr [ @.str.5, %265 ], [ @.str.2, %261 ]
  store i32 %256, ptr %255, align 4, !tbaa !5
  %267 = load ptr, ptr @stderr, align 8, !tbaa !9
  %268 = load i32, ptr @test_count, align 4, !tbaa !5
  %269 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %270 = load i32, ptr %269, align 4, !tbaa !5
  %271 = call ptr @s2n_strerror(i32 noundef %270, ptr noundef nonnull @.str.4) #12
  %272 = load i32, ptr %269, align 4, !tbaa !5
  %273 = call ptr @s2n_strerror_debug(i32 noundef %272, ptr noundef nonnull @.str.4) #12
  %274 = load i32, ptr %255, align 4, !tbaa !5
  %275 = call ptr @strerror(i32 noundef %274) #12
  %276 = load i32, ptr %255, align 4, !tbaa !5
  %277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %267, ptr noundef nonnull %.str.5.sink365, i32 noundef %268, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 145, ptr noundef %271, ptr noundef %273, ptr noundef %275, i32 noundef %276) #14
  call void @exit(i32 noundef 1) #15
  unreachable

278:                                              ; preds = %246
  %279 = load i32, ptr @test_count, align 4, !tbaa !5
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr @test_count, align 4, !tbaa !5
  %281 = load ptr, ptr %10, align 8, !tbaa !9
  %282 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %281) #12
  %283 = call zeroext i1 @s2n_result_is_ok(i32 %282)
  br i1 %283, label %308, label %284

284:                                              ; preds = %431, %278
  %285 = tail call ptr @__errno_location() #13
  %286 = load i32, ptr %285, align 4, !tbaa !5
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = call i32 @s2n_print_stacktrace(ptr noundef %287) #12
  %289 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %290 = trunc nuw i8 %289 to i1
  br i1 %290, label %291, label %295

291:                                              ; preds = %284
  %292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %293 = call i32 @fileno(ptr noundef %292) #12
  %294 = call i32 @isatty(i32 noundef %293) #12
  %.not243 = icmp eq i32 %294, 0
  br i1 %.not243, label %295, label %296

295:                                              ; preds = %291, %284
  br label %296

296:                                              ; preds = %291, %295
  %.str.5.sink376 = phi ptr [ @.str.5, %295 ], [ @.str.2, %291 ]
  store i32 %286, ptr %285, align 4, !tbaa !5
  %297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %298 = load i32, ptr @test_count, align 4, !tbaa !5
  %299 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %300 = load i32, ptr %299, align 4, !tbaa !5
  %301 = call ptr @s2n_strerror(i32 noundef %300, ptr noundef nonnull @.str.4) #12
  %302 = load i32, ptr %299, align 4, !tbaa !5
  %303 = call ptr @s2n_strerror_debug(i32 noundef %302, ptr noundef nonnull @.str.4) #12
  %304 = load i32, ptr %285, align 4, !tbaa !5
  %305 = call ptr @strerror(i32 noundef %304) #12
  %306 = load i32, ptr %285, align 4, !tbaa !5
  %307 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %297, ptr noundef nonnull %.str.5.sink376, i32 noundef %298, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 146, ptr noundef %301, ptr noundef %303, ptr noundef %305, i32 noundef %306) #14
  call void @exit(i32 noundef 1) #15
  unreachable

308:                                              ; preds = %278
  %309 = load i32, ptr %209, align 8, !tbaa !62
  %.not244 = icmp eq i32 %309, 0
  %.pre = load ptr, ptr %10, align 8, !tbaa !9
  br i1 %.not244, label %343, label %310

310:                                              ; preds = %308
  %311 = load i32, ptr @test_count, align 4, !tbaa !5
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr @test_count, align 4, !tbaa !5
  %313 = getelementptr inbounds i8, ptr %.pre, i64 232
  %314 = load ptr, ptr %313, align 8, !tbaa !28
  %315 = getelementptr inbounds i8, ptr %314, i64 904
  %316 = load ptr, ptr %9, align 8, !tbaa !63
  %317 = zext i32 %309 to i64
  %bcmp245 = call i32 @bcmp(ptr nonnull %315, ptr %316, i64 %317)
  %318 = icmp eq i32 %bcmp245, 0
  br i1 %318, label %343, label %319

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

326:                                              ; preds = %319
  %327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %328 = call i32 @fileno(ptr noundef %327) #12
  %329 = call i32 @isatty(i32 noundef %328) #12
  %.not246 = icmp eq i32 %329, 0
  br i1 %.not246, label %330, label %331

330:                                              ; preds = %326, %319
  br label %331

331:                                              ; preds = %326, %330
  %.str.5.sink387 = phi ptr [ @.str.5, %330 ], [ @.str.2, %326 ]
  store i32 %321, ptr %320, align 4, !tbaa !5
  %332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %333 = load i32, ptr @test_count, align 4, !tbaa !5
  %334 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %335 = load i32, ptr %334, align 4, !tbaa !5
  %336 = call ptr @s2n_strerror(i32 noundef %335, ptr noundef nonnull @.str.4) #12
  %337 = load i32, ptr %334, align 4, !tbaa !5
  %338 = call ptr @s2n_strerror_debug(i32 noundef %337, ptr noundef nonnull @.str.4) #12
  %339 = load i32, ptr %320, align 4, !tbaa !5
  %340 = call ptr @strerror(i32 noundef %339) #12
  %341 = load i32, ptr %320, align 4, !tbaa !5
  %342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %332, ptr noundef nonnull %.str.5.sink387, i32 noundef %333, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 148, ptr noundef %336, ptr noundef %338, ptr noundef %340, i32 noundef %341) #14
  call void @exit(i32 noundef 1) #15
  unreachable

343:                                              ; preds = %310, %308
  %344 = getelementptr inbounds i8, ptr %.pre, i64 148
  %345 = load i32, ptr %344, align 4, !tbaa !64
  %346 = icmp eq i32 %345, 0
  %347 = load i32, ptr %210, align 8, !tbaa !62
  %.not250 = icmp eq i32 %347, 0
  br i1 %346, label %348, label %379

348:                                              ; preds = %343
  br i1 %.not250, label %410, label %349

349:                                              ; preds = %348
  %350 = load i32, ptr @test_count, align 4, !tbaa !5
  %351 = add nsw i32 %350, 1
  store i32 %351, ptr @test_count, align 4, !tbaa !5
  %352 = load ptr, ptr %8, align 8, !tbaa !63
  %353 = zext i32 %347 to i64
  %bcmp251 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %352, i64 %353)
  %354 = icmp eq i32 %bcmp251, 0
  br i1 %354, label %410, label %355

355:                                              ; preds = %461, %349
  %356 = tail call ptr @__errno_location() #13
  %357 = load i32, ptr %356, align 4, !tbaa !5
  %358 = load ptr, ptr @stderr, align 8, !tbaa !9
  %359 = call i32 @s2n_print_stacktrace(ptr noundef %358) #12
  %360 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %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 !9
  %364 = call i32 @fileno(ptr noundef %363) #12
  %365 = call i32 @isatty(i32 noundef %364) #12
  %.not252 = icmp eq i32 %365, 0
  br i1 %.not252, label %366, label %367

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

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

379:                                              ; preds = %343
  br i1 %.not250, label %410, label %380

380:                                              ; preds = %379
  %381 = load i32, ptr @test_count, align 4, !tbaa !5
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr @test_count, align 4, !tbaa !5
  %383 = load ptr, ptr %8, align 8, !tbaa !63
  %384 = zext i32 %347 to i64
  %bcmp248 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %383, i64 %384)
  %385 = icmp eq i32 %bcmp248, 0
  br i1 %385, label %410, label %386

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

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

397:                                              ; preds = %393, %386
  br label %398

398:                                              ; preds = %393, %397
  %.str.5.sink409 = phi ptr [ @.str.5, %397 ], [ @.str.2, %393 ]
  store i32 %388, ptr %387, align 4, !tbaa !5
  %399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %400 = load i32, ptr @test_count, align 4, !tbaa !5
  %401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %402 = load i32, ptr %401, align 4, !tbaa !5
  %403 = call ptr @s2n_strerror(i32 noundef %402, ptr noundef nonnull @.str.4) #12
  %404 = load i32, ptr %401, align 4, !tbaa !5
  %405 = call ptr @s2n_strerror_debug(i32 noundef %404, ptr noundef nonnull @.str.4) #12
  %406 = load i32, ptr %387, align 4, !tbaa !5
  %407 = call ptr @strerror(i32 noundef %406) #12
  %408 = load i32, ptr %387, align 4, !tbaa !5
  %409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %399, ptr noundef nonnull %.str.5.sink409, i32 noundef %400, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 149, ptr noundef %403, ptr noundef %405, ptr noundef %407, i32 noundef %408) #14
  call void @exit(i32 noundef 1) #15
  unreachable

410:                                              ; preds = %379, %380, %348, %349
  %411 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  %412 = load i32, ptr getelementptr inbounds (i8, ptr @modes, i64 4), align 4, !tbaa !5
  %413 = call ptr @s2n_connection_new(i32 noundef %412) #12
  store ptr %413, ptr %10, align 8, !tbaa !9
  %414 = getelementptr inbounds i8, ptr %413, i64 232
  %415 = load ptr, ptr %414, align 8, !tbaa !28
  store ptr %3, ptr %415, align 8, !tbaa !54
  %416 = load ptr, ptr %10, align 8, !tbaa !9
  %417 = getelementptr inbounds i8, ptr %416, i64 220
  store i8 34, ptr %417, align 4, !tbaa !59
  %418 = load i32, ptr @test_count, align 4, !tbaa !5
  %419 = add nsw i32 %418, 1
  store i32 %419, ptr @test_count, align 4, !tbaa !5
  %420 = getelementptr inbounds i8, ptr %416, i64 384
  %421 = call i32 @s2n_set_test_secret(ptr noundef %416, ptr noundef nonnull %420, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %7)
  %422 = call zeroext i1 @s2n_result_is_ok(i32 %421)
  br i1 %422, label %423, label %222

423:                                              ; preds = %410
  %424 = load ptr, ptr %10, align 8, !tbaa !9
  %425 = getelementptr inbounds i8, ptr %424, i64 2172
  store i32 3, ptr %425, align 4, !tbaa !60
  %426 = getelementptr inbounds i8, ptr %424, i64 2176
  store i32 1, ptr %426, align 8, !tbaa !61
  %427 = load i32, ptr @test_count, align 4, !tbaa !5
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr @test_count, align 4, !tbaa !5
  %429 = call i32 @s2n_conn_get_current_message_type(ptr noundef %424) #12
  %430 = icmp eq i32 %429, 1
  br i1 %430, label %431, label %254

431:                                              ; preds = %423
  %432 = load i32, ptr @test_count, align 4, !tbaa !5
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr @test_count, align 4, !tbaa !5
  %434 = load ptr, ptr %10, align 8, !tbaa !9
  %435 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %434) #12
  %436 = call zeroext i1 @s2n_result_is_ok(i32 %435)
  br i1 %436, label %437, label %284

437:                                              ; preds = %431
  %438 = load i32, ptr %209, align 8, !tbaa !62
  %.not244.1 = icmp eq i32 %438, 0
  %.pre291 = load ptr, ptr %10, align 8, !tbaa !9
  br i1 %.not244.1, label %448, label %439

439:                                              ; preds = %437
  %440 = load i32, ptr @test_count, align 4, !tbaa !5
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr @test_count, align 4, !tbaa !5
  %442 = getelementptr inbounds i8, ptr %.pre291, i64 232
  %443 = load ptr, ptr %442, align 8, !tbaa !28
  %444 = getelementptr inbounds i8, ptr %443, i64 904
  %445 = load ptr, ptr %9, align 8, !tbaa !63
  %446 = zext i32 %438 to i64
  %bcmp245.1 = call i32 @bcmp(ptr nonnull %444, ptr %445, i64 %446)
  %447 = icmp eq i32 %bcmp245.1, 0
  br i1 %447, label %448, label %319

448:                                              ; preds = %439, %437
  %449 = getelementptr inbounds i8, ptr %.pre291, i64 148
  %450 = load i32, ptr %449, align 4, !tbaa !64
  %451 = icmp eq i32 %450, 0
  %452 = load i32, ptr %210, align 8, !tbaa !62
  %.not250.1 = icmp eq i32 %452, 0
  br i1 %451, label %460, label %453

453:                                              ; preds = %448
  br i1 %.not250.1, label %.loopexit285.loopexit, label %454

454:                                              ; preds = %453
  %455 = load i32, ptr @test_count, align 4, !tbaa !5
  %456 = add nsw i32 %455, 1
  store i32 %456, ptr @test_count, align 4, !tbaa !5
  %457 = load ptr, ptr %8, align 8, !tbaa !63
  %458 = zext i32 %452 to i64
  %bcmp248.1 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %457, i64 %458)
  %459 = icmp eq i32 %bcmp248.1, 0
  br i1 %459, label %.loopexit285.loopexit, label %386

460:                                              ; preds = %448
  br i1 %.not250.1, label %.loopexit285.loopexit, label %461

461:                                              ; preds = %460
  %462 = load i32, ptr @test_count, align 4, !tbaa !5
  %463 = add nsw i32 %462, 1
  store i32 %463, ptr @test_count, align 4, !tbaa !5
  %464 = load ptr, ptr %8, align 8, !tbaa !63
  %465 = zext i32 %452 to i64
  %bcmp251.1 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %464, i64 %465)
  %466 = icmp eq i32 %bcmp251.1, 0
  br i1 %466, label %.loopexit285.loopexit, label %355

.loopexit285.loopexit:                            ; preds = %461, %460, %454, %453
  %467 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  br label %.loopexit285

.loopexit285:                                     ; preds = %.loopexit285.loopexit, %206
  %.0155 = phi i32 [ 1, %206 ], [ 0, %.loopexit285.loopexit ]
  %.0 = phi i32 [ -1, %206 ], [ 0, %.loopexit285.loopexit ]
  %468 = call i32 @s2n_free(ptr noundef nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #12
  br label %469

469:                                              ; preds = %.loopexit285, %203
  %.1156 = phi i32 [ %.0155, %.loopexit285 ], [ 1, %203 ]
  %.1 = phi i32 [ %.0, %.loopexit285 ], [ -1, %203 ]
  %470 = call i32 @s2n_free(ptr noundef nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #12
  %471 = call i32 @s2n_free(ptr noundef nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #12
  %cond = icmp eq i32 %.1156, 0
  br i1 %cond, label %472, label %.thread267

472:                                              ; preds = %469
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, i8 0, i64 24, i1 false)
  %473 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %11, ptr noundef nonnull @.str.23) #12
  %474 = call zeroext i1 @s2n_result_is_ok(i32 %473)
  br i1 %474, label %476, label %.thread259

.thread259:                                       ; preds = %472
  %475 = call i32 @s2n_free(ptr noundef nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #12
  br label %.thread267

476:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, i8 0, i64 24, i1 false)
  %477 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %12, ptr noundef nonnull @.str.24) #12
  %478 = call zeroext i1 @s2n_result_is_ok(i32 %477)
  br i1 %478, label %479, label %778

479:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, i8 0, i64 24, i1 false)
  %480 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %13, ptr noundef nonnull @.str.25) #12
  %481 = call zeroext i1 @s2n_result_is_ok(i32 %480)
  br i1 %481, label %.preheader282, label %.loopexit283

.preheader282:                                    ; preds = %479
  %482 = getelementptr inbounds i8, ptr %13, i64 8
  %483 = getelementptr inbounds i8, ptr %12, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %484 = load i32, ptr @modes, align 4, !tbaa !5
  %485 = call ptr @s2n_connection_new(i32 noundef %484) #12
  store ptr %485, ptr %14, align 8, !tbaa !9
  %486 = getelementptr inbounds i8, ptr %485, i64 232
  %487 = load ptr, ptr %486, align 8, !tbaa !28
  store ptr %3, ptr %487, align 8, !tbaa !54
  %488 = load ptr, ptr %14, align 8, !tbaa !9
  %489 = getelementptr inbounds i8, ptr %488, i64 220
  store i8 34, ptr %489, align 4, !tbaa !59
  %490 = load i32, ptr @test_count, align 4, !tbaa !5
  %491 = add nsw i32 %490, 1
  store i32 %491, ptr @test_count, align 4, !tbaa !5
  %492 = call i32 @s2n_conn_choose_state_machine(ptr noundef %488, i8 noundef zeroext 34) #12
  %493 = call zeroext i1 @s2n_result_is_ok(i32 %492)
  br i1 %493, label %518, label %494

494:                                              ; preds = %713, %.preheader282
  %495 = tail call ptr @__errno_location() #13
  %496 = load i32, ptr %495, align 4, !tbaa !5
  %497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %498 = call i32 @s2n_print_stacktrace(ptr noundef %497) #12
  %499 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %500 = trunc nuw i8 %499 to i1
  br i1 %500, label %501, label %505

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

505:                                              ; preds = %501, %494
  br label %506

506:                                              ; preds = %501, %505
  %.str.5.sink420 = phi ptr [ @.str.5, %505 ], [ @.str.2, %501 ]
  store i32 %496, ptr %495, align 4, !tbaa !5
  %507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %508 = load i32, ptr @test_count, align 4, !tbaa !5
  %509 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %510 = load i32, ptr %509, align 4, !tbaa !5
  %511 = call ptr @s2n_strerror(i32 noundef %510, ptr noundef nonnull @.str.4) #12
  %512 = load i32, ptr %509, align 4, !tbaa !5
  %513 = call ptr @s2n_strerror_debug(i32 noundef %512, ptr noundef nonnull @.str.4) #12
  %514 = load i32, ptr %495, align 4, !tbaa !5
  %515 = call ptr @strerror(i32 noundef %514) #12
  %516 = load i32, ptr %495, align 4, !tbaa !5
  %517 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %507, ptr noundef nonnull %.str.5.sink420, i32 noundef %508, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 187, ptr noundef %511, ptr noundef %513, ptr noundef %515, i32 noundef %516) #14
  call void @exit(i32 noundef 1) #15
  unreachable

518:                                              ; preds = %.preheader282
  %519 = load i32, ptr @test_count, align 4, !tbaa !5
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr @test_count, align 4, !tbaa !5
  %521 = load ptr, ptr %14, align 8, !tbaa !9
  %522 = getelementptr inbounds i8, ptr %521, i64 336
  %523 = call i32 @s2n_set_test_secret(ptr noundef %521, ptr noundef nonnull %522, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %11)
  %524 = call zeroext i1 @s2n_result_is_ok(i32 %523)
  br i1 %524, label %549, label %525

525:                                              ; preds = %725, %518
  %526 = tail call ptr @__errno_location() #13
  %527 = load i32, ptr %526, align 4, !tbaa !5
  %528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %529 = call i32 @s2n_print_stacktrace(ptr noundef %528) #12
  %530 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %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 !9
  %534 = call i32 @fileno(ptr noundef %533) #12
  %535 = call i32 @isatty(i32 noundef %534) #12
  %.not229 = icmp eq i32 %535, 0
  br i1 %.not229, label %536, label %537

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

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

549:                                              ; preds = %518
  %550 = load ptr, ptr %14, align 8, !tbaa !9
  %551 = getelementptr inbounds i8, ptr %550, i64 2172
  store i32 3, ptr %551, align 4, !tbaa !60
  %552 = getelementptr inbounds i8, ptr %550, i64 2176
  store i32 5, ptr %552, align 8, !tbaa !61
  %553 = load i32, ptr @test_count, align 4, !tbaa !5
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr @test_count, align 4, !tbaa !5
  %555 = call i32 @s2n_conn_get_current_message_type(ptr noundef %550) #12
  %556 = icmp eq i32 %555, 15
  br i1 %556, label %581, label %557

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

564:                                              ; preds = %557
  %565 = load ptr, ptr @stderr, align 8, !tbaa !9
  %566 = call i32 @fileno(ptr noundef %565) #12
  %567 = call i32 @isatty(i32 noundef %566) #12
  %.not230 = icmp eq i32 %567, 0
  br i1 %.not230, label %568, label %569

568:                                              ; preds = %564, %557
  br label %569

569:                                              ; preds = %564, %568
  %.str.5.sink442 = phi ptr [ @.str.5, %568 ], [ @.str.2, %564 ]
  store i32 %559, ptr %558, align 4, !tbaa !5
  %570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %571 = load i32, ptr @test_count, align 4, !tbaa !5
  %572 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %573 = load i32, ptr %572, align 4, !tbaa !5
  %574 = call ptr @s2n_strerror(i32 noundef %573, ptr noundef nonnull @.str.4) #12
  %575 = load i32, ptr %572, align 4, !tbaa !5
  %576 = call ptr @s2n_strerror_debug(i32 noundef %575, ptr noundef nonnull @.str.4) #12
  %577 = load i32, ptr %558, align 4, !tbaa !5
  %578 = call ptr @strerror(i32 noundef %577) #12
  %579 = load i32, ptr %558, align 4, !tbaa !5
  %580 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %570, ptr noundef nonnull %.str.5.sink442, i32 noundef %571, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 192, ptr noundef %574, ptr noundef %576, ptr noundef %578, i32 noundef %579) #14
  call void @exit(i32 noundef 1) #15
  unreachable

581:                                              ; preds = %549
  %582 = load i32, ptr @test_count, align 4, !tbaa !5
  %583 = add nsw i32 %582, 1
  store i32 %583, ptr @test_count, align 4, !tbaa !5
  %584 = load ptr, ptr %14, align 8, !tbaa !9
  %585 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %584) #12
  %586 = call zeroext i1 @s2n_result_is_ok(i32 %585)
  br i1 %586, label %611, label %587

587:                                              ; preds = %740, %581
  %588 = tail call ptr @__errno_location() #13
  %589 = load i32, ptr %588, align 4, !tbaa !5
  %590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %591 = call i32 @s2n_print_stacktrace(ptr noundef %590) #12
  %592 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %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 !9
  %596 = call i32 @fileno(ptr noundef %595) #12
  %597 = call i32 @isatty(i32 noundef %596) #12
  %.not231 = icmp eq i32 %597, 0
  br i1 %.not231, label %598, label %599

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

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

611:                                              ; preds = %581
  %612 = load i32, ptr %482, align 8, !tbaa !62
  %.not232 = icmp eq i32 %612, 0
  %.pre292 = load ptr, ptr %14, align 8, !tbaa !9
  br i1 %.not232, label %646, label %613

613:                                              ; preds = %611
  %614 = load i32, ptr @test_count, align 4, !tbaa !5
  %615 = add nsw i32 %614, 1
  store i32 %615, ptr @test_count, align 4, !tbaa !5
  %616 = getelementptr inbounds i8, ptr %.pre292, i64 232
  %617 = load ptr, ptr %616, align 8, !tbaa !28
  %618 = getelementptr inbounds i8, ptr %617, i64 888
  %619 = load ptr, ptr %13, align 8, !tbaa !63
  %620 = zext i32 %612 to i64
  %bcmp233 = call i32 @bcmp(ptr nonnull %618, ptr %619, i64 %620)
  %621 = icmp eq i32 %bcmp233, 0
  br i1 %621, label %646, label %622

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

629:                                              ; preds = %622
  %630 = load ptr, ptr @stderr, align 8, !tbaa !9
  %631 = call i32 @fileno(ptr noundef %630) #12
  %632 = call i32 @isatty(i32 noundef %631) #12
  %.not234 = icmp eq i32 %632, 0
  br i1 %.not234, label %633, label %634

633:                                              ; preds = %629, %622
  br label %634

634:                                              ; preds = %629, %633
  %.str.5.sink464 = phi ptr [ @.str.5, %633 ], [ @.str.2, %629 ]
  store i32 %624, ptr %623, align 4, !tbaa !5
  %635 = load ptr, ptr @stderr, align 8, !tbaa !9
  %636 = load i32, ptr @test_count, align 4, !tbaa !5
  %637 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %638 = load i32, ptr %637, align 4, !tbaa !5
  %639 = call ptr @s2n_strerror(i32 noundef %638, ptr noundef nonnull @.str.4) #12
  %640 = load i32, ptr %637, align 4, !tbaa !5
  %641 = call ptr @s2n_strerror_debug(i32 noundef %640, ptr noundef nonnull @.str.4) #12
  %642 = load i32, ptr %623, align 4, !tbaa !5
  %643 = call ptr @strerror(i32 noundef %642) #12
  %644 = load i32, ptr %623, align 4, !tbaa !5
  %645 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %635, ptr noundef nonnull %.str.5.sink464, i32 noundef %636, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 195, ptr noundef %639, ptr noundef %641, ptr noundef %643, i32 noundef %644) #14
  call void @exit(i32 noundef 1) #15
  unreachable

646:                                              ; preds = %613, %611
  %647 = getelementptr inbounds i8, ptr %.pre292, i64 148
  %648 = load i32, ptr %647, align 4, !tbaa !64
  %649 = icmp eq i32 %648, 1
  %650 = load i32, ptr %483, align 8, !tbaa !62
  %.not238 = icmp eq i32 %650, 0
  br i1 %649, label %651, label %682

651:                                              ; preds = %646
  br i1 %.not238, label %713, label %652

652:                                              ; preds = %651
  %653 = load i32, ptr @test_count, align 4, !tbaa !5
  %654 = add nsw i32 %653, 1
  store i32 %654, ptr @test_count, align 4, !tbaa !5
  %655 = load ptr, ptr %12, align 8, !tbaa !63
  %656 = zext i32 %650 to i64
  %bcmp239 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %655, i64 %656)
  %657 = icmp eq i32 %bcmp239, 0
  br i1 %657, label %713, label %658

658:                                              ; preds = %770, %652
  %659 = tail call ptr @__errno_location() #13
  %660 = load i32, ptr %659, align 4, !tbaa !5
  %661 = load ptr, ptr @stderr, align 8, !tbaa !9
  %662 = call i32 @s2n_print_stacktrace(ptr noundef %661) #12
  %663 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %664 = trunc nuw i8 %663 to i1
  br i1 %664, label %665, label %669

665:                                              ; preds = %658
  %666 = load ptr, ptr @stderr, align 8, !tbaa !9
  %667 = call i32 @fileno(ptr noundef %666) #12
  %668 = call i32 @isatty(i32 noundef %667) #12
  %.not240 = icmp eq i32 %668, 0
  br i1 %.not240, label %669, label %670

669:                                              ; preds = %665, %658
  br label %670

670:                                              ; preds = %665, %669
  %.str.5.sink475 = phi ptr [ @.str.5, %669 ], [ @.str.2, %665 ]
  store i32 %660, ptr %659, align 4, !tbaa !5
  %671 = load ptr, ptr @stderr, align 8, !tbaa !9
  %672 = load i32, ptr @test_count, align 4, !tbaa !5
  %673 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %674 = load i32, ptr %673, align 4, !tbaa !5
  %675 = call ptr @s2n_strerror(i32 noundef %674, ptr noundef nonnull @.str.4) #12
  %676 = load i32, ptr %673, align 4, !tbaa !5
  %677 = call ptr @s2n_strerror_debug(i32 noundef %676, ptr noundef nonnull @.str.4) #12
  %678 = load i32, ptr %659, align 4, !tbaa !5
  %679 = call ptr @strerror(i32 noundef %678) #12
  %680 = load i32, ptr %659, align 4, !tbaa !5
  %681 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %671, ptr noundef nonnull %.str.5.sink475, i32 noundef %672, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 196, ptr noundef %675, ptr noundef %677, ptr noundef %679, i32 noundef %680) #14
  call void @exit(i32 noundef 1) #15
  unreachable

682:                                              ; preds = %646
  br i1 %.not238, label %713, label %683

683:                                              ; preds = %682
  %684 = load i32, ptr @test_count, align 4, !tbaa !5
  %685 = add nsw i32 %684, 1
  store i32 %685, ptr @test_count, align 4, !tbaa !5
  %686 = load ptr, ptr %12, align 8, !tbaa !63
  %687 = zext i32 %650 to i64
  %bcmp236 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %686, i64 %687)
  %688 = icmp eq i32 %bcmp236, 0
  br i1 %688, label %713, label %689

689:                                              ; preds = %763, %683
  %690 = tail call ptr @__errno_location() #13
  %691 = load i32, ptr %690, align 4, !tbaa !5
  %692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %693 = call i32 @s2n_print_stacktrace(ptr noundef %692) #12
  %694 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %695 = trunc nuw i8 %694 to i1
  br i1 %695, label %696, label %700

696:                                              ; preds = %689
  %697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %698 = call i32 @fileno(ptr noundef %697) #12
  %699 = call i32 @isatty(i32 noundef %698) #12
  %.not237 = icmp eq i32 %699, 0
  br i1 %.not237, label %700, label %701

700:                                              ; preds = %696, %689
  br label %701

701:                                              ; preds = %696, %700
  %.str.5.sink486 = phi ptr [ @.str.5, %700 ], [ @.str.2, %696 ]
  store i32 %691, ptr %690, align 4, !tbaa !5
  %702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %703 = load i32, ptr @test_count, align 4, !tbaa !5
  %704 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %705 = load i32, ptr %704, align 4, !tbaa !5
  %706 = call ptr @s2n_strerror(i32 noundef %705, ptr noundef nonnull @.str.4) #12
  %707 = load i32, ptr %704, align 4, !tbaa !5
  %708 = call ptr @s2n_strerror_debug(i32 noundef %707, ptr noundef nonnull @.str.4) #12
  %709 = load i32, ptr %690, align 4, !tbaa !5
  %710 = call ptr @strerror(i32 noundef %709) #12
  %711 = load i32, ptr %690, align 4, !tbaa !5
  %712 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %702, ptr noundef nonnull %.str.5.sink486, i32 noundef %703, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 196, ptr noundef %706, ptr noundef %708, ptr noundef %710, i32 noundef %711) #14
  call void @exit(i32 noundef 1) #15
  unreachable

713:                                              ; preds = %682, %683, %651, %652
  %714 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %715 = load i32, ptr getelementptr inbounds (i8, ptr @modes, i64 4), align 4, !tbaa !5
  %716 = call ptr @s2n_connection_new(i32 noundef %715) #12
  store ptr %716, ptr %14, align 8, !tbaa !9
  %717 = getelementptr inbounds i8, ptr %716, i64 232
  %718 = load ptr, ptr %717, align 8, !tbaa !28
  store ptr %3, ptr %718, align 8, !tbaa !54
  %719 = load ptr, ptr %14, align 8, !tbaa !9
  %720 = getelementptr inbounds i8, ptr %719, i64 220
  store i8 34, ptr %720, align 4, !tbaa !59
  %721 = load i32, ptr @test_count, align 4, !tbaa !5
  %722 = add nsw i32 %721, 1
  store i32 %722, ptr @test_count, align 4, !tbaa !5
  %723 = call i32 @s2n_conn_choose_state_machine(ptr noundef %719, i8 noundef zeroext 34) #12
  %724 = call zeroext i1 @s2n_result_is_ok(i32 %723)
  br i1 %724, label %725, label %494

725:                                              ; preds = %713
  %726 = load i32, ptr @test_count, align 4, !tbaa !5
  %727 = add nsw i32 %726, 1
  store i32 %727, ptr @test_count, align 4, !tbaa !5
  %728 = load ptr, ptr %14, align 8, !tbaa !9
  %729 = getelementptr inbounds i8, ptr %728, i64 336
  %730 = call i32 @s2n_set_test_secret(ptr noundef %728, ptr noundef nonnull %729, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %11)
  %731 = call zeroext i1 @s2n_result_is_ok(i32 %730)
  br i1 %731, label %732, label %525

732:                                              ; preds = %725
  %733 = load ptr, ptr %14, align 8, !tbaa !9
  %734 = getelementptr inbounds i8, ptr %733, i64 2172
  store i32 3, ptr %734, align 4, !tbaa !60
  %735 = getelementptr inbounds i8, ptr %733, i64 2176
  store i32 5, ptr %735, align 8, !tbaa !61
  %736 = load i32, ptr @test_count, align 4, !tbaa !5
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr @test_count, align 4, !tbaa !5
  %738 = call i32 @s2n_conn_get_current_message_type(ptr noundef %733) #12
  %739 = icmp eq i32 %738, 15
  br i1 %739, label %740, label %557

740:                                              ; preds = %732
  %741 = load i32, ptr @test_count, align 4, !tbaa !5
  %742 = add nsw i32 %741, 1
  store i32 %742, ptr @test_count, align 4, !tbaa !5
  %743 = load ptr, ptr %14, align 8, !tbaa !9
  %744 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %743) #12
  %745 = call zeroext i1 @s2n_result_is_ok(i32 %744)
  br i1 %745, label %746, label %587

746:                                              ; preds = %740
  %747 = load i32, ptr %482, align 8, !tbaa !62
  %.not232.1 = icmp eq i32 %747, 0
  %.pre293 = load ptr, ptr %14, align 8, !tbaa !9
  br i1 %.not232.1, label %757, label %748

748:                                              ; preds = %746
  %749 = load i32, ptr @test_count, align 4, !tbaa !5
  %750 = add nsw i32 %749, 1
  store i32 %750, ptr @test_count, align 4, !tbaa !5
  %751 = getelementptr inbounds i8, ptr %.pre293, i64 232
  %752 = load ptr, ptr %751, align 8, !tbaa !28
  %753 = getelementptr inbounds i8, ptr %752, i64 888
  %754 = load ptr, ptr %13, align 8, !tbaa !63
  %755 = zext i32 %747 to i64
  %bcmp233.1 = call i32 @bcmp(ptr nonnull %753, ptr %754, i64 %755)
  %756 = icmp eq i32 %bcmp233.1, 0
  br i1 %756, label %757, label %622

757:                                              ; preds = %748, %746
  %758 = getelementptr inbounds i8, ptr %.pre293, i64 148
  %759 = load i32, ptr %758, align 4, !tbaa !64
  %760 = icmp eq i32 %759, 1
  %761 = load i32, ptr %483, align 8, !tbaa !62
  %.not238.1 = icmp eq i32 %761, 0
  br i1 %760, label %769, label %762

762:                                              ; preds = %757
  br i1 %.not238.1, label %.loopexit283.loopexit, label %763

763:                                              ; preds = %762
  %764 = load i32, ptr @test_count, align 4, !tbaa !5
  %765 = add nsw i32 %764, 1
  store i32 %765, ptr @test_count, align 4, !tbaa !5
  %766 = load ptr, ptr %12, align 8, !tbaa !63
  %767 = zext i32 %761 to i64
  %bcmp236.1 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %766, i64 %767)
  %768 = icmp eq i32 %bcmp236.1, 0
  br i1 %768, label %.loopexit283.loopexit, label %689

769:                                              ; preds = %757
  br i1 %.not238.1, label %.loopexit283.loopexit, label %770

770:                                              ; preds = %769
  %771 = load i32, ptr @test_count, align 4, !tbaa !5
  %772 = add nsw i32 %771, 1
  store i32 %772, ptr @test_count, align 4, !tbaa !5
  %773 = load ptr, ptr %12, align 8, !tbaa !63
  %774 = zext i32 %761 to i64
  %bcmp239.1 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %773, i64 %774)
  %775 = icmp eq i32 %bcmp239.1, 0
  br i1 %775, label %.loopexit283.loopexit, label %658

.loopexit283.loopexit:                            ; preds = %770, %769, %763, %762
  %776 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  br label %.loopexit283

.loopexit283:                                     ; preds = %.loopexit283.loopexit, %479
  %.3158 = phi i32 [ 1, %479 ], [ 0, %.loopexit283.loopexit ]
  %.3 = phi i32 [ -1, %479 ], [ %.1, %.loopexit283.loopexit ]
  %777 = call i32 @s2n_free(ptr noundef nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #12
  br label %778

778:                                              ; preds = %.loopexit283, %476
  %.4159 = phi i32 [ %.3158, %.loopexit283 ], [ 1, %476 ]
  %.4 = phi i32 [ %.3, %.loopexit283 ], [ -1, %476 ]
  %779 = call i32 @s2n_free(ptr noundef nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #12
  %780 = call i32 @s2n_free(ptr noundef nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #12
  %cond4 = icmp eq i32 %.4159, 0
  br i1 %cond4, label %781, label %.thread267

781:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, i8 0, i64 24, i1 false)
  %782 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %15, ptr noundef nonnull @.str.30) #12
  %783 = call zeroext i1 @s2n_result_is_ok(i32 %782)
  br i1 %783, label %785, label %.thread263

.thread263:                                       ; preds = %781
  %784 = call i32 @s2n_free(ptr noundef nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #12
  br label %.thread267

785:                                              ; preds = %781
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %16, i8 0, i64 24, i1 false)
  %786 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %16, ptr noundef nonnull @.str.31) #12
  %787 = call zeroext i1 @s2n_result_is_ok(i32 %786)
  br i1 %787, label %788, label %1099

788:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %17, i8 0, i64 24, i1 false)
  %789 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %17, ptr noundef nonnull @.str.32) #12
  %790 = call zeroext i1 @s2n_result_is_ok(i32 %789)
  br i1 %790, label %.preheader280, label %.loopexit281

.preheader280:                                    ; preds = %788
  %791 = getelementptr inbounds i8, ptr %17, i64 8
  %792 = getelementptr inbounds i8, ptr %16, i64 8
  %793 = load i32, ptr @modes, align 4, !tbaa !5
  %794 = zext i32 %793 to i64
  %795 = getelementptr inbounds [2 x i32], ptr @__const.main.trigger_messages, i64 0, i64 %794
  %796 = load i32, ptr %795, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %797 = call ptr @s2n_connection_new(i32 noundef %793) #12
  store ptr %797, ptr %18, align 8, !tbaa !9
  %798 = getelementptr inbounds i8, ptr %797, i64 232
  %799 = load ptr, ptr %798, align 8, !tbaa !28
  store ptr %3, ptr %799, align 8, !tbaa !54
  %800 = load ptr, ptr %18, align 8, !tbaa !9
  %801 = getelementptr inbounds i8, ptr %800, i64 220
  store i8 34, ptr %801, align 4, !tbaa !59
  %802 = load i32, ptr @test_count, align 4, !tbaa !5
  %803 = add nsw i32 %802, 1
  store i32 %803, ptr @test_count, align 4, !tbaa !5
  %804 = call i32 @s2n_conn_choose_state_machine(ptr noundef %800, i8 noundef zeroext 34) #12
  %805 = call zeroext i1 @s2n_result_is_ok(i32 %804)
  br i1 %805, label %830, label %806

806:                                              ; preds = %1028, %.preheader280
  %807 = tail call ptr @__errno_location() #13
  %808 = load i32, ptr %807, align 4, !tbaa !5
  %809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %810 = call i32 @s2n_print_stacktrace(ptr noundef %809) #12
  %811 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %812 = trunc nuw i8 %811 to i1
  br i1 %812, label %813, label %817

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

817:                                              ; preds = %813, %806
  br label %818

818:                                              ; preds = %813, %817
  %.str.5.sink497 = phi ptr [ @.str.5, %817 ], [ @.str.2, %813 ]
  store i32 %808, ptr %807, align 4, !tbaa !5
  %819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %820 = load i32, ptr @test_count, align 4, !tbaa !5
  %821 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %822 = load i32, ptr %821, align 4, !tbaa !5
  %823 = call ptr @s2n_strerror(i32 noundef %822, ptr noundef nonnull @.str.4) #12
  %824 = load i32, ptr %821, align 4, !tbaa !5
  %825 = call ptr @s2n_strerror_debug(i32 noundef %824, ptr noundef nonnull @.str.4) #12
  %826 = load i32, ptr %807, align 4, !tbaa !5
  %827 = call ptr @strerror(i32 noundef %826) #12
  %828 = load i32, ptr %807, align 4, !tbaa !5
  %829 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %819, ptr noundef nonnull %.str.5.sink497, i32 noundef %820, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 240, ptr noundef %823, ptr noundef %825, ptr noundef %827, i32 noundef %828) #14
  call void @exit(i32 noundef 1) #15
  unreachable

830:                                              ; preds = %.preheader280
  %831 = load i32, ptr @test_count, align 4, !tbaa !5
  %832 = add nsw i32 %831, 1
  store i32 %832, ptr @test_count, align 4, !tbaa !5
  %833 = load ptr, ptr %18, align 8, !tbaa !9
  %834 = getelementptr inbounds i8, ptr %833, i64 480
  %835 = call i32 @s2n_set_test_secret(ptr noundef %833, ptr noundef nonnull %834, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %15)
  %836 = call zeroext i1 @s2n_result_is_ok(i32 %835)
  br i1 %836, label %861, label %837

837:                                              ; preds = %1043, %830
  %838 = tail call ptr @__errno_location() #13
  %839 = load i32, ptr %838, align 4, !tbaa !5
  %840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %841 = call i32 @s2n_print_stacktrace(ptr noundef %840) #12
  %842 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %843 = trunc nuw i8 %842 to i1
  br i1 %843, label %844, label %848

844:                                              ; preds = %837
  %845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %846 = call i32 @fileno(ptr noundef %845) #12
  %847 = call i32 @isatty(i32 noundef %846) #12
  %.not216 = icmp eq i32 %847, 0
  br i1 %.not216, label %848, label %849

848:                                              ; preds = %844, %837
  br label %849

849:                                              ; preds = %844, %848
  %.str.5.sink508 = phi ptr [ @.str.5, %848 ], [ @.str.2, %844 ]
  store i32 %839, ptr %838, align 4, !tbaa !5
  %850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %851 = load i32, ptr @test_count, align 4, !tbaa !5
  %852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %853 = load i32, ptr %852, align 4, !tbaa !5
  %854 = call ptr @s2n_strerror(i32 noundef %853, ptr noundef nonnull @.str.4) #12
  %855 = load i32, ptr %852, align 4, !tbaa !5
  %856 = call ptr @s2n_strerror_debug(i32 noundef %855, ptr noundef nonnull @.str.4) #12
  %857 = load i32, ptr %838, align 4, !tbaa !5
  %858 = call ptr @strerror(i32 noundef %857) #12
  %859 = load i32, ptr %838, align 4, !tbaa !5
  %860 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %850, ptr noundef nonnull %.str.5.sink508, i32 noundef %851, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 241, ptr noundef %854, ptr noundef %856, ptr noundef %858, i32 noundef %859) #14
  call void @exit(i32 noundef 1) #15
  unreachable

861:                                              ; preds = %830
  %862 = load ptr, ptr %18, align 8, !tbaa !9
  %863 = getelementptr inbounds i8, ptr %862, i64 2172
  store i32 3, ptr %863, align 4, !tbaa !60
  %864 = zext i32 %796 to i64
  %865 = getelementptr inbounds [16 x i32], ptr %6, i64 0, i64 %864
  %866 = load i32, ptr %865, align 4, !tbaa !5
  %867 = getelementptr inbounds i8, ptr %862, i64 2176
  store i32 %866, ptr %867, align 8, !tbaa !61
  %868 = load i32, ptr @test_count, align 4, !tbaa !5
  %869 = add nsw i32 %868, 1
  store i32 %869, ptr @test_count, align 4, !tbaa !5
  %870 = call i32 @s2n_conn_get_current_message_type(ptr noundef %862) #12
  %871 = icmp eq i32 %870, %796
  br i1 %871, label %896, label %872

872:                                              ; preds = %1050, %861
  %873 = tail call ptr @__errno_location() #13
  %874 = load i32, ptr %873, align 4, !tbaa !5
  %875 = load ptr, ptr @stderr, align 8, !tbaa !9
  %876 = call i32 @s2n_print_stacktrace(ptr noundef %875) #12
  %877 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %878 = trunc nuw i8 %877 to i1
  br i1 %878, label %879, label %883

879:                                              ; preds = %872
  %880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %881 = call i32 @fileno(ptr noundef %880) #12
  %882 = call i32 @isatty(i32 noundef %881) #12
  %.not217 = icmp eq i32 %882, 0
  br i1 %.not217, label %883, label %884

883:                                              ; preds = %879, %872
  br label %884

884:                                              ; preds = %879, %883
  %.str.5.sink519 = phi ptr [ @.str.5, %883 ], [ @.str.2, %879 ]
  store i32 %874, ptr %873, align 4, !tbaa !5
  %885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %886 = load i32, ptr @test_count, align 4, !tbaa !5
  %887 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %888 = load i32, ptr %887, align 4, !tbaa !5
  %889 = call ptr @s2n_strerror(i32 noundef %888, ptr noundef nonnull @.str.4) #12
  %890 = load i32, ptr %887, align 4, !tbaa !5
  %891 = call ptr @s2n_strerror_debug(i32 noundef %890, ptr noundef nonnull @.str.4) #12
  %892 = load i32, ptr %873, align 4, !tbaa !5
  %893 = call ptr @strerror(i32 noundef %892) #12
  %894 = load i32, ptr %873, align 4, !tbaa !5
  %895 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %885, ptr noundef nonnull %.str.5.sink519, i32 noundef %886, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 245, ptr noundef %889, ptr noundef %891, ptr noundef %893, i32 noundef %894) #14
  call void @exit(i32 noundef 1) #15
  unreachable

896:                                              ; preds = %861
  %897 = load i32, ptr @test_count, align 4, !tbaa !5
  %898 = add nsw i32 %897, 1
  store i32 %898, ptr @test_count, align 4, !tbaa !5
  %899 = load ptr, ptr %18, align 8, !tbaa !9
  %900 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %899) #12
  %901 = call zeroext i1 @s2n_result_is_ok(i32 %900)
  br i1 %901, label %926, label %902

902:                                              ; preds = %1061, %896
  %903 = tail call ptr @__errno_location() #13
  %904 = load i32, ptr %903, align 4, !tbaa !5
  %905 = load ptr, ptr @stderr, align 8, !tbaa !9
  %906 = call i32 @s2n_print_stacktrace(ptr noundef %905) #12
  %907 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %908 = trunc nuw i8 %907 to i1
  br i1 %908, label %909, label %913

909:                                              ; preds = %902
  %910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %911 = call i32 @fileno(ptr noundef %910) #12
  %912 = call i32 @isatty(i32 noundef %911) #12
  %.not218 = icmp eq i32 %912, 0
  br i1 %.not218, label %913, label %914

913:                                              ; preds = %909, %902
  br label %914

914:                                              ; preds = %909, %913
  %.str.5.sink530 = phi ptr [ @.str.5, %913 ], [ @.str.2, %909 ]
  store i32 %904, ptr %903, align 4, !tbaa !5
  %915 = load ptr, ptr @stderr, align 8, !tbaa !9
  %916 = load i32, ptr @test_count, align 4, !tbaa !5
  %917 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %918 = load i32, ptr %917, align 4, !tbaa !5
  %919 = call ptr @s2n_strerror(i32 noundef %918, ptr noundef nonnull @.str.4) #12
  %920 = load i32, ptr %917, align 4, !tbaa !5
  %921 = call ptr @s2n_strerror_debug(i32 noundef %920, ptr noundef nonnull @.str.4) #12
  %922 = load i32, ptr %903, align 4, !tbaa !5
  %923 = call ptr @strerror(i32 noundef %922) #12
  %924 = load i32, ptr %903, align 4, !tbaa !5
  %925 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %915, ptr noundef nonnull %.str.5.sink530, i32 noundef %916, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 246, ptr noundef %919, ptr noundef %921, ptr noundef %923, i32 noundef %924) #14
  call void @exit(i32 noundef 1) #15
  unreachable

926:                                              ; preds = %896
  %927 = load i32, ptr %791, align 8, !tbaa !62
  %.not219 = icmp eq i32 %927, 0
  %.pre294 = load ptr, ptr %18, align 8, !tbaa !9
  br i1 %.not219, label %961, label %928

928:                                              ; preds = %926
  %929 = load i32, ptr @test_count, align 4, !tbaa !5
  %930 = add nsw i32 %929, 1
  store i32 %930, ptr @test_count, align 4, !tbaa !5
  %931 = getelementptr inbounds i8, ptr %.pre294, i64 232
  %932 = load ptr, ptr %931, align 8, !tbaa !28
  %933 = getelementptr inbounds i8, ptr %932, i64 904
  %934 = load ptr, ptr %17, align 8, !tbaa !63
  %935 = zext i32 %927 to i64
  %bcmp220 = call i32 @bcmp(ptr nonnull %933, ptr %934, i64 %935)
  %936 = icmp eq i32 %bcmp220, 0
  br i1 %936, label %961, label %937

937:                                              ; preds = %1069, %928
  %938 = tail call ptr @__errno_location() #13
  %939 = load i32, ptr %938, align 4, !tbaa !5
  %940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %941 = call i32 @s2n_print_stacktrace(ptr noundef %940) #12
  %942 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %943 = trunc nuw i8 %942 to i1
  br i1 %943, label %944, label %948

944:                                              ; preds = %937
  %945 = load ptr, ptr @stderr, align 8, !tbaa !9
  %946 = call i32 @fileno(ptr noundef %945) #12
  %947 = call i32 @isatty(i32 noundef %946) #12
  %.not221 = icmp eq i32 %947, 0
  br i1 %.not221, label %948, label %949

948:                                              ; preds = %944, %937
  br label %949

949:                                              ; preds = %944, %948
  %.str.5.sink541 = phi ptr [ @.str.5, %948 ], [ @.str.2, %944 ]
  store i32 %939, ptr %938, align 4, !tbaa !5
  %950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %951 = load i32, ptr @test_count, align 4, !tbaa !5
  %952 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %953 = load i32, ptr %952, align 4, !tbaa !5
  %954 = call ptr @s2n_strerror(i32 noundef %953, ptr noundef nonnull @.str.4) #12
  %955 = load i32, ptr %952, align 4, !tbaa !5
  %956 = call ptr @s2n_strerror_debug(i32 noundef %955, ptr noundef nonnull @.str.4) #12
  %957 = load i32, ptr %938, align 4, !tbaa !5
  %958 = call ptr @strerror(i32 noundef %957) #12
  %959 = load i32, ptr %938, align 4, !tbaa !5
  %960 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %950, ptr noundef nonnull %.str.5.sink541, i32 noundef %951, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 248, ptr noundef %954, ptr noundef %956, ptr noundef %958, i32 noundef %959) #14
  call void @exit(i32 noundef 1) #15
  unreachable

961:                                              ; preds = %928, %926
  %962 = getelementptr inbounds i8, ptr %.pre294, i64 148
  %963 = load i32, ptr %962, align 4, !tbaa !64
  %964 = icmp eq i32 %963, 0
  %965 = load i32, ptr %792, align 8, !tbaa !62
  %.not225 = icmp eq i32 %965, 0
  br i1 %964, label %966, label %997

966:                                              ; preds = %961
  br i1 %.not225, label %1028, label %967

967:                                              ; preds = %966
  %968 = load i32, ptr @test_count, align 4, !tbaa !5
  %969 = add nsw i32 %968, 1
  store i32 %969, ptr @test_count, align 4, !tbaa !5
  %970 = load ptr, ptr %16, align 8, !tbaa !63
  %971 = zext i32 %965 to i64
  %bcmp226 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %970, i64 %971)
  %972 = icmp eq i32 %bcmp226, 0
  br i1 %972, label %1028, label %973

973:                                              ; preds = %1091, %967
  %974 = tail call ptr @__errno_location() #13
  %975 = load i32, ptr %974, align 4, !tbaa !5
  %976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %977 = call i32 @s2n_print_stacktrace(ptr noundef %976) #12
  %978 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %979 = trunc nuw i8 %978 to i1
  br i1 %979, label %980, label %984

980:                                              ; preds = %973
  %981 = load ptr, ptr @stderr, align 8, !tbaa !9
  %982 = call i32 @fileno(ptr noundef %981) #12
  %983 = call i32 @isatty(i32 noundef %982) #12
  %.not227 = icmp eq i32 %983, 0
  br i1 %.not227, label %984, label %985

984:                                              ; preds = %980, %973
  br label %985

985:                                              ; preds = %980, %984
  %.str.5.sink552 = phi ptr [ @.str.5, %984 ], [ @.str.2, %980 ]
  store i32 %975, ptr %974, align 4, !tbaa !5
  %986 = load ptr, ptr @stderr, align 8, !tbaa !9
  %987 = load i32, ptr @test_count, align 4, !tbaa !5
  %988 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %989 = load i32, ptr %988, align 4, !tbaa !5
  %990 = call ptr @s2n_strerror(i32 noundef %989, ptr noundef nonnull @.str.4) #12
  %991 = load i32, ptr %988, align 4, !tbaa !5
  %992 = call ptr @s2n_strerror_debug(i32 noundef %991, ptr noundef nonnull @.str.4) #12
  %993 = load i32, ptr %974, align 4, !tbaa !5
  %994 = call ptr @strerror(i32 noundef %993) #12
  %995 = load i32, ptr %974, align 4, !tbaa !5
  %996 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %986, ptr noundef nonnull %.str.5.sink552, i32 noundef %987, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 249, ptr noundef %990, ptr noundef %992, ptr noundef %994, i32 noundef %995) #14
  call void @exit(i32 noundef 1) #15
  unreachable

997:                                              ; preds = %961
  br i1 %.not225, label %1028, label %998

998:                                              ; preds = %997
  %999 = load i32, ptr @test_count, align 4, !tbaa !5
  %1000 = add nsw i32 %999, 1
  store i32 %1000, ptr @test_count, align 4, !tbaa !5
  %1001 = load ptr, ptr %16, align 8, !tbaa !63
  %1002 = zext i32 %965 to i64
  %bcmp223 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %1001, i64 %1002)
  %1003 = icmp eq i32 %bcmp223, 0
  br i1 %1003, label %1028, label %1004

1004:                                             ; preds = %1084, %998
  %1005 = tail call ptr @__errno_location() #13
  %1006 = load i32, ptr %1005, align 4, !tbaa !5
  %1007 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1008 = call i32 @s2n_print_stacktrace(ptr noundef %1007) #12
  %1009 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1010 = trunc nuw i8 %1009 to i1
  br i1 %1010, label %1011, label %1015

1011:                                             ; preds = %1004
  %1012 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1013 = call i32 @fileno(ptr noundef %1012) #12
  %1014 = call i32 @isatty(i32 noundef %1013) #12
  %.not224 = icmp eq i32 %1014, 0
  br i1 %.not224, label %1015, label %1016

1015:                                             ; preds = %1011, %1004
  br label %1016

1016:                                             ; preds = %1011, %1015
  %.str.5.sink563 = phi ptr [ @.str.5, %1015 ], [ @.str.2, %1011 ]
  store i32 %1006, ptr %1005, align 4, !tbaa !5
  %1017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1018 = load i32, ptr @test_count, align 4, !tbaa !5
  %1019 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1020 = load i32, ptr %1019, align 4, !tbaa !5
  %1021 = call ptr @s2n_strerror(i32 noundef %1020, ptr noundef nonnull @.str.4) #12
  %1022 = load i32, ptr %1019, align 4, !tbaa !5
  %1023 = call ptr @s2n_strerror_debug(i32 noundef %1022, ptr noundef nonnull @.str.4) #12
  %1024 = load i32, ptr %1005, align 4, !tbaa !5
  %1025 = call ptr @strerror(i32 noundef %1024) #12
  %1026 = load i32, ptr %1005, align 4, !tbaa !5
  %1027 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1017, ptr noundef nonnull %.str.5.sink563, i32 noundef %1018, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 249, ptr noundef %1021, ptr noundef %1023, ptr noundef %1025, i32 noundef %1026) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1028:                                             ; preds = %997, %998, %966, %967
  %1029 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  %1030 = load i32, ptr getelementptr inbounds (i8, ptr @modes, i64 4), align 4, !tbaa !5
  %1031 = zext i32 %1030 to i64
  %1032 = getelementptr inbounds [2 x i32], ptr @__const.main.trigger_messages, i64 0, i64 %1031
  %1033 = load i32, ptr %1032, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %1034 = call ptr @s2n_connection_new(i32 noundef %1030) #12
  store ptr %1034, ptr %18, align 8, !tbaa !9
  %1035 = getelementptr inbounds i8, ptr %1034, i64 232
  %1036 = load ptr, ptr %1035, align 8, !tbaa !28
  store ptr %3, ptr %1036, align 8, !tbaa !54
  %1037 = load ptr, ptr %18, align 8, !tbaa !9
  %1038 = getelementptr inbounds i8, ptr %1037, i64 220
  store i8 34, ptr %1038, align 4, !tbaa !59
  %1039 = load i32, ptr @test_count, align 4, !tbaa !5
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr @test_count, align 4, !tbaa !5
  %1041 = call i32 @s2n_conn_choose_state_machine(ptr noundef %1037, i8 noundef zeroext 34) #12
  %1042 = call zeroext i1 @s2n_result_is_ok(i32 %1041)
  br i1 %1042, label %1043, label %806

1043:                                             ; preds = %1028
  %1044 = load i32, ptr @test_count, align 4, !tbaa !5
  %1045 = add nsw i32 %1044, 1
  store i32 %1045, ptr @test_count, align 4, !tbaa !5
  %1046 = load ptr, ptr %18, align 8, !tbaa !9
  %1047 = getelementptr inbounds i8, ptr %1046, i64 480
  %1048 = call i32 @s2n_set_test_secret(ptr noundef %1046, ptr noundef nonnull %1047, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %15)
  %1049 = call zeroext i1 @s2n_result_is_ok(i32 %1048)
  br i1 %1049, label %1050, label %837

1050:                                             ; preds = %1043
  %1051 = load ptr, ptr %18, align 8, !tbaa !9
  %1052 = getelementptr inbounds i8, ptr %1051, i64 2172
  store i32 3, ptr %1052, align 4, !tbaa !60
  %1053 = zext i32 %1033 to i64
  %1054 = getelementptr inbounds [16 x i32], ptr %6, i64 0, i64 %1053
  %1055 = load i32, ptr %1054, align 4, !tbaa !5
  %1056 = getelementptr inbounds i8, ptr %1051, i64 2176
  store i32 %1055, ptr %1056, align 8, !tbaa !61
  %1057 = load i32, ptr @test_count, align 4, !tbaa !5
  %1058 = add nsw i32 %1057, 1
  store i32 %1058, ptr @test_count, align 4, !tbaa !5
  %1059 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1051) #12
  %1060 = icmp eq i32 %1059, %1033
  br i1 %1060, label %1061, label %872

1061:                                             ; preds = %1050
  %1062 = load i32, ptr @test_count, align 4, !tbaa !5
  %1063 = add nsw i32 %1062, 1
  store i32 %1063, ptr @test_count, align 4, !tbaa !5
  %1064 = load ptr, ptr %18, align 8, !tbaa !9
  %1065 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %1064) #12
  %1066 = call zeroext i1 @s2n_result_is_ok(i32 %1065)
  br i1 %1066, label %1067, label %902

1067:                                             ; preds = %1061
  %1068 = load i32, ptr %791, align 8, !tbaa !62
  %.not219.1 = icmp eq i32 %1068, 0
  %.pre295 = load ptr, ptr %18, align 8, !tbaa !9
  br i1 %.not219.1, label %1078, label %1069

1069:                                             ; preds = %1067
  %1070 = load i32, ptr @test_count, align 4, !tbaa !5
  %1071 = add nsw i32 %1070, 1
  store i32 %1071, ptr @test_count, align 4, !tbaa !5
  %1072 = getelementptr inbounds i8, ptr %.pre295, i64 232
  %1073 = load ptr, ptr %1072, align 8, !tbaa !28
  %1074 = getelementptr inbounds i8, ptr %1073, i64 904
  %1075 = load ptr, ptr %17, align 8, !tbaa !63
  %1076 = zext i32 %1068 to i64
  %bcmp220.1 = call i32 @bcmp(ptr nonnull %1074, ptr %1075, i64 %1076)
  %1077 = icmp eq i32 %bcmp220.1, 0
  br i1 %1077, label %1078, label %937

1078:                                             ; preds = %1069, %1067
  %1079 = getelementptr inbounds i8, ptr %.pre295, i64 148
  %1080 = load i32, ptr %1079, align 4, !tbaa !64
  %1081 = icmp eq i32 %1080, 0
  %1082 = load i32, ptr %792, align 8, !tbaa !62
  %.not225.1 = icmp eq i32 %1082, 0
  br i1 %1081, label %1090, label %1083

1083:                                             ; preds = %1078
  br i1 %.not225.1, label %.loopexit281.loopexit, label %1084

1084:                                             ; preds = %1083
  %1085 = load i32, ptr @test_count, align 4, !tbaa !5
  %1086 = add nsw i32 %1085, 1
  store i32 %1086, ptr @test_count, align 4, !tbaa !5
  %1087 = load ptr, ptr %16, align 8, !tbaa !63
  %1088 = zext i32 %1082 to i64
  %bcmp223.1 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %1087, i64 %1088)
  %1089 = icmp eq i32 %bcmp223.1, 0
  br i1 %1089, label %.loopexit281.loopexit, label %1004

1090:                                             ; preds = %1078
  br i1 %.not225.1, label %.loopexit281.loopexit, label %1091

1091:                                             ; preds = %1090
  %1092 = load i32, ptr @test_count, align 4, !tbaa !5
  %1093 = add nsw i32 %1092, 1
  store i32 %1093, ptr @test_count, align 4, !tbaa !5
  %1094 = load ptr, ptr %16, align 8, !tbaa !63
  %1095 = zext i32 %1082 to i64
  %bcmp226.1 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %1094, i64 %1095)
  %1096 = icmp eq i32 %bcmp226.1, 0
  br i1 %1096, label %.loopexit281.loopexit, label %973

.loopexit281.loopexit:                            ; preds = %1091, %1090, %1084, %1083
  %1097 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  br label %.loopexit281

.loopexit281:                                     ; preds = %.loopexit281.loopexit, %788
  %.6161 = phi i32 [ 1, %788 ], [ 0, %.loopexit281.loopexit ]
  %.6 = phi i32 [ -1, %788 ], [ %.4, %.loopexit281.loopexit ]
  %1098 = call i32 @s2n_free(ptr noundef nonnull %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #12
  br label %1099

1099:                                             ; preds = %.loopexit281, %785
  %.7162 = phi i32 [ %.6161, %.loopexit281 ], [ 1, %785 ]
  %.7 = phi i32 [ %.6, %.loopexit281 ], [ -1, %785 ]
  %1100 = call i32 @s2n_free(ptr noundef nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #12
  %1101 = call i32 @s2n_free(ptr noundef nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #12
  %cond5 = icmp eq i32 %.7162, 0
  br i1 %cond5, label %1102, label %.thread267

1102:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, i8 0, i64 24, i1 false)
  %1103 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %19, ptr noundef nonnull @.str.35) #12
  %1104 = call zeroext i1 @s2n_result_is_ok(i32 %1103)
  br i1 %1104, label %1106, label %.thread271

.thread271:                                       ; preds = %1102
  %1105 = call i32 @s2n_free(ptr noundef nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #12
  br label %1810

1106:                                             ; preds = %1102
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %20, i8 0, i64 24, i1 false)
  %1107 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %20, ptr noundef nonnull @.str.36) #12
  %1108 = call zeroext i1 @s2n_result_is_ok(i32 %1107)
  br i1 %1108, label %1109, label %1408

1109:                                             ; preds = %1106
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %21, i8 0, i64 24, i1 false)
  %1110 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %21, ptr noundef nonnull @.str.37) #12
  %1111 = call zeroext i1 @s2n_result_is_ok(i32 %1110)
  br i1 %1111, label %.preheader278, label %.loopexit279

.preheader278:                                    ; preds = %1109
  %1112 = getelementptr inbounds i8, ptr %21, i64 8
  %1113 = getelementptr inbounds i8, ptr %20, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #12
  %1114 = load i32, ptr @modes, align 4, !tbaa !5
  %1115 = call ptr @s2n_connection_new(i32 noundef %1114) #12
  store ptr %1115, ptr %22, align 8, !tbaa !9
  %1116 = getelementptr inbounds i8, ptr %1115, i64 232
  %1117 = load ptr, ptr %1116, align 8, !tbaa !28
  store ptr %3, ptr %1117, align 8, !tbaa !54
  %1118 = load ptr, ptr %22, align 8, !tbaa !9
  %1119 = getelementptr inbounds i8, ptr %1118, i64 220
  store i8 34, ptr %1119, align 4, !tbaa !59
  %1120 = load i32, ptr @test_count, align 4, !tbaa !5
  %1121 = add nsw i32 %1120, 1
  store i32 %1121, ptr @test_count, align 4, !tbaa !5
  %1122 = call i32 @s2n_conn_choose_state_machine(ptr noundef %1118, i8 noundef zeroext 34) #12
  %1123 = call zeroext i1 @s2n_result_is_ok(i32 %1122)
  br i1 %1123, label %1148, label %1124

1124:                                             ; preds = %1343, %.preheader278
  %1125 = tail call ptr @__errno_location() #13
  %1126 = load i32, ptr %1125, align 4, !tbaa !5
  %1127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1128 = call i32 @s2n_print_stacktrace(ptr noundef %1127) #12
  %1129 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1130 = trunc nuw i8 %1129 to i1
  br i1 %1130, label %1131, label %1135

1131:                                             ; preds = %1124
  %1132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1133 = call i32 @fileno(ptr noundef %1132) #12
  %1134 = call i32 @isatty(i32 noundef %1133) #12
  %.not202 = icmp eq i32 %1134, 0
  br i1 %.not202, label %1135, label %1136

1135:                                             ; preds = %1131, %1124
  br label %1136

1136:                                             ; preds = %1131, %1135
  %.str.5.sink574 = phi ptr [ @.str.5, %1135 ], [ @.str.2, %1131 ]
  store i32 %1126, ptr %1125, align 4, !tbaa !5
  %1137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1138 = load i32, ptr @test_count, align 4, !tbaa !5
  %1139 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1140 = load i32, ptr %1139, align 4, !tbaa !5
  %1141 = call ptr @s2n_strerror(i32 noundef %1140, ptr noundef nonnull @.str.4) #12
  %1142 = load i32, ptr %1139, align 4, !tbaa !5
  %1143 = call ptr @s2n_strerror_debug(i32 noundef %1142, ptr noundef nonnull @.str.4) #12
  %1144 = load i32, ptr %1125, align 4, !tbaa !5
  %1145 = call ptr @strerror(i32 noundef %1144) #12
  %1146 = load i32, ptr %1125, align 4, !tbaa !5
  %1147 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1137, ptr noundef nonnull %.str.5.sink574, i32 noundef %1138, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 287, ptr noundef %1141, ptr noundef %1143, ptr noundef %1145, i32 noundef %1146) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1148:                                             ; preds = %.preheader278
  %1149 = load i32, ptr @test_count, align 4, !tbaa !5
  %1150 = add nsw i32 %1149, 1
  store i32 %1150, ptr @test_count, align 4, !tbaa !5
  %1151 = load ptr, ptr %22, align 8, !tbaa !9
  %1152 = getelementptr inbounds i8, ptr %1151, i64 432
  %1153 = call i32 @s2n_set_test_secret(ptr noundef %1151, ptr noundef nonnull %1152, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %19)
  %1154 = call zeroext i1 @s2n_result_is_ok(i32 %1153)
  br i1 %1154, label %1179, label %1155

1155:                                             ; preds = %1355, %1148
  %1156 = tail call ptr @__errno_location() #13
  %1157 = load i32, ptr %1156, align 4, !tbaa !5
  %1158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1159 = call i32 @s2n_print_stacktrace(ptr noundef %1158) #12
  %1160 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1161 = trunc nuw i8 %1160 to i1
  br i1 %1161, label %1162, label %1166

1162:                                             ; preds = %1155
  %1163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1164 = call i32 @fileno(ptr noundef %1163) #12
  %1165 = call i32 @isatty(i32 noundef %1164) #12
  %.not203 = icmp eq i32 %1165, 0
  br i1 %.not203, label %1166, label %1167

1166:                                             ; preds = %1162, %1155
  br label %1167

1167:                                             ; preds = %1162, %1166
  %.str.5.sink585 = phi ptr [ @.str.5, %1166 ], [ @.str.2, %1162 ]
  store i32 %1157, ptr %1156, align 4, !tbaa !5
  %1168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1169 = load i32, ptr @test_count, align 4, !tbaa !5
  %1170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1171 = load i32, ptr %1170, align 4, !tbaa !5
  %1172 = call ptr @s2n_strerror(i32 noundef %1171, ptr noundef nonnull @.str.4) #12
  %1173 = load i32, ptr %1170, align 4, !tbaa !5
  %1174 = call ptr @s2n_strerror_debug(i32 noundef %1173, ptr noundef nonnull @.str.4) #12
  %1175 = load i32, ptr %1156, align 4, !tbaa !5
  %1176 = call ptr @strerror(i32 noundef %1175) #12
  %1177 = load i32, ptr %1156, align 4, !tbaa !5
  %1178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1168, ptr noundef nonnull %.str.5.sink585, i32 noundef %1169, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 288, ptr noundef %1172, ptr noundef %1174, ptr noundef %1176, i32 noundef %1177) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1179:                                             ; preds = %1148
  %1180 = load ptr, ptr %22, align 8, !tbaa !9
  %1181 = getelementptr inbounds i8, ptr %1180, i64 2172
  store i32 3, ptr %1181, align 4, !tbaa !60
  %1182 = getelementptr inbounds i8, ptr %1180, i64 2176
  store i32 6, ptr %1182, align 8, !tbaa !61
  %1183 = load i32, ptr @test_count, align 4, !tbaa !5
  %1184 = add nsw i32 %1183, 1
  store i32 %1184, ptr @test_count, align 4, !tbaa !5
  %1185 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1180) #12
  %1186 = icmp eq i32 %1185, 13
  br i1 %1186, label %1211, label %1187

1187:                                             ; preds = %1362, %1179
  %1188 = tail call ptr @__errno_location() #13
  %1189 = load i32, ptr %1188, align 4, !tbaa !5
  %1190 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1191 = call i32 @s2n_print_stacktrace(ptr noundef %1190) #12
  %1192 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1193 = trunc nuw i8 %1192 to i1
  br i1 %1193, label %1194, label %1198

1194:                                             ; preds = %1187
  %1195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1196 = call i32 @fileno(ptr noundef %1195) #12
  %1197 = call i32 @isatty(i32 noundef %1196) #12
  %.not204 = icmp eq i32 %1197, 0
  br i1 %.not204, label %1198, label %1199

1198:                                             ; preds = %1194, %1187
  br label %1199

1199:                                             ; preds = %1194, %1198
  %.str.5.sink596 = phi ptr [ @.str.5, %1198 ], [ @.str.2, %1194 ]
  store i32 %1189, ptr %1188, align 4, !tbaa !5
  %1200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1201 = load i32, ptr @test_count, align 4, !tbaa !5
  %1202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1203 = load i32, ptr %1202, align 4, !tbaa !5
  %1204 = call ptr @s2n_strerror(i32 noundef %1203, ptr noundef nonnull @.str.4) #12
  %1205 = load i32, ptr %1202, align 4, !tbaa !5
  %1206 = call ptr @s2n_strerror_debug(i32 noundef %1205, ptr noundef nonnull @.str.4) #12
  %1207 = load i32, ptr %1188, align 4, !tbaa !5
  %1208 = call ptr @strerror(i32 noundef %1207) #12
  %1209 = load i32, ptr %1188, align 4, !tbaa !5
  %1210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1200, ptr noundef nonnull %.str.5.sink596, i32 noundef %1201, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 292, ptr noundef %1204, ptr noundef %1206, ptr noundef %1208, i32 noundef %1209) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1211:                                             ; preds = %1179
  %1212 = load i32, ptr @test_count, align 4, !tbaa !5
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr @test_count, align 4, !tbaa !5
  %1214 = load ptr, ptr %22, align 8, !tbaa !9
  %1215 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %1214) #12
  %1216 = call zeroext i1 @s2n_result_is_ok(i32 %1215)
  br i1 %1216, label %1241, label %1217

1217:                                             ; preds = %1370, %1211
  %1218 = tail call ptr @__errno_location() #13
  %1219 = load i32, ptr %1218, align 4, !tbaa !5
  %1220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1221 = call i32 @s2n_print_stacktrace(ptr noundef %1220) #12
  %1222 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1223 = trunc nuw i8 %1222 to i1
  br i1 %1223, label %1224, label %1228

1224:                                             ; preds = %1217
  %1225 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1226 = call i32 @fileno(ptr noundef %1225) #12
  %1227 = call i32 @isatty(i32 noundef %1226) #12
  %.not205 = icmp eq i32 %1227, 0
  br i1 %.not205, label %1228, label %1229

1228:                                             ; preds = %1224, %1217
  br label %1229

1229:                                             ; preds = %1224, %1228
  %.str.5.sink607 = phi ptr [ @.str.5, %1228 ], [ @.str.2, %1224 ]
  store i32 %1219, ptr %1218, align 4, !tbaa !5
  %1230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1231 = load i32, ptr @test_count, align 4, !tbaa !5
  %1232 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1233 = load i32, ptr %1232, align 4, !tbaa !5
  %1234 = call ptr @s2n_strerror(i32 noundef %1233, ptr noundef nonnull @.str.4) #12
  %1235 = load i32, ptr %1232, align 4, !tbaa !5
  %1236 = call ptr @s2n_strerror_debug(i32 noundef %1235, ptr noundef nonnull @.str.4) #12
  %1237 = load i32, ptr %1218, align 4, !tbaa !5
  %1238 = call ptr @strerror(i32 noundef %1237) #12
  %1239 = load i32, ptr %1218, align 4, !tbaa !5
  %1240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1230, ptr noundef nonnull %.str.5.sink607, i32 noundef %1231, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 293, ptr noundef %1234, ptr noundef %1236, ptr noundef %1238, i32 noundef %1239) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1241:                                             ; preds = %1211
  %1242 = load i32, ptr %1112, align 8, !tbaa !62
  %.not206 = icmp eq i32 %1242, 0
  %.pre296 = load ptr, ptr %22, align 8, !tbaa !9
  br i1 %.not206, label %1276, label %1243

1243:                                             ; preds = %1241
  %1244 = load i32, ptr @test_count, align 4, !tbaa !5
  %1245 = add nsw i32 %1244, 1
  store i32 %1245, ptr @test_count, align 4, !tbaa !5
  %1246 = getelementptr inbounds i8, ptr %.pre296, i64 232
  %1247 = load ptr, ptr %1246, align 8, !tbaa !28
  %1248 = getelementptr inbounds i8, ptr %1247, i64 888
  %1249 = load ptr, ptr %21, align 8, !tbaa !63
  %1250 = zext i32 %1242 to i64
  %bcmp207 = call i32 @bcmp(ptr nonnull %1248, ptr %1249, i64 %1250)
  %1251 = icmp eq i32 %bcmp207, 0
  br i1 %1251, label %1276, label %1252

1252:                                             ; preds = %1378, %1243
  %1253 = tail call ptr @__errno_location() #13
  %1254 = load i32, ptr %1253, align 4, !tbaa !5
  %1255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1256 = call i32 @s2n_print_stacktrace(ptr noundef %1255) #12
  %1257 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1258 = trunc nuw i8 %1257 to i1
  br i1 %1258, label %1259, label %1263

1259:                                             ; preds = %1252
  %1260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1261 = call i32 @fileno(ptr noundef %1260) #12
  %1262 = call i32 @isatty(i32 noundef %1261) #12
  %.not208 = icmp eq i32 %1262, 0
  br i1 %.not208, label %1263, label %1264

1263:                                             ; preds = %1259, %1252
  br label %1264

1264:                                             ; preds = %1259, %1263
  %.str.5.sink618 = phi ptr [ @.str.5, %1263 ], [ @.str.2, %1259 ]
  store i32 %1254, ptr %1253, align 4, !tbaa !5
  %1265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1266 = load i32, ptr @test_count, align 4, !tbaa !5
  %1267 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1268 = load i32, ptr %1267, align 4, !tbaa !5
  %1269 = call ptr @s2n_strerror(i32 noundef %1268, ptr noundef nonnull @.str.4) #12
  %1270 = load i32, ptr %1267, align 4, !tbaa !5
  %1271 = call ptr @s2n_strerror_debug(i32 noundef %1270, ptr noundef nonnull @.str.4) #12
  %1272 = load i32, ptr %1253, align 4, !tbaa !5
  %1273 = call ptr @strerror(i32 noundef %1272) #12
  %1274 = load i32, ptr %1253, align 4, !tbaa !5
  %1275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1265, ptr noundef nonnull %.str.5.sink618, i32 noundef %1266, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 295, ptr noundef %1269, ptr noundef %1271, ptr noundef %1273, i32 noundef %1274) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1276:                                             ; preds = %1243, %1241
  %1277 = getelementptr inbounds i8, ptr %.pre296, i64 148
  %1278 = load i32, ptr %1277, align 4, !tbaa !64
  %1279 = icmp eq i32 %1278, 1
  %1280 = load i32, ptr %1113, align 8, !tbaa !62
  %.not212 = icmp eq i32 %1280, 0
  br i1 %1279, label %1281, label %1312

1281:                                             ; preds = %1276
  br i1 %.not212, label %1343, label %1282

1282:                                             ; preds = %1281
  %1283 = load i32, ptr @test_count, align 4, !tbaa !5
  %1284 = add nsw i32 %1283, 1
  store i32 %1284, ptr @test_count, align 4, !tbaa !5
  %1285 = load ptr, ptr %20, align 8, !tbaa !63
  %1286 = zext i32 %1280 to i64
  %bcmp213 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %1285, i64 %1286)
  %1287 = icmp eq i32 %bcmp213, 0
  br i1 %1287, label %1343, label %1288

1288:                                             ; preds = %1400, %1282
  %1289 = tail call ptr @__errno_location() #13
  %1290 = load i32, ptr %1289, align 4, !tbaa !5
  %1291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1292 = call i32 @s2n_print_stacktrace(ptr noundef %1291) #12
  %1293 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1294 = trunc nuw i8 %1293 to i1
  br i1 %1294, label %1295, label %1299

1295:                                             ; preds = %1288
  %1296 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1297 = call i32 @fileno(ptr noundef %1296) #12
  %1298 = call i32 @isatty(i32 noundef %1297) #12
  %.not214 = icmp eq i32 %1298, 0
  br i1 %.not214, label %1299, label %1300

1299:                                             ; preds = %1295, %1288
  br label %1300

1300:                                             ; preds = %1295, %1299
  %.str.5.sink629 = phi ptr [ @.str.5, %1299 ], [ @.str.2, %1295 ]
  store i32 %1290, ptr %1289, align 4, !tbaa !5
  %1301 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1302 = load i32, ptr @test_count, align 4, !tbaa !5
  %1303 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1304 = load i32, ptr %1303, align 4, !tbaa !5
  %1305 = call ptr @s2n_strerror(i32 noundef %1304, ptr noundef nonnull @.str.4) #12
  %1306 = load i32, ptr %1303, align 4, !tbaa !5
  %1307 = call ptr @s2n_strerror_debug(i32 noundef %1306, ptr noundef nonnull @.str.4) #12
  %1308 = load i32, ptr %1289, align 4, !tbaa !5
  %1309 = call ptr @strerror(i32 noundef %1308) #12
  %1310 = load i32, ptr %1289, align 4, !tbaa !5
  %1311 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1301, ptr noundef nonnull %.str.5.sink629, i32 noundef %1302, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 296, ptr noundef %1305, ptr noundef %1307, ptr noundef %1309, i32 noundef %1310) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1312:                                             ; preds = %1276
  br i1 %.not212, label %1343, label %1313

1313:                                             ; preds = %1312
  %1314 = load i32, ptr @test_count, align 4, !tbaa !5
  %1315 = add nsw i32 %1314, 1
  store i32 %1315, ptr @test_count, align 4, !tbaa !5
  %1316 = load ptr, ptr %20, align 8, !tbaa !63
  %1317 = zext i32 %1280 to i64
  %bcmp210 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %1316, i64 %1317)
  %1318 = icmp eq i32 %bcmp210, 0
  br i1 %1318, label %1343, label %1319

1319:                                             ; preds = %1393, %1313
  %1320 = tail call ptr @__errno_location() #13
  %1321 = load i32, ptr %1320, align 4, !tbaa !5
  %1322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1323 = call i32 @s2n_print_stacktrace(ptr noundef %1322) #12
  %1324 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1325 = trunc nuw i8 %1324 to i1
  br i1 %1325, label %1326, label %1330

1326:                                             ; preds = %1319
  %1327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1328 = call i32 @fileno(ptr noundef %1327) #12
  %1329 = call i32 @isatty(i32 noundef %1328) #12
  %.not211 = icmp eq i32 %1329, 0
  br i1 %.not211, label %1330, label %1331

1330:                                             ; preds = %1326, %1319
  br label %1331

1331:                                             ; preds = %1326, %1330
  %.str.5.sink640 = phi ptr [ @.str.5, %1330 ], [ @.str.2, %1326 ]
  store i32 %1321, ptr %1320, align 4, !tbaa !5
  %1332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1333 = load i32, ptr @test_count, align 4, !tbaa !5
  %1334 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1335 = load i32, ptr %1334, align 4, !tbaa !5
  %1336 = call ptr @s2n_strerror(i32 noundef %1335, ptr noundef nonnull @.str.4) #12
  %1337 = load i32, ptr %1334, align 4, !tbaa !5
  %1338 = call ptr @s2n_strerror_debug(i32 noundef %1337, ptr noundef nonnull @.str.4) #12
  %1339 = load i32, ptr %1320, align 4, !tbaa !5
  %1340 = call ptr @strerror(i32 noundef %1339) #12
  %1341 = load i32, ptr %1320, align 4, !tbaa !5
  %1342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1332, ptr noundef nonnull %.str.5.sink640, i32 noundef %1333, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 296, ptr noundef %1336, ptr noundef %1338, ptr noundef %1340, i32 noundef %1341) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1343:                                             ; preds = %1312, %1313, %1281, %1282
  %1344 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #12
  %1345 = load i32, ptr getelementptr inbounds (i8, ptr @modes, i64 4), align 4, !tbaa !5
  %1346 = call ptr @s2n_connection_new(i32 noundef %1345) #12
  store ptr %1346, ptr %22, align 8, !tbaa !9
  %1347 = getelementptr inbounds i8, ptr %1346, i64 232
  %1348 = load ptr, ptr %1347, align 8, !tbaa !28
  store ptr %3, ptr %1348, align 8, !tbaa !54
  %1349 = load ptr, ptr %22, align 8, !tbaa !9
  %1350 = getelementptr inbounds i8, ptr %1349, i64 220
  store i8 34, ptr %1350, align 4, !tbaa !59
  %1351 = load i32, ptr @test_count, align 4, !tbaa !5
  %1352 = add nsw i32 %1351, 1
  store i32 %1352, ptr @test_count, align 4, !tbaa !5
  %1353 = call i32 @s2n_conn_choose_state_machine(ptr noundef %1349, i8 noundef zeroext 34) #12
  %1354 = call zeroext i1 @s2n_result_is_ok(i32 %1353)
  br i1 %1354, label %1355, label %1124

1355:                                             ; preds = %1343
  %1356 = load i32, ptr @test_count, align 4, !tbaa !5
  %1357 = add nsw i32 %1356, 1
  store i32 %1357, ptr @test_count, align 4, !tbaa !5
  %1358 = load ptr, ptr %22, align 8, !tbaa !9
  %1359 = getelementptr inbounds i8, ptr %1358, i64 432
  %1360 = call i32 @s2n_set_test_secret(ptr noundef %1358, ptr noundef nonnull %1359, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %19)
  %1361 = call zeroext i1 @s2n_result_is_ok(i32 %1360)
  br i1 %1361, label %1362, label %1155

1362:                                             ; preds = %1355
  %1363 = load ptr, ptr %22, align 8, !tbaa !9
  %1364 = getelementptr inbounds i8, ptr %1363, i64 2172
  store i32 3, ptr %1364, align 4, !tbaa !60
  %1365 = getelementptr inbounds i8, ptr %1363, i64 2176
  store i32 6, ptr %1365, align 8, !tbaa !61
  %1366 = load i32, ptr @test_count, align 4, !tbaa !5
  %1367 = add nsw i32 %1366, 1
  store i32 %1367, ptr @test_count, align 4, !tbaa !5
  %1368 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1363) #12
  %1369 = icmp eq i32 %1368, 13
  br i1 %1369, label %1370, label %1187

1370:                                             ; preds = %1362
  %1371 = load i32, ptr @test_count, align 4, !tbaa !5
  %1372 = add nsw i32 %1371, 1
  store i32 %1372, ptr @test_count, align 4, !tbaa !5
  %1373 = load ptr, ptr %22, align 8, !tbaa !9
  %1374 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %1373) #12
  %1375 = call zeroext i1 @s2n_result_is_ok(i32 %1374)
  br i1 %1375, label %1376, label %1217

1376:                                             ; preds = %1370
  %1377 = load i32, ptr %1112, align 8, !tbaa !62
  %.not206.1 = icmp eq i32 %1377, 0
  %.pre297 = load ptr, ptr %22, align 8, !tbaa !9
  br i1 %.not206.1, label %1387, label %1378

1378:                                             ; preds = %1376
  %1379 = load i32, ptr @test_count, align 4, !tbaa !5
  %1380 = add nsw i32 %1379, 1
  store i32 %1380, ptr @test_count, align 4, !tbaa !5
  %1381 = getelementptr inbounds i8, ptr %.pre297, i64 232
  %1382 = load ptr, ptr %1381, align 8, !tbaa !28
  %1383 = getelementptr inbounds i8, ptr %1382, i64 888
  %1384 = load ptr, ptr %21, align 8, !tbaa !63
  %1385 = zext i32 %1377 to i64
  %bcmp207.1 = call i32 @bcmp(ptr nonnull %1383, ptr %1384, i64 %1385)
  %1386 = icmp eq i32 %bcmp207.1, 0
  br i1 %1386, label %1387, label %1252

1387:                                             ; preds = %1378, %1376
  %1388 = getelementptr inbounds i8, ptr %.pre297, i64 148
  %1389 = load i32, ptr %1388, align 4, !tbaa !64
  %1390 = icmp eq i32 %1389, 1
  %1391 = load i32, ptr %1113, align 8, !tbaa !62
  %.not212.1 = icmp eq i32 %1391, 0
  br i1 %1390, label %1399, label %1392

1392:                                             ; preds = %1387
  br i1 %.not212.1, label %.loopexit279.loopexit, label %1393

1393:                                             ; preds = %1392
  %1394 = load i32, ptr @test_count, align 4, !tbaa !5
  %1395 = add nsw i32 %1394, 1
  store i32 %1395, ptr @test_count, align 4, !tbaa !5
  %1396 = load ptr, ptr %20, align 8, !tbaa !63
  %1397 = zext i32 %1391 to i64
  %bcmp210.1 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %1396, i64 %1397)
  %1398 = icmp eq i32 %bcmp210.1, 0
  br i1 %1398, label %.loopexit279.loopexit, label %1319

1399:                                             ; preds = %1387
  br i1 %.not212.1, label %.loopexit279.loopexit, label %1400

1400:                                             ; preds = %1399
  %1401 = load i32, ptr @test_count, align 4, !tbaa !5
  %1402 = add nsw i32 %1401, 1
  store i32 %1402, ptr @test_count, align 4, !tbaa !5
  %1403 = load ptr, ptr %20, align 8, !tbaa !63
  %1404 = zext i32 %1391 to i64
  %bcmp213.1 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %1403, i64 %1404)
  %1405 = icmp eq i32 %bcmp213.1, 0
  br i1 %1405, label %.loopexit279.loopexit, label %1288

.loopexit279.loopexit:                            ; preds = %1400, %1399, %1393, %1392
  %1406 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #12
  br label %.loopexit279

.loopexit279:                                     ; preds = %.loopexit279.loopexit, %1109
  %.9164 = phi i32 [ 1, %1109 ], [ 0, %.loopexit279.loopexit ]
  %.9 = phi i32 [ -1, %1109 ], [ %.7, %.loopexit279.loopexit ]
  %1407 = call i32 @s2n_free(ptr noundef nonnull %21) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #12
  br label %1408

.thread267:                                       ; preds = %1099, %778, %469, %.thread, %.thread259, %.thread263
  %.12.ph = phi i32 [ -1, %.thread263 ], [ -1, %.thread259 ], [ -1, %.thread ], [ %.1, %469 ], [ %.4, %778 ], [ %.7, %1099 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #12
  br label %1810

1408:                                             ; preds = %.loopexit279, %1106
  %.10165 = phi i32 [ %.9164, %.loopexit279 ], [ 1, %1106 ]
  %.10 = phi i32 [ %.9, %.loopexit279 ], [ -1, %1106 ]
  %1409 = call i32 @s2n_free(ptr noundef nonnull %20) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #12
  %1410 = call i32 @s2n_free(ptr noundef nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #12
  %cond1 = icmp eq i32 %.10165, 0
  br i1 %cond1, label %1411, label %1810

1411:                                             ; preds = %1408
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %23) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %23, i8 0, i64 64, i1 false)
  %1412 = getelementptr inbounds i8, ptr %23, i64 60
  store i32 3, ptr %1412, align 4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, i8 0, i64 24, i1 false)
  %1413 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %24, ptr noundef nonnull @.str.40) #12
  %1414 = call zeroext i1 @s2n_result_is_ok(i32 %1413)
  br i1 %1414, label %1416, label %.thread275

.thread275:                                       ; preds = %1411
  %1415 = call i32 @s2n_free(ptr noundef nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #12
  br label %1810

1416:                                             ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %25, i8 0, i64 24, i1 false)
  %1417 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %25, ptr noundef nonnull @.str.41) #12
  %1418 = call zeroext i1 @s2n_result_is_ok(i32 %1417)
  br i1 %1418, label %1419, label %1732

1419:                                             ; preds = %1416
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %26, i8 0, i64 24, i1 false)
  %1420 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %26, ptr noundef nonnull @.str.42) #12
  %1421 = call zeroext i1 @s2n_result_is_ok(i32 %1420)
  br i1 %1421, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %1419
  %1422 = getelementptr inbounds i8, ptr %26, i64 8
  %1423 = getelementptr inbounds i8, ptr %25, i64 8
  %1424 = load i32, ptr @modes, align 4, !tbaa !5
  %1425 = zext i32 %1424 to i64
  %1426 = getelementptr inbounds [2 x i32], ptr @__const.main.trigger_messages.43, i64 0, i64 %1425
  %1427 = load i32, ptr %1426, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #12
  %1428 = call ptr @s2n_connection_new(i32 noundef %1424) #12
  store ptr %1428, ptr %27, align 8, !tbaa !9
  %1429 = getelementptr inbounds i8, ptr %1428, i64 232
  %1430 = load ptr, ptr %1429, align 8, !tbaa !28
  store ptr %3, ptr %1430, align 8, !tbaa !54
  %1431 = load ptr, ptr %27, align 8, !tbaa !9
  %1432 = getelementptr inbounds i8, ptr %1431, i64 220
  store i8 34, ptr %1432, align 4, !tbaa !59
  %1433 = load i32, ptr @test_count, align 4, !tbaa !5
  %1434 = add nsw i32 %1433, 1
  store i32 %1434, ptr @test_count, align 4, !tbaa !5
  %1435 = call i32 @s2n_conn_choose_state_machine(ptr noundef %1431, i8 noundef zeroext 34) #12
  %1436 = call zeroext i1 @s2n_result_is_ok(i32 %1435)
  br i1 %1436, label %1461, label %1437

1437:                                             ; preds = %1660, %.preheader
  %1438 = tail call ptr @__errno_location() #13
  %1439 = load i32, ptr %1438, align 4, !tbaa !5
  %1440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1441 = call i32 @s2n_print_stacktrace(ptr noundef %1440) #12
  %1442 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1443 = trunc nuw i8 %1442 to i1
  br i1 %1443, label %1444, label %1448

1444:                                             ; preds = %1437
  %1445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1446 = call i32 @fileno(ptr noundef %1445) #12
  %1447 = call i32 @isatty(i32 noundef %1446) #12
  %.not190 = icmp eq i32 %1447, 0
  br i1 %.not190, label %1448, label %1449

1448:                                             ; preds = %1444, %1437
  br label %1449

1449:                                             ; preds = %1444, %1448
  %.str.5.sink651 = phi ptr [ @.str.5, %1448 ], [ @.str.2, %1444 ]
  store i32 %1439, ptr %1438, align 4, !tbaa !5
  %1450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1451 = load i32, ptr @test_count, align 4, !tbaa !5
  %1452 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1453 = load i32, ptr %1452, align 4, !tbaa !5
  %1454 = call ptr @s2n_strerror(i32 noundef %1453, ptr noundef nonnull @.str.4) #12
  %1455 = load i32, ptr %1452, align 4, !tbaa !5
  %1456 = call ptr @s2n_strerror_debug(i32 noundef %1455, ptr noundef nonnull @.str.4) #12
  %1457 = load i32, ptr %1438, align 4, !tbaa !5
  %1458 = call ptr @strerror(i32 noundef %1457) #12
  %1459 = load i32, ptr %1438, align 4, !tbaa !5
  %1460 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1450, ptr noundef nonnull %.str.5.sink651, i32 noundef %1451, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 349, ptr noundef %1454, ptr noundef %1456, ptr noundef %1458, i32 noundef %1459) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1461:                                             ; preds = %.preheader
  %1462 = load ptr, ptr %27, align 8, !tbaa !9
  %1463 = getelementptr inbounds i8, ptr %1462, i64 4088
  store i32 1, ptr %1463, align 8, !tbaa !65
  %1464 = load i32, ptr @test_count, align 4, !tbaa !5
  %1465 = add nsw i32 %1464, 1
  store i32 %1465, ptr @test_count, align 4, !tbaa !5
  %1466 = getelementptr inbounds i8, ptr %1462, i64 288
  %1467 = call i32 @s2n_set_test_secret(ptr noundef %1462, ptr noundef nonnull %1466, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %24)
  %1468 = call zeroext i1 @s2n_result_is_ok(i32 %1467)
  br i1 %1468, label %1493, label %1469

1469:                                             ; preds = %1675, %1461
  %1470 = tail call ptr @__errno_location() #13
  %1471 = load i32, ptr %1470, align 4, !tbaa !5
  %1472 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1473 = call i32 @s2n_print_stacktrace(ptr noundef %1472) #12
  %1474 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1475 = trunc nuw i8 %1474 to i1
  br i1 %1475, label %1476, label %1480

1476:                                             ; preds = %1469
  %1477 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1478 = call i32 @fileno(ptr noundef %1477) #12
  %1479 = call i32 @isatty(i32 noundef %1478) #12
  %.not191 = icmp eq i32 %1479, 0
  br i1 %.not191, label %1480, label %1481

1480:                                             ; preds = %1476, %1469
  br label %1481

1481:                                             ; preds = %1476, %1480
  %.str.5.sink662 = phi ptr [ @.str.5, %1480 ], [ @.str.2, %1476 ]
  store i32 %1471, ptr %1470, align 4, !tbaa !5
  %1482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1483 = load i32, ptr @test_count, align 4, !tbaa !5
  %1484 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1485 = load i32, ptr %1484, align 4, !tbaa !5
  %1486 = call ptr @s2n_strerror(i32 noundef %1485, ptr noundef nonnull @.str.4) #12
  %1487 = load i32, ptr %1484, align 4, !tbaa !5
  %1488 = call ptr @s2n_strerror_debug(i32 noundef %1487, ptr noundef nonnull @.str.4) #12
  %1489 = load i32, ptr %1470, align 4, !tbaa !5
  %1490 = call ptr @strerror(i32 noundef %1489) #12
  %1491 = load i32, ptr %1470, align 4, !tbaa !5
  %1492 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1482, ptr noundef nonnull %.str.5.sink662, i32 noundef %1483, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 351, ptr noundef %1486, ptr noundef %1488, ptr noundef %1490, i32 noundef %1491) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1493:                                             ; preds = %1461
  %1494 = load ptr, ptr %27, align 8, !tbaa !9
  %1495 = getelementptr inbounds i8, ptr %1494, i64 2172
  store i32 65, ptr %1495, align 4, !tbaa !60
  %1496 = zext i32 %1427 to i64
  %1497 = getelementptr inbounds [16 x i32], ptr %23, i64 0, i64 %1496
  %1498 = load i32, ptr %1497, align 4, !tbaa !5
  %1499 = getelementptr inbounds i8, ptr %1494, i64 2176
  store i32 %1498, ptr %1499, align 8, !tbaa !61
  %1500 = load i32, ptr @test_count, align 4, !tbaa !5
  %1501 = add nsw i32 %1500, 1
  store i32 %1501, ptr @test_count, align 4, !tbaa !5
  %1502 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1494) #12
  %1503 = icmp eq i32 %1502, %1427
  br i1 %1503, label %1528, label %1504

1504:                                             ; preds = %1683, %1493
  %1505 = tail call ptr @__errno_location() #13
  %1506 = load i32, ptr %1505, align 4, !tbaa !5
  %1507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1508 = call i32 @s2n_print_stacktrace(ptr noundef %1507) #12
  %1509 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1510 = trunc nuw i8 %1509 to i1
  br i1 %1510, label %1511, label %1515

1511:                                             ; preds = %1504
  %1512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1513 = call i32 @fileno(ptr noundef %1512) #12
  %1514 = call i32 @isatty(i32 noundef %1513) #12
  %.not192 = icmp eq i32 %1514, 0
  br i1 %.not192, label %1515, label %1516

1515:                                             ; preds = %1511, %1504
  br label %1516

1516:                                             ; preds = %1511, %1515
  %.str.5.sink673 = phi ptr [ @.str.5, %1515 ], [ @.str.2, %1511 ]
  store i32 %1506, ptr %1505, align 4, !tbaa !5
  %1517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1518 = load i32, ptr @test_count, align 4, !tbaa !5
  %1519 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1520 = load i32, ptr %1519, align 4, !tbaa !5
  %1521 = call ptr @s2n_strerror(i32 noundef %1520, ptr noundef nonnull @.str.4) #12
  %1522 = load i32, ptr %1519, align 4, !tbaa !5
  %1523 = call ptr @s2n_strerror_debug(i32 noundef %1522, ptr noundef nonnull @.str.4) #12
  %1524 = load i32, ptr %1505, align 4, !tbaa !5
  %1525 = call ptr @strerror(i32 noundef %1524) #12
  %1526 = load i32, ptr %1505, align 4, !tbaa !5
  %1527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1517, ptr noundef nonnull %.str.5.sink673, i32 noundef %1518, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 355, ptr noundef %1521, ptr noundef %1523, ptr noundef %1525, i32 noundef %1526) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1528:                                             ; preds = %1493
  %1529 = load i32, ptr @test_count, align 4, !tbaa !5
  %1530 = add nsw i32 %1529, 1
  store i32 %1530, ptr @test_count, align 4, !tbaa !5
  %1531 = load ptr, ptr %27, align 8, !tbaa !9
  %1532 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %1531) #12
  %1533 = call zeroext i1 @s2n_result_is_ok(i32 %1532)
  br i1 %1533, label %1558, label %1534

1534:                                             ; preds = %1694, %1528
  %1535 = tail call ptr @__errno_location() #13
  %1536 = load i32, ptr %1535, align 4, !tbaa !5
  %1537 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1538 = call i32 @s2n_print_stacktrace(ptr noundef %1537) #12
  %1539 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1540 = trunc nuw i8 %1539 to i1
  br i1 %1540, label %1541, label %1545

1541:                                             ; preds = %1534
  %1542 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1543 = call i32 @fileno(ptr noundef %1542) #12
  %1544 = call i32 @isatty(i32 noundef %1543) #12
  %.not193 = icmp eq i32 %1544, 0
  br i1 %.not193, label %1545, label %1546

1545:                                             ; preds = %1541, %1534
  br label %1546

1546:                                             ; preds = %1541, %1545
  %.str.5.sink684 = phi ptr [ @.str.5, %1545 ], [ @.str.2, %1541 ]
  store i32 %1536, ptr %1535, align 4, !tbaa !5
  %1547 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1548 = load i32, ptr @test_count, align 4, !tbaa !5
  %1549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1550 = load i32, ptr %1549, align 4, !tbaa !5
  %1551 = call ptr @s2n_strerror(i32 noundef %1550, ptr noundef nonnull @.str.4) #12
  %1552 = load i32, ptr %1549, align 4, !tbaa !5
  %1553 = call ptr @s2n_strerror_debug(i32 noundef %1552, ptr noundef nonnull @.str.4) #12
  %1554 = load i32, ptr %1535, align 4, !tbaa !5
  %1555 = call ptr @strerror(i32 noundef %1554) #12
  %1556 = load i32, ptr %1535, align 4, !tbaa !5
  %1557 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1547, ptr noundef nonnull %.str.5.sink684, i32 noundef %1548, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 356, ptr noundef %1551, ptr noundef %1553, ptr noundef %1555, i32 noundef %1556) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1558:                                             ; preds = %1528
  %1559 = load i32, ptr %1422, align 8, !tbaa !62
  %.not194 = icmp eq i32 %1559, 0
  %.pre298 = load ptr, ptr %27, align 8, !tbaa !9
  br i1 %.not194, label %1593, label %1560

1560:                                             ; preds = %1558
  %1561 = load i32, ptr @test_count, align 4, !tbaa !5
  %1562 = add nsw i32 %1561, 1
  store i32 %1562, ptr @test_count, align 4, !tbaa !5
  %1563 = getelementptr inbounds i8, ptr %.pre298, i64 232
  %1564 = load ptr, ptr %1563, align 8, !tbaa !28
  %1565 = getelementptr inbounds i8, ptr %1564, i64 888
  %1566 = load ptr, ptr %26, align 8, !tbaa !63
  %1567 = zext i32 %1559 to i64
  %bcmp = call i32 @bcmp(ptr nonnull %1565, ptr %1566, i64 %1567)
  %1568 = icmp eq i32 %bcmp, 0
  br i1 %1568, label %1593, label %1569

1569:                                             ; preds = %1702, %1560
  %1570 = tail call ptr @__errno_location() #13
  %1571 = load i32, ptr %1570, align 4, !tbaa !5
  %1572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1573 = call i32 @s2n_print_stacktrace(ptr noundef %1572) #12
  %1574 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1575 = trunc nuw i8 %1574 to i1
  br i1 %1575, label %1576, label %1580

1576:                                             ; preds = %1569
  %1577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1578 = call i32 @fileno(ptr noundef %1577) #12
  %1579 = call i32 @isatty(i32 noundef %1578) #12
  %.not195 = icmp eq i32 %1579, 0
  br i1 %.not195, label %1580, label %1581

1580:                                             ; preds = %1576, %1569
  br label %1581

1581:                                             ; preds = %1576, %1580
  %.str.5.sink695 = phi ptr [ @.str.5, %1580 ], [ @.str.2, %1576 ]
  store i32 %1571, ptr %1570, align 4, !tbaa !5
  %1582 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1583 = load i32, ptr @test_count, align 4, !tbaa !5
  %1584 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1585 = load i32, ptr %1584, align 4, !tbaa !5
  %1586 = call ptr @s2n_strerror(i32 noundef %1585, ptr noundef nonnull @.str.4) #12
  %1587 = load i32, ptr %1584, align 4, !tbaa !5
  %1588 = call ptr @s2n_strerror_debug(i32 noundef %1587, ptr noundef nonnull @.str.4) #12
  %1589 = load i32, ptr %1570, align 4, !tbaa !5
  %1590 = call ptr @strerror(i32 noundef %1589) #12
  %1591 = load i32, ptr %1570, align 4, !tbaa !5
  %1592 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1582, ptr noundef nonnull %.str.5.sink695, i32 noundef %1583, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 358, ptr noundef %1586, ptr noundef %1588, ptr noundef %1590, i32 noundef %1591) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1593:                                             ; preds = %1560, %1558
  %1594 = getelementptr inbounds i8, ptr %.pre298, i64 148
  %1595 = load i32, ptr %1594, align 4, !tbaa !64
  %1596 = icmp eq i32 %1595, 1
  %1597 = load i32, ptr %1423, align 8, !tbaa !62
  %.not199 = icmp eq i32 %1597, 0
  br i1 %1596, label %1598, label %1629

1598:                                             ; preds = %1593
  br i1 %.not199, label %1660, label %1599

1599:                                             ; preds = %1598
  %1600 = load i32, ptr @test_count, align 4, !tbaa !5
  %1601 = add nsw i32 %1600, 1
  store i32 %1601, ptr @test_count, align 4, !tbaa !5
  %1602 = load ptr, ptr %25, align 8, !tbaa !63
  %1603 = zext i32 %1597 to i64
  %bcmp200 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %1602, i64 %1603)
  %1604 = icmp eq i32 %bcmp200, 0
  br i1 %1604, label %1660, label %1605

1605:                                             ; preds = %1724, %1599
  %1606 = tail call ptr @__errno_location() #13
  %1607 = load i32, ptr %1606, align 4, !tbaa !5
  %1608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1609 = call i32 @s2n_print_stacktrace(ptr noundef %1608) #12
  %1610 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1611 = trunc nuw i8 %1610 to i1
  br i1 %1611, label %1612, label %1616

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

1616:                                             ; preds = %1612, %1605
  br label %1617

1617:                                             ; preds = %1612, %1616
  %.str.5.sink706 = phi ptr [ @.str.5, %1616 ], [ @.str.2, %1612 ]
  store i32 %1607, ptr %1606, align 4, !tbaa !5
  %1618 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1619 = load i32, ptr @test_count, align 4, !tbaa !5
  %1620 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1621 = load i32, ptr %1620, align 4, !tbaa !5
  %1622 = call ptr @s2n_strerror(i32 noundef %1621, ptr noundef nonnull @.str.4) #12
  %1623 = load i32, ptr %1620, align 4, !tbaa !5
  %1624 = call ptr @s2n_strerror_debug(i32 noundef %1623, ptr noundef nonnull @.str.4) #12
  %1625 = load i32, ptr %1606, align 4, !tbaa !5
  %1626 = call ptr @strerror(i32 noundef %1625) #12
  %1627 = load i32, ptr %1606, align 4, !tbaa !5
  %1628 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1618, ptr noundef nonnull %.str.5.sink706, i32 noundef %1619, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 359, ptr noundef %1622, ptr noundef %1624, ptr noundef %1626, i32 noundef %1627) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1629:                                             ; preds = %1593
  br i1 %.not199, label %1660, label %1630

1630:                                             ; preds = %1629
  %1631 = load i32, ptr @test_count, align 4, !tbaa !5
  %1632 = add nsw i32 %1631, 1
  store i32 %1632, ptr @test_count, align 4, !tbaa !5
  %1633 = load ptr, ptr %25, align 8, !tbaa !63
  %1634 = zext i32 %1597 to i64
  %bcmp197 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %1633, i64 %1634)
  %1635 = icmp eq i32 %bcmp197, 0
  br i1 %1635, label %1660, label %1636

1636:                                             ; preds = %1717, %1630
  %1637 = tail call ptr @__errno_location() #13
  %1638 = load i32, ptr %1637, align 4, !tbaa !5
  %1639 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1640 = call i32 @s2n_print_stacktrace(ptr noundef %1639) #12
  %1641 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1642 = trunc nuw i8 %1641 to i1
  br i1 %1642, label %1643, label %1647

1643:                                             ; preds = %1636
  %1644 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1645 = call i32 @fileno(ptr noundef %1644) #12
  %1646 = call i32 @isatty(i32 noundef %1645) #12
  %.not198 = icmp eq i32 %1646, 0
  br i1 %.not198, label %1647, label %1648

1647:                                             ; preds = %1643, %1636
  br label %1648

1648:                                             ; preds = %1643, %1647
  %.str.5.sink717 = phi ptr [ @.str.5, %1647 ], [ @.str.2, %1643 ]
  store i32 %1638, ptr %1637, align 4, !tbaa !5
  %1649 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1650 = load i32, ptr @test_count, align 4, !tbaa !5
  %1651 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1652 = load i32, ptr %1651, align 4, !tbaa !5
  %1653 = call ptr @s2n_strerror(i32 noundef %1652, ptr noundef nonnull @.str.4) #12
  %1654 = load i32, ptr %1651, align 4, !tbaa !5
  %1655 = call ptr @s2n_strerror_debug(i32 noundef %1654, ptr noundef nonnull @.str.4) #12
  %1656 = load i32, ptr %1637, align 4, !tbaa !5
  %1657 = call ptr @strerror(i32 noundef %1656) #12
  %1658 = load i32, ptr %1637, align 4, !tbaa !5
  %1659 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1649, ptr noundef nonnull %.str.5.sink717, i32 noundef %1650, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 359, ptr noundef %1653, ptr noundef %1655, ptr noundef %1657, i32 noundef %1658) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1660:                                             ; preds = %1629, %1630, %1598, %1599
  %1661 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %27) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  %1662 = load i32, ptr getelementptr inbounds (i8, ptr @modes, i64 4), align 4, !tbaa !5
  %1663 = zext i32 %1662 to i64
  %1664 = getelementptr inbounds [2 x i32], ptr @__const.main.trigger_messages.43, i64 0, i64 %1663
  %1665 = load i32, ptr %1664, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #12
  %1666 = call ptr @s2n_connection_new(i32 noundef %1662) #12
  store ptr %1666, ptr %27, align 8, !tbaa !9
  %1667 = getelementptr inbounds i8, ptr %1666, i64 232
  %1668 = load ptr, ptr %1667, align 8, !tbaa !28
  store ptr %3, ptr %1668, align 8, !tbaa !54
  %1669 = load ptr, ptr %27, align 8, !tbaa !9
  %1670 = getelementptr inbounds i8, ptr %1669, i64 220
  store i8 34, ptr %1670, align 4, !tbaa !59
  %1671 = load i32, ptr @test_count, align 4, !tbaa !5
  %1672 = add nsw i32 %1671, 1
  store i32 %1672, ptr @test_count, align 4, !tbaa !5
  %1673 = call i32 @s2n_conn_choose_state_machine(ptr noundef %1669, i8 noundef zeroext 34) #12
  %1674 = call zeroext i1 @s2n_result_is_ok(i32 %1673)
  br i1 %1674, label %1675, label %1437

1675:                                             ; preds = %1660
  %1676 = load ptr, ptr %27, align 8, !tbaa !9
  %1677 = getelementptr inbounds i8, ptr %1676, i64 4088
  store i32 1, ptr %1677, align 8, !tbaa !65
  %1678 = load i32, ptr @test_count, align 4, !tbaa !5
  %1679 = add nsw i32 %1678, 1
  store i32 %1679, ptr @test_count, align 4, !tbaa !5
  %1680 = getelementptr inbounds i8, ptr %1676, i64 288
  %1681 = call i32 @s2n_set_test_secret(ptr noundef %1676, ptr noundef nonnull %1680, ptr noundef nonnull byval(%struct.s2n_blob) align 8 %24)
  %1682 = call zeroext i1 @s2n_result_is_ok(i32 %1681)
  br i1 %1682, label %1683, label %1469

1683:                                             ; preds = %1675
  %1684 = load ptr, ptr %27, align 8, !tbaa !9
  %1685 = getelementptr inbounds i8, ptr %1684, i64 2172
  store i32 65, ptr %1685, align 4, !tbaa !60
  %1686 = zext i32 %1665 to i64
  %1687 = getelementptr inbounds [16 x i32], ptr %23, i64 0, i64 %1686
  %1688 = load i32, ptr %1687, align 4, !tbaa !5
  %1689 = getelementptr inbounds i8, ptr %1684, i64 2176
  store i32 %1688, ptr %1689, align 8, !tbaa !61
  %1690 = load i32, ptr @test_count, align 4, !tbaa !5
  %1691 = add nsw i32 %1690, 1
  store i32 %1691, ptr @test_count, align 4, !tbaa !5
  %1692 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1684) #12
  %1693 = icmp eq i32 %1692, %1665
  br i1 %1693, label %1694, label %1504

1694:                                             ; preds = %1683
  %1695 = load i32, ptr @test_count, align 4, !tbaa !5
  %1696 = add nsw i32 %1695, 1
  store i32 %1696, ptr @test_count, align 4, !tbaa !5
  %1697 = load ptr, ptr %27, align 8, !tbaa !9
  %1698 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %1697) #12
  %1699 = call zeroext i1 @s2n_result_is_ok(i32 %1698)
  br i1 %1699, label %1700, label %1534

1700:                                             ; preds = %1694
  %1701 = load i32, ptr %1422, align 8, !tbaa !62
  %.not194.1 = icmp eq i32 %1701, 0
  %.pre299 = load ptr, ptr %27, align 8, !tbaa !9
  br i1 %.not194.1, label %1711, label %1702

1702:                                             ; preds = %1700
  %1703 = load i32, ptr @test_count, align 4, !tbaa !5
  %1704 = add nsw i32 %1703, 1
  store i32 %1704, ptr @test_count, align 4, !tbaa !5
  %1705 = getelementptr inbounds i8, ptr %.pre299, i64 232
  %1706 = load ptr, ptr %1705, align 8, !tbaa !28
  %1707 = getelementptr inbounds i8, ptr %1706, i64 888
  %1708 = load ptr, ptr %26, align 8, !tbaa !63
  %1709 = zext i32 %1701 to i64
  %bcmp.1 = call i32 @bcmp(ptr nonnull %1707, ptr %1708, i64 %1709)
  %1710 = icmp eq i32 %bcmp.1, 0
  br i1 %1710, label %1711, label %1569

1711:                                             ; preds = %1702, %1700
  %1712 = getelementptr inbounds i8, ptr %.pre299, i64 148
  %1713 = load i32, ptr %1712, align 4, !tbaa !64
  %1714 = icmp eq i32 %1713, 1
  %1715 = load i32, ptr %1423, align 8, !tbaa !62
  %.not199.1 = icmp eq i32 %1715, 0
  br i1 %1714, label %1723, label %1716

1716:                                             ; preds = %1711
  br i1 %.not199.1, label %.loopexit.loopexit, label %1717

1717:                                             ; preds = %1716
  %1718 = load i32, ptr @test_count, align 4, !tbaa !5
  %1719 = add nsw i32 %1718, 1
  store i32 %1719, ptr @test_count, align 4, !tbaa !5
  %1720 = load ptr, ptr %25, align 8, !tbaa !63
  %1721 = zext i32 %1715 to i64
  %bcmp197.1 = call i32 @bcmp(ptr nonnull @test_recv_key, ptr %1720, i64 %1721)
  %1722 = icmp eq i32 %bcmp197.1, 0
  br i1 %1722, label %.loopexit.loopexit, label %1636

1723:                                             ; preds = %1711
  br i1 %.not199.1, label %.loopexit.loopexit, label %1724

1724:                                             ; preds = %1723
  %1725 = load i32, ptr @test_count, align 4, !tbaa !5
  %1726 = add nsw i32 %1725, 1
  store i32 %1726, ptr @test_count, align 4, !tbaa !5
  %1727 = load ptr, ptr %25, align 8, !tbaa !63
  %1728 = zext i32 %1715 to i64
  %bcmp200.1 = call i32 @bcmp(ptr nonnull @test_send_key, ptr %1727, i64 %1728)
  %1729 = icmp eq i32 %bcmp200.1, 0
  br i1 %1729, label %.loopexit.loopexit, label %1605

.loopexit.loopexit:                               ; preds = %1724, %1723, %1717, %1716
  %1730 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %27) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #12
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %1419
  %.13 = phi i32 [ -1, %1419 ], [ %.10, %.loopexit.loopexit ]
  %1731 = call i32 @s2n_free(ptr noundef nonnull %26) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #12
  br label %1732

1732:                                             ; preds = %.loopexit, %1416
  %.14169 = phi i1 [ %1421, %.loopexit ], [ false, %1416 ]
  %.14 = phi i32 [ %.13, %.loopexit ], [ -1, %1416 ]
  %1733 = call i32 @s2n_free(ptr noundef nonnull %25) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #12
  %1734 = call i32 @s2n_free(ptr noundef nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #12
  br i1 %.14169, label %1735, label %1810

1735:                                             ; preds = %1732
  %1736 = call i32 @s2n_cleanup() #12
  %1737 = icmp eq i32 %1736, -1
  br i1 %1737, label %1738, label %1762

1738:                                             ; preds = %1735
  %1739 = tail call ptr @__errno_location() #13
  %1740 = load i32, ptr %1739, align 4, !tbaa !5
  %1741 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1742 = call i32 @s2n_print_stacktrace(ptr noundef %1741) #12
  %1743 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1744 = trunc nuw i8 %1743 to i1
  br i1 %1744, label %1745, label %1749

1745:                                             ; preds = %1738
  %1746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1747 = call i32 @fileno(ptr noundef %1746) #12
  %1748 = call i32 @isatty(i32 noundef %1747) #12
  %.not189 = icmp eq i32 %1748, 0
  br i1 %.not189, label %1749, label %1750

1749:                                             ; preds = %1745, %1738
  br label %1750

1750:                                             ; preds = %1745, %1749
  %.str.5.sink728 = phi ptr [ @.str.5, %1749 ], [ @.str.2, %1745 ]
  store i32 %1740, ptr %1739, align 4, !tbaa !5
  %1751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1752 = load i32, ptr @test_count, align 4, !tbaa !5
  %1753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1754 = load i32, ptr %1753, align 4, !tbaa !5
  %1755 = call ptr @s2n_strerror(i32 noundef %1754, ptr noundef nonnull @.str.4) #12
  %1756 = load i32, ptr %1753, align 4, !tbaa !5
  %1757 = call ptr @s2n_strerror_debug(i32 noundef %1756, ptr noundef nonnull @.str.4) #12
  %1758 = load i32, ptr %1739, align 4, !tbaa !5
  %1759 = call ptr @strerror(i32 noundef %1758) #12
  %1760 = load i32, ptr %1739, align 4, !tbaa !5
  %1761 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1751, ptr noundef nonnull %.str.5.sink728, i32 noundef %1752, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 364, ptr noundef %1755, ptr noundef %1757, ptr noundef %1759, i32 noundef %1760) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1762:                                             ; preds = %1735
  %1763 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #12
  %1764 = icmp eq i32 %1763, -1
  br i1 %1764, label %1765, label %1789

1765:                                             ; preds = %1762
  %1766 = tail call ptr @__errno_location() #13
  %1767 = load i32, ptr %1766, align 4, !tbaa !5
  %1768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1769 = call i32 @s2n_print_stacktrace(ptr noundef %1768) #12
  %1770 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1771 = trunc nuw i8 %1770 to i1
  br i1 %1771, label %1772, label %1776

1772:                                             ; preds = %1765
  %1773 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1774 = call i32 @fileno(ptr noundef %1773) #12
  %1775 = call i32 @isatty(i32 noundef %1774) #12
  %.not188 = icmp eq i32 %1775, 0
  br i1 %.not188, label %1776, label %1777

1776:                                             ; preds = %1772, %1765
  br label %1777

1777:                                             ; preds = %1772, %1776
  %.str.5.sink739 = phi ptr [ @.str.5, %1776 ], [ @.str.2, %1772 ]
  store i32 %1767, ptr %1766, align 4, !tbaa !5
  %1778 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1779 = load i32, ptr @test_count, align 4, !tbaa !5
  %1780 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1781 = load i32, ptr %1780, align 4, !tbaa !5
  %1782 = call ptr @s2n_strerror(i32 noundef %1781, ptr noundef nonnull @.str.4) #12
  %1783 = load i32, ptr %1780, align 4, !tbaa !5
  %1784 = call ptr @s2n_strerror_debug(i32 noundef %1783, ptr noundef nonnull @.str.4) #12
  %1785 = load i32, ptr %1766, align 4, !tbaa !5
  %1786 = call ptr @strerror(i32 noundef %1785) #12
  %1787 = load i32, ptr %1766, align 4, !tbaa !5
  %1788 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1778, ptr noundef nonnull %.str.5.sink739, i32 noundef %1779, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 364, ptr noundef %1782, ptr noundef %1784, ptr noundef %1786, i32 noundef %1787) #14
  call void @exit(i32 noundef 1) #15
  unreachable

1789:                                             ; preds = %1762
  %1790 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1791 = trunc nuw i8 %1790 to i1
  br i1 %1791, label %1792, label %1803

1792:                                             ; preds = %1789
  %1793 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1794 = call i32 @fileno(ptr noundef %1793) #12
  %1795 = call i32 @isatty(i32 noundef %1794) #12
  %.not185 = icmp eq i32 %1795, 0
  br i1 %.not185, label %1803, label %1796

1796:                                             ; preds = %1792
  %1797 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not187 = icmp eq i32 %1797, 0
  %1798 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not187, label %1801, label %1799

1799:                                             ; preds = %1796
  %1800 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1798, ptr noundef nonnull @.str.10, i32 noundef %1797) #12
  br label %1810

1801:                                             ; preds = %1796
  %1802 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1798, ptr noundef nonnull @.str.11) #12
  br label %1810

1803:                                             ; preds = %1792, %1789
  %1804 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not186 = icmp eq i32 %1804, 0
  %1805 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not186, label %1808, label %1806

1806:                                             ; preds = %1803
  %1807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1805, ptr noundef nonnull @.str.12, i32 noundef %1804) #12
  br label %1810

1808:                                             ; preds = %1803
  %1809 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1805, ptr noundef nonnull @.str.13) #12
  br label %1810

1810:                                             ; preds = %.thread275, %.thread271, %.thread267, %1801, %1799, %1808, %1806, %1732, %1408
  %.16 = phi i32 [ %.14, %1732 ], [ %.10, %1408 ], [ 0, %1806 ], [ 0, %1808 ], [ 0, %1799 ], [ 0, %1801 ], [ %.12.ph, %.thread267 ], [ -1, %.thread271 ], [ -1, %.thread275 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %3) #12
  br label %1811

1811:                                             ; preds = %182, %180, %189, %187, %1810
  %.17 = phi i32 [ %.16, %1810 ], [ 0, %187 ], [ 0, %189 ], [ 0, %180 ], [ 0, %182 ]
  ret i32 %.17
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

declare i32 @s2n_cleanup() local_unnamed_addr #2

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

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

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

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

declare i32 @s2n_free(ptr noundef) local_unnamed_addr #2

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

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_set_test_secret(ptr noundef, ptr noundef, ptr noundef byval(%struct.s2n_blob) align 8) local_unnamed_addr #0

declare i32 @s2n_conn_get_current_message_type(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_tls13_key_schedule_update(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_conn_choose_state_machine(ptr noundef, i8 noundef zeroext) local_unnamed_addr #2

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #11

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

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

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


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