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

@s2n_use_color_in_output = external dso_local global i8, align 1
@cipher_suite = external dso_local global ptr, align 8
@curve = external dso_local global ptr, align 8
@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 [89 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 [85 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [25 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 %struct.s2n_blob, align 8
  %10 = alloca [48 x i8], align 16
  %11 = alloca i32, align 4
  %12 = alloca %struct.s2n_blob, align 8
  %13 = alloca %struct.s2n_result, align 4
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %struct.s2n_result, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %struct.s2n_result, align 4
  %22 = alloca %struct.s2n_blob, align 8
  %23 = alloca %struct.s2n_result, align 4
  %24 = alloca i32, align 4
  %25 = alloca %struct.s2n_blob, align 8
  %26 = alloca %struct.s2n_result, align 4
  %27 = alloca %struct.s2n_blob, align 8
  %28 = alloca %struct.s2n_result, align 4
  %29 = alloca %struct.s2n_blob, align 8
  %30 = alloca %struct.s2n_result, align 4
  %31 = alloca %struct.s2n_blob, align 8
  %32 = alloca %struct.s2n_result, align 4
  %33 = alloca ptr, align 8
  %34 = alloca %struct.s2n_result, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %struct.s2n_result, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %struct.s2n_result, align 4
  %43 = alloca ptr, align 8
  %44 = alloca %struct.s2n_result, align 4
  %45 = alloca i32, 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 %struct.s2n_result, align 4
  %53 = alloca %struct.s2n_blob, align 8
  %54 = alloca %struct.s2n_result, align 4
  %55 = alloca %struct.s2n_blob, align 8
  %56 = alloca %struct.s2n_result, align 4
  %57 = alloca %struct.s2n_blob, align 8
  %58 = alloca %struct.s2n_result, align 4
  %59 = alloca i64, align 8
  %60 = alloca ptr, align 8
  %61 = alloca %struct.s2n_result, align 4
  %62 = alloca i32, align 4
  %63 = alloca %struct.s2n_result, align 4
  %64 = alloca i32, align 4
  %65 = alloca %struct.s2n_result, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca %struct.s2n_result, align 4
  %71 = alloca %struct.s2n_blob, align 8
  %72 = alloca %struct.s2n_result, align 4
  %73 = alloca %struct.s2n_blob, align 8
  %74 = alloca %struct.s2n_result, align 4
  %75 = alloca %struct.s2n_blob, align 8
  %76 = alloca %struct.s2n_result, align 4
  %77 = alloca i64, align 8
  %78 = alloca ptr, align 8
  %79 = alloca %struct.s2n_result, align 4
  %80 = alloca i32, align 4
  %81 = alloca %struct.s2n_result, align 4
  %82 = alloca i32, align 4
  %83 = alloca %struct.s2n_result, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca %struct.s2n_result, align 4
  %89 = alloca %struct.s2n_blob, align 8
  %90 = alloca %struct.s2n_result, align 4
  %91 = alloca i64, align 8
  %92 = alloca ptr, align 8
  %93 = alloca %struct.s2n_result, align 4
  %94 = alloca i32, align 4
  %95 = alloca %struct.s2n_result, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca %struct.s2n_result, align 4
  %100 = alloca %struct.s2n_blob, align 8
  %101 = alloca %struct.s2n_result, align 4
  %102 = alloca %struct.s2n_blob, align 8
  %103 = alloca %struct.s2n_result, align 4
  %104 = alloca i64, align 8
  %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 %struct.s2n_result, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca %struct.s2n_result, align 4
  %115 = alloca %struct.s2n_blob, align 8
  %116 = alloca %struct.s2n_result, align 4
  %117 = alloca %struct.s2n_blob, align 8
  %118 = alloca %struct.s2n_result, align 4
  %119 = alloca i64, align 8
  %120 = alloca ptr, align 8
  %121 = alloca %struct.s2n_result, align 4
  %122 = alloca i32, align 4
  %123 = alloca %struct.s2n_result, align 4
  %124 = alloca i32, align 4
  %125 = alloca %struct.s2n_result, align 4
  %126 = alloca i32, align 4
  %127 = alloca i32, align 4
  %128 = alloca i32, align 4
  %129 = alloca %struct.s2n_result, align 4
  %130 = alloca %struct.s2n_blob, align 8
  %131 = alloca %struct.s2n_result, align 4
  %132 = alloca %struct.s2n_blob, align 8
  %133 = alloca %struct.s2n_result, align 4
  %134 = alloca i64, align 8
  %135 = alloca ptr, align 8
  %136 = alloca %struct.s2n_result, align 4
  %137 = alloca i32, align 4
  %138 = alloca %struct.s2n_result, align 4
  %139 = alloca i32, align 4
  %140 = alloca %struct.s2n_result, align 4
  %141 = alloca i32, align 4
  %142 = alloca i32, align 4
  %143 = alloca i32, align 4
  %144 = alloca %struct.s2n_result, align 4
  %145 = alloca %struct.s2n_blob, align 8
  %146 = alloca %struct.s2n_result, align 4
  %147 = alloca %struct.s2n_blob, align 8
  %148 = alloca %struct.s2n_result, align 4
  %149 = alloca i64, align 8
  %150 = alloca ptr, align 8
  %151 = alloca %struct.s2n_result, align 4
  %152 = alloca i32, align 4
  %153 = alloca %struct.s2n_result, align 4
  %154 = alloca i32, align 4
  %155 = alloca %struct.s2n_result, align 4
  %156 = alloca i32, align 4
  %157 = alloca i32, align 4
  %158 = alloca i32, align 4
  %159 = alloca %struct.s2n_result, align 4
  %160 = alloca %struct.s2n_blob, align 8
  %161 = alloca %struct.s2n_result, align 4
  %162 = alloca %struct.s2n_blob, align 8
  %163 = alloca %struct.s2n_result, align 4
  %164 = alloca i64, align 8
  %165 = alloca ptr, align 8
  %166 = alloca ptr, align 8
  %167 = alloca i32, align 4
  %168 = alloca i32, align 4
  %169 = alloca %struct.s2n_result, align 4
  %170 = alloca i32, align 4
  %171 = alloca i32, align 4
  %172 = alloca i32, align 4
  %173 = alloca %struct.s2n_result, align 4
  %174 = alloca i32, align 4
  %175 = alloca i32, align 4
  %176 = alloca i32, align 4
  %177 = alloca %struct.s2n_result, align 4
  %178 = alloca %struct.s2n_blob, align 8
  %179 = alloca %struct.s2n_result, align 4
  %180 = alloca i64, align 8
  %181 = alloca ptr, align 8
  %182 = alloca ptr, align 8
  %183 = alloca i32, align 4
  %184 = alloca i32, align 4
  %185 = alloca %struct.s2n_result, align 4
  %186 = alloca i32, align 4
  %187 = alloca i32, align 4
  %188 = alloca i32, align 4
  %189 = alloca i32, align 4
  %190 = alloca %struct.s2n_result, align 4
  %191 = alloca %struct.s2n_blob, align 8
  %192 = alloca %struct.s2n_result, align 4
  %193 = alloca %struct.s2n_blob, align 8
  %194 = alloca %struct.s2n_result, align 4
  %195 = alloca i64, align 8
  %196 = alloca ptr, align 8
  %197 = alloca %struct.s2n_result, align 4
  %198 = alloca i32, align 4
  %199 = alloca %struct.s2n_result, align 4
  %200 = alloca i32, align 4
  %201 = alloca %struct.s2n_result, align 4
  %202 = alloca i32, align 4
  %203 = alloca i32, align 4
  %204 = alloca i32, align 4
  %205 = alloca %struct.s2n_result, align 4
  %206 = alloca i32, align 4
  %207 = 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 %208

208:                                              ; preds = %2
  br label %209

209:                                              ; preds = %208
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %210 = load ptr, ptr @stdout, align 8, !tbaa !9
  %211 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %210, ptr noundef @.str, ptr noundef @.str.1) #10
  %212 = load ptr, ptr @stdout, align 8, !tbaa !9
  %213 = call i32 @fflush(ptr noundef %212)
  br label %214

214:                                              ; preds = %209
  %215 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %216 = icmp eq i32 %215, -1
  br i1 %216, label %217, label %268

217:                                              ; preds = %214
  br label %218

218:                                              ; preds = %217
  br label %219

219:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  %220 = call ptr @__errno_location() #11
  %221 = load i32, ptr %220, align 4, !tbaa !5
  store i32 %221, ptr %6, align 4, !tbaa !5
  %222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %223 = call i32 @s2n_print_stacktrace(ptr noundef %222)
  %224 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %225 = trunc i8 %224 to i1
  br i1 %225, label %226, label %248

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

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

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

265:                                              ; preds = %248, %231
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %266

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

267:                                              ; No predecessors!
  br label %268

268:                                              ; preds = %267, %214
  br label %269

269:                                              ; preds = %268
  br label %270

270:                                              ; preds = %269
  %271 = load i32, ptr @test_count, align 4, !tbaa !5
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr @test_count, align 4, !tbaa !5
  %273 = call i32 @s2n_enable_atexit()
  %274 = icmp eq i32 %273, -1
  br i1 %274, label %275, label %326

275:                                              ; preds = %270
  br label %276

276:                                              ; preds = %275
  br label %277

277:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #10
  %278 = call ptr @__errno_location() #11
  %279 = load i32, ptr %278, align 4, !tbaa !5
  store i32 %279, ptr %7, align 4, !tbaa !5
  %280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %281 = call i32 @s2n_print_stacktrace(ptr noundef %280)
  %282 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %283 = trunc i8 %282 to i1
  br i1 %283, label %284, label %306

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

289:                                              ; preds = %284
  %290 = load i32, ptr %7, align 4, !tbaa !5
  %291 = call ptr @__errno_location() #11
  store i32 %290, ptr %291, align 4, !tbaa !5
  %292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %293 = load i32, ptr @test_count, align 4, !tbaa !5
  %294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %295 = load i32, ptr %294, align 4, !tbaa !5
  %296 = call ptr @s2n_strerror(i32 noundef %295, ptr noundef @.str.4)
  %297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %298 = load i32, ptr %297, align 4, !tbaa !5
  %299 = call ptr @s2n_strerror_debug(i32 noundef %298, ptr noundef @.str.4)
  %300 = call ptr @__errno_location() #11
  %301 = load i32, ptr %300, align 4, !tbaa !5
  %302 = call ptr @strerror(i32 noundef %301) #10
  %303 = call ptr @__errno_location() #11
  %304 = load i32, ptr %303, align 4, !tbaa !5
  %305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %292, ptr noundef @.str.2, i32 noundef %293, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 41, ptr noundef %296, ptr noundef %299, ptr noundef %302, i32 noundef %304) #10
  br label %323

306:                                              ; preds = %284, %277
  %307 = load i32, ptr %7, align 4, !tbaa !5
  %308 = call ptr @__errno_location() #11
  store i32 %307, ptr %308, align 4, !tbaa !5
  %309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %310 = load i32, ptr @test_count, align 4, !tbaa !5
  %311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %312 = load i32, ptr %311, align 4, !tbaa !5
  %313 = call ptr @s2n_strerror(i32 noundef %312, ptr noundef @.str.4)
  %314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %315 = load i32, ptr %314, align 4, !tbaa !5
  %316 = call ptr @s2n_strerror_debug(i32 noundef %315, ptr noundef @.str.4)
  %317 = call ptr @__errno_location() #11
  %318 = load i32, ptr %317, align 4, !tbaa !5
  %319 = call ptr @strerror(i32 noundef %318) #10
  %320 = call ptr @__errno_location() #11
  %321 = load i32, ptr %320, align 4, !tbaa !5
  %322 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %309, ptr noundef @.str.5, i32 noundef %310, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 41, ptr noundef %313, ptr noundef %316, ptr noundef %319, i32 noundef %321) #10
  br label %323

323:                                              ; preds = %306, %289
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %324

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

325:                                              ; No predecessors!
  br label %326

326:                                              ; preds = %325, %270
  br label %327

327:                                              ; preds = %326
  br label %328

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328
  %330 = call i32 @s2n_init()
  %331 = icmp eq i32 %330, -1
  br i1 %331, label %332, label %383

332:                                              ; preds = %329
  br label %333

333:                                              ; preds = %332
  br label %334

334:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %335 = call ptr @__errno_location() #11
  %336 = load i32, ptr %335, align 4, !tbaa !5
  store i32 %336, ptr %8, align 4, !tbaa !5
  %337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %338 = call i32 @s2n_print_stacktrace(ptr noundef %337)
  %339 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %340 = trunc i8 %339 to i1
  br i1 %340, label %341, label %363

341:                                              ; preds = %334
  %342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %343 = call i32 @fileno(ptr noundef %342) #10
  %344 = call i32 @isatty(i32 noundef %343) #10
  %345 = icmp ne i32 %344, 0
  br i1 %345, label %346, label %363

346:                                              ; preds = %341
  %347 = load i32, ptr %8, align 4, !tbaa !5
  %348 = call ptr @__errno_location() #11
  store i32 %347, ptr %348, align 4, !tbaa !5
  %349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %350 = load i32, ptr @test_count, align 4, !tbaa !5
  %351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = call ptr @s2n_strerror(i32 noundef %352, ptr noundef @.str.4)
  %354 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %355 = load i32, ptr %354, align 4, !tbaa !5
  %356 = call ptr @s2n_strerror_debug(i32 noundef %355, ptr noundef @.str.4)
  %357 = call ptr @__errno_location() #11
  %358 = load i32, ptr %357, align 4, !tbaa !5
  %359 = call ptr @strerror(i32 noundef %358) #10
  %360 = call ptr @__errno_location() #11
  %361 = load i32, ptr %360, align 4, !tbaa !5
  %362 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %349, ptr noundef @.str.2, i32 noundef %350, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 41, ptr noundef %353, ptr noundef %356, ptr noundef %359, i32 noundef %361) #10
  br label %380

363:                                              ; preds = %341, %334
  %364 = load i32, ptr %8, align 4, !tbaa !5
  %365 = call ptr @__errno_location() #11
  store i32 %364, ptr %365, align 4, !tbaa !5
  %366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %367 = load i32, ptr @test_count, align 4, !tbaa !5
  %368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %369 = load i32, ptr %368, align 4, !tbaa !5
  %370 = call ptr @s2n_strerror(i32 noundef %369, ptr noundef @.str.4)
  %371 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %372 = load i32, ptr %371, align 4, !tbaa !5
  %373 = call ptr @s2n_strerror_debug(i32 noundef %372, ptr noundef @.str.4)
  %374 = call ptr @__errno_location() #11
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = call ptr @strerror(i32 noundef %375) #10
  %377 = call ptr @__errno_location() #11
  %378 = load i32, ptr %377, align 4, !tbaa !5
  %379 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %366, ptr noundef @.str.5, i32 noundef %367, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 41, ptr noundef %370, ptr noundef %373, ptr noundef %376, i32 noundef %378) #10
  br label %380

380:                                              ; preds = %363, %346
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %381

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

382:                                              ; No predecessors!
  br label %383

383:                                              ; preds = %382, %329
  br label %384

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #10
  call void @llvm.memset.p0.i64(ptr align 8 %9, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr %10) #10
  call void @llvm.memset.p0.i64(ptr align 16 %10, i8 0, i64 48, i1 false)
  br label %386

386:                                              ; preds = %385
  %387 = load i32, ptr @test_count, align 4, !tbaa !5
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr @test_count, align 4, !tbaa !5
  %389 = getelementptr inbounds [48 x i8], ptr %10, i64 0, i64 0
  %390 = call i32 @s2n_blob_init(ptr noundef %9, ptr noundef %389, i32 noundef 48)
  %391 = icmp eq i32 %390, -1
  br i1 %391, label %392, label %445

392:                                              ; preds = %386
  br label %393

393:                                              ; preds = %392
  br label %394

394:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  %395 = call ptr @__errno_location() #11
  %396 = load i32, ptr %395, align 4, !tbaa !5
  store i32 %396, ptr %11, align 4, !tbaa !5
  %397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %398 = call i32 @s2n_print_stacktrace(ptr noundef %397)
  %399 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %400 = trunc i8 %399 to i1
  br i1 %400, label %401, label %423

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

406:                                              ; preds = %401
  %407 = load i32, ptr %11, align 4, !tbaa !5
  %408 = call ptr @__errno_location() #11
  store i32 %407, ptr %408, align 4, !tbaa !5
  %409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %410 = load i32, ptr @test_count, align 4, !tbaa !5
  %411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %412 = load i32, ptr %411, align 4, !tbaa !5
  %413 = call ptr @s2n_strerror(i32 noundef %412, ptr noundef @.str.4)
  %414 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = call ptr @s2n_strerror_debug(i32 noundef %415, ptr noundef @.str.4)
  %417 = call ptr @__errno_location() #11
  %418 = load i32, ptr %417, align 4, !tbaa !5
  %419 = call ptr @strerror(i32 noundef %418) #10
  %420 = call ptr @__errno_location() #11
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %409, ptr noundef @.str.2, i32 noundef %410, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 46, ptr noundef %413, ptr noundef %416, ptr noundef %419, i32 noundef %421) #10
  br label %440

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

440:                                              ; preds = %423, %406
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  br label %441

441:                                              ; preds = %440
  br label %442

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

443:                                              ; No predecessors!
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444, %386
  br label %446

446:                                              ; preds = %445
  br label %447

447:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #10
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 24, i1 false)
  br label %448

448:                                              ; preds = %447
  %449 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %12, ptr noundef @.str.9)
  %450 = getelementptr inbounds %struct.s2n_result, ptr %13, i32 0, i32 0
  store i32 %449, ptr %450, align 4
  %451 = getelementptr inbounds %struct.s2n_result, ptr %13, i32 0, i32 0
  %452 = load i32, ptr %451, align 4
  %453 = call zeroext i1 @s2n_result_is_ok(i32 %452)
  br i1 %453, label %455, label %454

454:                                              ; preds = %448
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %4404

455:                                              ; preds = %448
  br label %456

456:                                              ; preds = %455
  br label %457

457:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  store i64 0, ptr %15, align 8, !tbaa !15
  br label %458

458:                                              ; preds = %682, %457
  %459 = load i64, ptr %15, align 8, !tbaa !15
  %460 = icmp ult i64 %459, 2
  br i1 %460, label %462, label %461

461:                                              ; preds = %458
  store i32 32, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %685

462:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %463 = load i64, ptr %15, align 8, !tbaa !15
  %464 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %463
  %465 = load i32, ptr %464, align 4, !tbaa !5
  %466 = call ptr @s2n_connection_new(i32 noundef %465)
  store ptr %466, ptr %16, align 8, !tbaa !9
  %467 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %468 = load ptr, ptr %16, align 8, !tbaa !9
  %469 = getelementptr inbounds %struct.s2n_connection, ptr %468, i32 0, i32 27
  %470 = load ptr, ptr %469, align 8, !tbaa !17
  %471 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %470, i32 0, i32 0
  store ptr %467, ptr %471, align 8, !tbaa !43
  br label %472

472:                                              ; preds = %462
  %473 = load i32, ptr @test_count, align 4, !tbaa !5
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr @test_count, align 4, !tbaa !5
  %475 = load ptr, ptr %16, align 8, !tbaa !9
  %476 = call i32 @s2n_tls13_extract_secret(ptr noundef %475, i32 noundef 1)
  %477 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  store i32 %476, ptr %477, align 4
  %478 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  %479 = load i32, ptr %478, align 4
  %480 = call zeroext i1 @s2n_result_is_ok(i32 %479)
  br i1 %480, label %534, label %481

481:                                              ; preds = %472
  br label %482

482:                                              ; preds = %481
  br label %483

483:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  %484 = call ptr @__errno_location() #11
  %485 = load i32, ptr %484, align 4, !tbaa !5
  store i32 %485, ptr %18, align 4, !tbaa !5
  %486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %487 = call i32 @s2n_print_stacktrace(ptr noundef %486)
  %488 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %489 = trunc i8 %488 to i1
  br i1 %489, label %490, label %512

490:                                              ; preds = %483
  %491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %492 = call i32 @fileno(ptr noundef %491) #10
  %493 = call i32 @isatty(i32 noundef %492) #10
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %495, label %512

495:                                              ; preds = %490
  %496 = load i32, ptr %18, align 4, !tbaa !5
  %497 = call ptr @__errno_location() #11
  store i32 %496, ptr %497, align 4, !tbaa !5
  %498 = load ptr, ptr @stderr, align 8, !tbaa !9
  %499 = load i32, ptr @test_count, align 4, !tbaa !5
  %500 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %501 = load i32, ptr %500, align 4, !tbaa !5
  %502 = call ptr @s2n_strerror(i32 noundef %501, ptr noundef @.str.4)
  %503 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %504 = load i32, ptr %503, align 4, !tbaa !5
  %505 = call ptr @s2n_strerror_debug(i32 noundef %504, ptr noundef @.str.4)
  %506 = call ptr @__errno_location() #11
  %507 = load i32, ptr %506, align 4, !tbaa !5
  %508 = call ptr @strerror(i32 noundef %507) #10
  %509 = call ptr @__errno_location() #11
  %510 = load i32, ptr %509, align 4, !tbaa !5
  %511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %498, ptr noundef @.str.2, i32 noundef %499, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 78, ptr noundef %502, ptr noundef %505, ptr noundef %508, i32 noundef %510) #10
  br label %529

512:                                              ; preds = %490, %483
  %513 = load i32, ptr %18, align 4, !tbaa !5
  %514 = call ptr @__errno_location() #11
  store i32 %513, ptr %514, align 4, !tbaa !5
  %515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %516 = load i32, ptr @test_count, align 4, !tbaa !5
  %517 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %518 = load i32, ptr %517, align 4, !tbaa !5
  %519 = call ptr @s2n_strerror(i32 noundef %518, ptr noundef @.str.4)
  %520 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %521 = load i32, ptr %520, align 4, !tbaa !5
  %522 = call ptr @s2n_strerror_debug(i32 noundef %521, ptr noundef @.str.4)
  %523 = call ptr @__errno_location() #11
  %524 = load i32, ptr %523, align 4, !tbaa !5
  %525 = call ptr @strerror(i32 noundef %524) #10
  %526 = call ptr @__errno_location() #11
  %527 = load i32, ptr %526, align 4, !tbaa !5
  %528 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %515, ptr noundef @.str.5, i32 noundef %516, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 78, ptr noundef %519, ptr noundef %522, ptr noundef %525, i32 noundef %527) #10
  br label %529

529:                                              ; preds = %512, %495
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  br label %530

530:                                              ; preds = %529
  br label %531

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

532:                                              ; No predecessors!
  br label %533

533:                                              ; preds = %532
  br label %534

534:                                              ; preds = %533, %472
  br label %535

535:                                              ; preds = %534
  br label %536

536:                                              ; preds = %535
  br label %537

537:                                              ; preds = %536
  %538 = getelementptr inbounds %struct.s2n_blob, ptr %12, i32 0, i32 1
  %539 = load i32, ptr %538, align 8, !tbaa !48
  %540 = icmp ne i32 %539, 0
  br i1 %540, label %541, label %613

541:                                              ; preds = %537
  br label %542

542:                                              ; preds = %541
  %543 = load i32, ptr @test_count, align 4, !tbaa !5
  %544 = add nsw i32 %543, 1
  store i32 %544, ptr @test_count, align 4, !tbaa !5
  %545 = load ptr, ptr %16, align 8, !tbaa !9
  %546 = getelementptr inbounds %struct.s2n_connection, ptr %545, i32 0, i32 28
  %547 = getelementptr inbounds %struct.s2n_secrets, ptr %546, i32 0, i32 0
  %548 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %547, i32 0, i32 0
  %549 = getelementptr inbounds [48 x i8], ptr %548, i64 0, i64 0
  %550 = getelementptr inbounds %struct.s2n_blob, ptr %12, i32 0, i32 0
  %551 = load ptr, ptr %550, align 8, !tbaa !49
  %552 = getelementptr inbounds %struct.s2n_blob, ptr %12, i32 0, i32 1
  %553 = load i32, ptr %552, align 8, !tbaa !48
  %554 = zext i32 %553 to i64
  %555 = call i32 @memcmp(ptr noundef %549, ptr noundef %551, i64 noundef %554) #13
  %556 = icmp eq i32 %555, 0
  br i1 %556, label %610, label %557

557:                                              ; preds = %542
  br label %558

558:                                              ; preds = %557
  br label %559

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

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

571:                                              ; preds = %566
  %572 = load i32, ptr %19, align 4, !tbaa !5
  %573 = call ptr @__errno_location() #11
  store i32 %572, ptr %573, align 4, !tbaa !5
  %574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %575 = load i32, ptr @test_count, align 4, !tbaa !5
  %576 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %577 = load i32, ptr %576, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror(i32 noundef %577, ptr noundef @.str.4)
  %579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = call ptr @s2n_strerror_debug(i32 noundef %580, ptr noundef @.str.4)
  %582 = call ptr @__errno_location() #11
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = call ptr @strerror(i32 noundef %583) #10
  %585 = call ptr @__errno_location() #11
  %586 = load i32, ptr %585, align 4, !tbaa !5
  %587 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %574, ptr noundef @.str.2, i32 noundef %575, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 80, ptr noundef %578, ptr noundef %581, ptr noundef %584, i32 noundef %586) #10
  br label %605

588:                                              ; preds = %566, %559
  %589 = load i32, ptr %19, align 4, !tbaa !5
  %590 = call ptr @__errno_location() #11
  store i32 %589, ptr %590, align 4, !tbaa !5
  %591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %592 = load i32, ptr @test_count, align 4, !tbaa !5
  %593 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %594 = load i32, ptr %593, align 4, !tbaa !5
  %595 = call ptr @s2n_strerror(i32 noundef %594, ptr noundef @.str.4)
  %596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %597 = load i32, ptr %596, align 4, !tbaa !5
  %598 = call ptr @s2n_strerror_debug(i32 noundef %597, ptr noundef @.str.4)
  %599 = call ptr @__errno_location() #11
  %600 = load i32, ptr %599, align 4, !tbaa !5
  %601 = call ptr @strerror(i32 noundef %600) #10
  %602 = call ptr @__errno_location() #11
  %603 = load i32, ptr %602, align 4, !tbaa !5
  %604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %591, ptr noundef @.str.5, i32 noundef %592, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 80, ptr noundef %595, ptr noundef %598, ptr noundef %601, i32 noundef %603) #10
  br label %605

605:                                              ; preds = %588, %571
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %606

606:                                              ; preds = %605
  br label %607

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

608:                                              ; No predecessors!
  br label %609

609:                                              ; preds = %608
  br label %610

610:                                              ; preds = %609, %542
  br label %611

611:                                              ; preds = %610
  br label %612

612:                                              ; preds = %611
  br label %613

613:                                              ; preds = %612, %537
  br label %614

614:                                              ; preds = %613
  br label %615

615:                                              ; preds = %614
  br label %616

616:                                              ; preds = %615
  %617 = load i32, ptr @test_count, align 4, !tbaa !5
  %618 = add nsw i32 %617, 1
  store i32 %618, ptr @test_count, align 4, !tbaa !5
  %619 = load ptr, ptr %16, align 8, !tbaa !9
  %620 = getelementptr inbounds %struct.s2n_connection, ptr %619, i32 0, i32 28
  %621 = getelementptr inbounds %struct.s2n_secrets, ptr %620, i32 0, i32 1
  %622 = load i32, ptr %621, align 4, !tbaa !50
  %623 = icmp eq i32 %622, 1
  br i1 %623, label %677, label %624

624:                                              ; preds = %616
  br label %625

625:                                              ; preds = %624
  br label %626

626:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  %627 = call ptr @__errno_location() #11
  %628 = load i32, ptr %627, align 4, !tbaa !5
  store i32 %628, ptr %20, align 4, !tbaa !5
  %629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %630 = call i32 @s2n_print_stacktrace(ptr noundef %629)
  %631 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %632 = trunc i8 %631 to i1
  br i1 %632, label %633, label %655

633:                                              ; preds = %626
  %634 = load ptr, ptr @stderr, align 8, !tbaa !9
  %635 = call i32 @fileno(ptr noundef %634) #10
  %636 = call i32 @isatty(i32 noundef %635) #10
  %637 = icmp ne i32 %636, 0
  br i1 %637, label %638, label %655

638:                                              ; preds = %633
  %639 = load i32, ptr %20, align 4, !tbaa !5
  %640 = call ptr @__errno_location() #11
  store i32 %639, ptr %640, align 4, !tbaa !5
  %641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %642 = load i32, ptr @test_count, align 4, !tbaa !5
  %643 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %644 = load i32, ptr %643, align 4, !tbaa !5
  %645 = call ptr @s2n_strerror(i32 noundef %644, ptr noundef @.str.4)
  %646 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %647 = load i32, ptr %646, align 4, !tbaa !5
  %648 = call ptr @s2n_strerror_debug(i32 noundef %647, ptr noundef @.str.4)
  %649 = call ptr @__errno_location() #11
  %650 = load i32, ptr %649, align 4, !tbaa !5
  %651 = call ptr @strerror(i32 noundef %650) #10
  %652 = call ptr @__errno_location() #11
  %653 = load i32, ptr %652, align 4, !tbaa !5
  %654 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %641, ptr noundef @.str.2, i32 noundef %642, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 81, ptr noundef %645, ptr noundef %648, ptr noundef %651, i32 noundef %653) #10
  br label %672

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

672:                                              ; preds = %655, %638
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  br label %673

673:                                              ; preds = %672
  br label %674

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

675:                                              ; No predecessors!
  br label %676

676:                                              ; preds = %675
  br label %677

677:                                              ; preds = %676, %616
  br label %678

678:                                              ; preds = %677
  br label %679

679:                                              ; preds = %678
  %680 = call i32 @s2n_connection_ptr_free(ptr noundef %16)
  %681 = getelementptr inbounds %struct.s2n_result, ptr %21, i32 0, i32 0
  store i32 %680, ptr %681, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %682

682:                                              ; preds = %679
  %683 = load i64, ptr %15, align 8, !tbaa !15
  %684 = add i64 %683, 1
  store i64 %684, ptr %15, align 8, !tbaa !15
  br label %458, !llvm.loop !51

685:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #10
  call void @llvm.memset.p0.i64(ptr align 8 %22, i8 0, i64 24, i1 false)
  br label %686

686:                                              ; preds = %685
  %687 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %22, ptr noundef @.str.13)
  %688 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  store i32 %687, ptr %688, align 4
  %689 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  %690 = load i32, ptr %689, align 4
  %691 = call zeroext i1 @s2n_result_is_ok(i32 %690)
  br i1 %691, label %693, label %692

692:                                              ; preds = %686
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %4402

693:                                              ; preds = %686
  br label %694

694:                                              ; preds = %693
  br label %695

695:                                              ; preds = %694
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  store i32 1034, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #10
  call void @llvm.memset.p0.i64(ptr align 8 %25, i8 0, i64 24, i1 false)
  br label %696

696:                                              ; preds = %695
  %697 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %25, ptr noundef @.str.14)
  %698 = getelementptr inbounds %struct.s2n_result, ptr %26, i32 0, i32 0
  store i32 %697, ptr %698, align 4
  %699 = getelementptr inbounds %struct.s2n_result, ptr %26, i32 0, i32 0
  %700 = load i32, ptr %699, align 4
  %701 = call zeroext i1 @s2n_result_is_ok(i32 %700)
  br i1 %701, label %703, label %702

702:                                              ; preds = %696
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %1624

703:                                              ; preds = %696
  br label %704

704:                                              ; preds = %703
  br label %705

705:                                              ; preds = %704
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #10
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 24, i1 false)
  br label %706

706:                                              ; preds = %705
  %707 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %27, ptr noundef @.str.15)
  %708 = getelementptr inbounds %struct.s2n_result, ptr %28, i32 0, i32 0
  store i32 %707, ptr %708, align 4
  %709 = getelementptr inbounds %struct.s2n_result, ptr %28, i32 0, i32 0
  %710 = load i32, ptr %709, align 4
  %711 = call zeroext i1 @s2n_result_is_ok(i32 %710)
  br i1 %711, label %713, label %712

712:                                              ; preds = %706
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %1622

713:                                              ; preds = %706
  br label %714

714:                                              ; preds = %713
  br label %715

715:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #10
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 24, i1 false)
  br label %716

716:                                              ; preds = %715
  %717 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %29, ptr noundef @.str.16)
  %718 = getelementptr inbounds %struct.s2n_result, ptr %30, i32 0, i32 0
  store i32 %717, ptr %718, align 4
  %719 = getelementptr inbounds %struct.s2n_result, ptr %30, i32 0, i32 0
  %720 = load i32, ptr %719, align 4
  %721 = call zeroext i1 @s2n_result_is_ok(i32 %720)
  br i1 %721, label %723, label %722

722:                                              ; preds = %716
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %1620

723:                                              ; preds = %716
  br label %724

724:                                              ; preds = %723
  br label %725

725:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #10
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 24, i1 false)
  br label %726

726:                                              ; preds = %725
  %727 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %31, ptr noundef @.str.17)
  %728 = getelementptr inbounds %struct.s2n_result, ptr %32, i32 0, i32 0
  store i32 %727, ptr %728, align 4
  %729 = getelementptr inbounds %struct.s2n_result, ptr %32, i32 0, i32 0
  %730 = load i32, ptr %729, align 4
  %731 = call zeroext i1 @s2n_result_is_ok(i32 %730)
  br i1 %731, label %733, label %732

732:                                              ; preds = %726
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %1618

733:                                              ; preds = %726
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %736 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %736, ptr %33, align 8, !tbaa !9
  %737 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %738 = load ptr, ptr %33, align 8, !tbaa !9
  %739 = getelementptr inbounds %struct.s2n_connection, ptr %738, i32 0, i32 27
  %740 = load ptr, ptr %739, align 8, !tbaa !17
  %741 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %740, i32 0, i32 0
  store ptr %737, ptr %741, align 8, !tbaa !43
  br label %742

742:                                              ; preds = %735
  %743 = load i32, ptr @test_count, align 4, !tbaa !5
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr @test_count, align 4, !tbaa !5
  %745 = load ptr, ptr %33, align 8, !tbaa !9
  %746 = call i32 @s2n_connection_set_test_early_secret(ptr noundef %745, ptr noundef %12)
  %747 = getelementptr inbounds %struct.s2n_result, ptr %34, i32 0, i32 0
  store i32 %746, ptr %747, align 4
  %748 = getelementptr inbounds %struct.s2n_result, ptr %34, i32 0, i32 0
  %749 = load i32, ptr %748, align 4
  %750 = call zeroext i1 @s2n_result_is_ok(i32 %749)
  br i1 %750, label %804, label %751

751:                                              ; preds = %742
  br label %752

752:                                              ; preds = %751
  br label %753

753:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  %754 = call ptr @__errno_location() #11
  %755 = load i32, ptr %754, align 4, !tbaa !5
  store i32 %755, ptr %35, align 4, !tbaa !5
  %756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %757 = call i32 @s2n_print_stacktrace(ptr noundef %756)
  %758 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %759 = trunc i8 %758 to i1
  br i1 %759, label %760, label %782

760:                                              ; preds = %753
  %761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %762 = call i32 @fileno(ptr noundef %761) #10
  %763 = call i32 @isatty(i32 noundef %762) #10
  %764 = icmp ne i32 %763, 0
  br i1 %764, label %765, label %782

765:                                              ; preds = %760
  %766 = load i32, ptr %35, align 4, !tbaa !5
  %767 = call ptr @__errno_location() #11
  store i32 %766, ptr %767, align 4, !tbaa !5
  %768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %769 = load i32, ptr @test_count, align 4, !tbaa !5
  %770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %771 = load i32, ptr %770, align 4, !tbaa !5
  %772 = call ptr @s2n_strerror(i32 noundef %771, ptr noundef @.str.4)
  %773 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %774 = load i32, ptr %773, align 4, !tbaa !5
  %775 = call ptr @s2n_strerror_debug(i32 noundef %774, ptr noundef @.str.4)
  %776 = call ptr @__errno_location() #11
  %777 = load i32, ptr %776, align 4, !tbaa !5
  %778 = call ptr @strerror(i32 noundef %777) #10
  %779 = call ptr @__errno_location() #11
  %780 = load i32, ptr %779, align 4, !tbaa !5
  %781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %768, ptr noundef @.str.2, i32 noundef %769, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 152, ptr noundef %772, ptr noundef %775, ptr noundef %778, i32 noundef %780) #10
  br label %799

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

799:                                              ; preds = %782, %765
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %800

800:                                              ; preds = %799
  br label %801

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

802:                                              ; No predecessors!
  br label %803

803:                                              ; preds = %802
  br label %804

804:                                              ; preds = %803, %742
  br label %805

805:                                              ; preds = %804
  br label %806

806:                                              ; preds = %805
  %807 = load ptr, ptr @curve, align 8, !tbaa !9
  %808 = load ptr, ptr %33, align 8, !tbaa !9
  %809 = getelementptr inbounds %struct.s2n_connection, ptr %808, i32 0, i32 31
  %810 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %809, i32 0, i32 1
  %811 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %810, i32 0, i32 0
  store ptr %807, ptr %811, align 8, !tbaa !53
  %812 = getelementptr inbounds %struct.s2n_blob, ptr %29, i32 0, i32 0
  %813 = load ptr, ptr %812, align 8, !tbaa !49
  %814 = getelementptr inbounds %struct.s2n_blob, ptr %29, i32 0, i32 1
  %815 = load i32, ptr %814, align 8, !tbaa !48
  %816 = zext i32 %815 to i64
  %817 = call ptr @EVP_PKEY_new_raw_private_key(i32 noundef 1034, ptr noundef null, ptr noundef %813, i64 noundef %816)
  %818 = load ptr, ptr %33, align 8, !tbaa !9
  %819 = getelementptr inbounds %struct.s2n_connection, ptr %818, i32 0, i32 31
  %820 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %819, i32 0, i32 1
  %821 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %820, i32 0, i32 1
  store ptr %817, ptr %821, align 8, !tbaa !54
  br label %822

822:                                              ; preds = %806
  %823 = load i32, ptr @test_count, align 4, !tbaa !5
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr @test_count, align 4, !tbaa !5
  %825 = load ptr, ptr %33, align 8, !tbaa !9
  %826 = getelementptr inbounds %struct.s2n_connection, ptr %825, i32 0, i32 31
  %827 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %826, i32 0, i32 1
  %828 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %827, i32 0, i32 1
  %829 = load ptr, ptr %828, align 8, !tbaa !54
  %830 = icmp eq ptr %829, null
  br i1 %830, label %831, label %884

831:                                              ; preds = %822
  br label %832

832:                                              ; preds = %831
  br label %833

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

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

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

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

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

880:                                              ; preds = %879
  br label %881

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

882:                                              ; No predecessors!
  br label %883

883:                                              ; preds = %882
  br label %884

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

885:                                              ; preds = %884
  br label %886

886:                                              ; preds = %885
  %887 = load ptr, ptr @curve, align 8, !tbaa !9
  %888 = load ptr, ptr %33, align 8, !tbaa !9
  %889 = getelementptr inbounds %struct.s2n_connection, ptr %888, i32 0, i32 31
  %890 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %889, i32 0, i32 3
  %891 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %890, i32 0, i32 0
  store ptr %887, ptr %891, align 8, !tbaa !55
  %892 = getelementptr inbounds %struct.s2n_blob, ptr %27, i32 0, i32 0
  %893 = load ptr, ptr %892, align 8, !tbaa !49
  %894 = getelementptr inbounds %struct.s2n_blob, ptr %27, i32 0, i32 1
  %895 = load i32, ptr %894, align 8, !tbaa !48
  %896 = zext i32 %895 to i64
  %897 = call ptr @EVP_PKEY_new_raw_public_key(i32 noundef 1034, ptr noundef null, ptr noundef %893, i64 noundef %896)
  %898 = load ptr, ptr %33, align 8, !tbaa !9
  %899 = getelementptr inbounds %struct.s2n_connection, ptr %898, i32 0, i32 31
  %900 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %899, i32 0, i32 3
  %901 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %900, i32 0, i32 1
  store ptr %897, ptr %901, align 8, !tbaa !56
  br label %902

902:                                              ; preds = %886
  %903 = load i32, ptr @test_count, align 4, !tbaa !5
  %904 = add nsw i32 %903, 1
  store i32 %904, ptr @test_count, align 4, !tbaa !5
  %905 = load ptr, ptr %33, align 8, !tbaa !9
  %906 = getelementptr inbounds %struct.s2n_connection, ptr %905, i32 0, i32 31
  %907 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %906, i32 0, i32 3
  %908 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %907, i32 0, i32 1
  %909 = load ptr, ptr %908, align 8, !tbaa !56
  %910 = icmp eq ptr %909, null
  br i1 %910, label %911, label %964

911:                                              ; preds = %902
  br label %912

912:                                              ; preds = %911
  br label %913

913:                                              ; preds = %912
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  %914 = call ptr @__errno_location() #11
  %915 = load i32, ptr %914, align 4, !tbaa !5
  store i32 %915, ptr %37, align 4, !tbaa !5
  %916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %917 = call i32 @s2n_print_stacktrace(ptr noundef %916)
  %918 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %919 = trunc i8 %918 to i1
  br i1 %919, label %920, label %942

920:                                              ; preds = %913
  %921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %922 = call i32 @fileno(ptr noundef %921) #10
  %923 = call i32 @isatty(i32 noundef %922) #10
  %924 = icmp ne i32 %923, 0
  br i1 %924, label %925, label %942

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

942:                                              ; preds = %920, %913
  %943 = load i32, ptr %37, align 4, !tbaa !5
  %944 = call ptr @__errno_location() #11
  store i32 %943, ptr %944, align 4, !tbaa !5
  %945 = load ptr, ptr @stderr, align 8, !tbaa !9
  %946 = load i32, ptr @test_count, align 4, !tbaa !5
  %947 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %948 = load i32, ptr %947, align 4, !tbaa !5
  %949 = call ptr @s2n_strerror(i32 noundef %948, ptr noundef @.str.4)
  %950 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %951 = load i32, ptr %950, align 4, !tbaa !5
  %952 = call ptr @s2n_strerror_debug(i32 noundef %951, ptr noundef @.str.4)
  %953 = call ptr @__errno_location() #11
  %954 = load i32, ptr %953, align 4, !tbaa !5
  %955 = call ptr @strerror(i32 noundef %954) #10
  %956 = call ptr @__errno_location() #11
  %957 = load i32, ptr %956, align 4, !tbaa !5
  %958 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %945, ptr noundef @.str.5, i32 noundef %946, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 162, ptr noundef %949, ptr noundef %952, ptr noundef %955, i32 noundef %957) #10
  br label %959

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

960:                                              ; preds = %959
  br label %961

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

962:                                              ; No predecessors!
  br label %963

963:                                              ; preds = %962
  br label %964

964:                                              ; preds = %963, %902
  br label %965

965:                                              ; preds = %964
  br label %966

966:                                              ; preds = %965
  br 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 %33, align 8, !tbaa !9
  %971 = call i32 @s2n_tls13_extract_secret(ptr noundef %970, i32 noundef 2)
  %972 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  store i32 %971, ptr %972, align 4
  %973 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  %974 = load i32, ptr %973, align 4
  %975 = call zeroext i1 @s2n_result_is_ok(i32 %974)
  br i1 %975, label %1029, label %976

976:                                              ; preds = %967
  br label %977

977:                                              ; preds = %976
  br label %978

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

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

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

1007:                                             ; preds = %985, %978
  %1008 = load i32, ptr %39, align 4, !tbaa !5
  %1009 = call ptr @__errno_location() #11
  store i32 %1008, ptr %1009, align 4, !tbaa !5
  %1010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1011 = load i32, ptr @test_count, align 4, !tbaa !5
  %1012 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1013 = load i32, ptr %1012, align 4, !tbaa !5
  %1014 = call ptr @s2n_strerror(i32 noundef %1013, ptr noundef @.str.4)
  %1015 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1016 = load i32, ptr %1015, align 4, !tbaa !5
  %1017 = call ptr @s2n_strerror_debug(i32 noundef %1016, ptr noundef @.str.4)
  %1018 = call ptr @__errno_location() #11
  %1019 = load i32, ptr %1018, align 4, !tbaa !5
  %1020 = call ptr @strerror(i32 noundef %1019) #10
  %1021 = call ptr @__errno_location() #11
  %1022 = load i32, ptr %1021, align 4, !tbaa !5
  %1023 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1010, ptr noundef @.str.5, i32 noundef %1011, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 164, ptr noundef %1014, ptr noundef %1017, ptr noundef %1020, i32 noundef %1022) #10
  br label %1024

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

1025:                                             ; preds = %1024
  br label %1026

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

1027:                                             ; No predecessors!
  br label %1028

1028:                                             ; preds = %1027
  br label %1029

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

1030:                                             ; preds = %1029
  br label %1031

1031:                                             ; preds = %1030
  br label %1032

1032:                                             ; preds = %1031
  %1033 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 1
  %1034 = load i32, ptr %1033, align 8, !tbaa !48
  %1035 = icmp ne i32 %1034, 0
  br i1 %1035, label %1036, label %1108

1036:                                             ; preds = %1032
  br label %1037

1037:                                             ; preds = %1036
  %1038 = load i32, ptr @test_count, align 4, !tbaa !5
  %1039 = add nsw i32 %1038, 1
  store i32 %1039, ptr @test_count, align 4, !tbaa !5
  %1040 = load ptr, ptr %33, align 8, !tbaa !9
  %1041 = getelementptr inbounds %struct.s2n_connection, ptr %1040, i32 0, i32 28
  %1042 = getelementptr inbounds %struct.s2n_secrets, ptr %1041, i32 0, i32 0
  %1043 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %1042, i32 0, i32 0
  %1044 = getelementptr inbounds [48 x i8], ptr %1043, i64 0, i64 0
  %1045 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 0
  %1046 = load ptr, ptr %1045, align 8, !tbaa !49
  %1047 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 1
  %1048 = load i32, ptr %1047, align 8, !tbaa !48
  %1049 = zext i32 %1048 to i64
  %1050 = call i32 @memcmp(ptr noundef %1044, ptr noundef %1046, i64 noundef %1049) #13
  %1051 = icmp eq i32 %1050, 0
  br i1 %1051, label %1105, label %1052

1052:                                             ; preds = %1037
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

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

1061:                                             ; preds = %1054
  %1062 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1063 = call i32 @fileno(ptr noundef %1062) #10
  %1064 = call i32 @isatty(i32 noundef %1063) #10
  %1065 = icmp ne i32 %1064, 0
  br i1 %1065, label %1066, label %1083

1066:                                             ; preds = %1061
  %1067 = load i32, ptr %40, align 4, !tbaa !5
  %1068 = call ptr @__errno_location() #11
  store i32 %1067, ptr %1068, align 4, !tbaa !5
  %1069 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1070 = load i32, ptr @test_count, align 4, !tbaa !5
  %1071 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1072 = load i32, ptr %1071, align 4, !tbaa !5
  %1073 = call ptr @s2n_strerror(i32 noundef %1072, ptr noundef @.str.4)
  %1074 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1075 = load i32, ptr %1074, align 4, !tbaa !5
  %1076 = call ptr @s2n_strerror_debug(i32 noundef %1075, ptr noundef @.str.4)
  %1077 = call ptr @__errno_location() #11
  %1078 = load i32, ptr %1077, align 4, !tbaa !5
  %1079 = call ptr @strerror(i32 noundef %1078) #10
  %1080 = call ptr @__errno_location() #11
  %1081 = load i32, ptr %1080, align 4, !tbaa !5
  %1082 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1069, ptr noundef @.str.2, i32 noundef %1070, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 166, ptr noundef %1073, ptr noundef %1076, ptr noundef %1079, i32 noundef %1081) #10
  br label %1100

1083:                                             ; preds = %1061, %1054
  %1084 = load i32, ptr %40, align 4, !tbaa !5
  %1085 = call ptr @__errno_location() #11
  store i32 %1084, ptr %1085, align 4, !tbaa !5
  %1086 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1087 = load i32, ptr @test_count, align 4, !tbaa !5
  %1088 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1089 = load i32, ptr %1088, align 4, !tbaa !5
  %1090 = call ptr @s2n_strerror(i32 noundef %1089, ptr noundef @.str.4)
  %1091 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1092 = load i32, ptr %1091, align 4, !tbaa !5
  %1093 = call ptr @s2n_strerror_debug(i32 noundef %1092, ptr noundef @.str.4)
  %1094 = call ptr @__errno_location() #11
  %1095 = load i32, ptr %1094, align 4, !tbaa !5
  %1096 = call ptr @strerror(i32 noundef %1095) #10
  %1097 = call ptr @__errno_location() #11
  %1098 = load i32, ptr %1097, align 4, !tbaa !5
  %1099 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1086, ptr noundef @.str.5, i32 noundef %1087, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 166, ptr noundef %1090, ptr noundef %1093, ptr noundef %1096, i32 noundef %1098) #10
  br label %1100

1100:                                             ; preds = %1083, %1066
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %1101

1101:                                             ; preds = %1100
  br label %1102

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

1103:                                             ; No predecessors!
  br label %1104

1104:                                             ; preds = %1103
  br label %1105

1105:                                             ; preds = %1104, %1037
  br label %1106

1106:                                             ; preds = %1105
  br label %1107

1107:                                             ; preds = %1106
  br label %1108

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

1109:                                             ; preds = %1108
  br label %1110

1110:                                             ; preds = %1109
  br label %1111

1111:                                             ; preds = %1110
  %1112 = load i32, ptr @test_count, align 4, !tbaa !5
  %1113 = add nsw i32 %1112, 1
  store i32 %1113, ptr @test_count, align 4, !tbaa !5
  %1114 = load ptr, ptr %33, align 8, !tbaa !9
  %1115 = getelementptr inbounds %struct.s2n_connection, ptr %1114, i32 0, i32 28
  %1116 = getelementptr inbounds %struct.s2n_secrets, ptr %1115, i32 0, i32 1
  %1117 = load i32, ptr %1116, align 4, !tbaa !50
  %1118 = icmp eq i32 %1117, 2
  br i1 %1118, label %1172, label %1119

1119:                                             ; preds = %1111
  br label %1120

1120:                                             ; preds = %1119
  br label %1121

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

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

1133:                                             ; preds = %1128
  %1134 = load i32, ptr %41, align 4, !tbaa !5
  %1135 = call ptr @__errno_location() #11
  store i32 %1134, ptr %1135, align 4, !tbaa !5
  %1136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1137 = load i32, ptr @test_count, align 4, !tbaa !5
  %1138 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1139 = load i32, ptr %1138, align 4, !tbaa !5
  %1140 = call ptr @s2n_strerror(i32 noundef %1139, ptr noundef @.str.4)
  %1141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1142 = load i32, ptr %1141, align 4, !tbaa !5
  %1143 = call ptr @s2n_strerror_debug(i32 noundef %1142, ptr noundef @.str.4)
  %1144 = call ptr @__errno_location() #11
  %1145 = load i32, ptr %1144, align 4, !tbaa !5
  %1146 = call ptr @strerror(i32 noundef %1145) #10
  %1147 = call ptr @__errno_location() #11
  %1148 = load i32, ptr %1147, align 4, !tbaa !5
  %1149 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1136, ptr noundef @.str.2, i32 noundef %1137, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 167, ptr noundef %1140, ptr noundef %1143, ptr noundef %1146, i32 noundef %1148) #10
  br label %1167

1150:                                             ; preds = %1128, %1121
  %1151 = load i32, ptr %41, align 4, !tbaa !5
  %1152 = call ptr @__errno_location() #11
  store i32 %1151, ptr %1152, align 4, !tbaa !5
  %1153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1154 = load i32, ptr @test_count, align 4, !tbaa !5
  %1155 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1156 = load i32, ptr %1155, align 4, !tbaa !5
  %1157 = call ptr @s2n_strerror(i32 noundef %1156, ptr noundef @.str.4)
  %1158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1159 = load i32, ptr %1158, align 4, !tbaa !5
  %1160 = call ptr @s2n_strerror_debug(i32 noundef %1159, ptr noundef @.str.4)
  %1161 = call ptr @__errno_location() #11
  %1162 = load i32, ptr %1161, align 4, !tbaa !5
  %1163 = call ptr @strerror(i32 noundef %1162) #10
  %1164 = call ptr @__errno_location() #11
  %1165 = load i32, ptr %1164, align 4, !tbaa !5
  %1166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1153, ptr noundef @.str.5, i32 noundef %1154, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 167, ptr noundef %1157, ptr noundef %1160, ptr noundef %1163, i32 noundef %1165) #10
  br label %1167

1167:                                             ; preds = %1150, %1133
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %1168

1168:                                             ; preds = %1167
  br label %1169

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

1170:                                             ; No predecessors!
  br label %1171

1171:                                             ; preds = %1170
  br label %1172

1172:                                             ; preds = %1171, %1111
  br label %1173

1173:                                             ; preds = %1172
  br label %1174

1174:                                             ; preds = %1173
  %1175 = call i32 @s2n_connection_ptr_free(ptr noundef %33)
  %1176 = getelementptr inbounds %struct.s2n_result, ptr %42, i32 0, i32 0
  store i32 %1175, ptr %1176, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %1177 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %1177, ptr %43, align 8, !tbaa !9
  %1178 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1179 = load ptr, ptr %43, align 8, !tbaa !9
  %1180 = getelementptr inbounds %struct.s2n_connection, ptr %1179, i32 0, i32 27
  %1181 = load ptr, ptr %1180, align 8, !tbaa !17
  %1182 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1181, i32 0, i32 0
  store ptr %1178, ptr %1182, align 8, !tbaa !43
  br label %1183

1183:                                             ; preds = %1174
  %1184 = load i32, ptr @test_count, align 4, !tbaa !5
  %1185 = add nsw i32 %1184, 1
  store i32 %1185, ptr @test_count, align 4, !tbaa !5
  %1186 = load ptr, ptr %43, align 8, !tbaa !9
  %1187 = call i32 @s2n_connection_set_test_early_secret(ptr noundef %1186, ptr noundef %12)
  %1188 = getelementptr inbounds %struct.s2n_result, ptr %44, i32 0, i32 0
  store i32 %1187, ptr %1188, align 4
  %1189 = getelementptr inbounds %struct.s2n_result, ptr %44, i32 0, i32 0
  %1190 = load i32, ptr %1189, align 4
  %1191 = call zeroext i1 @s2n_result_is_ok(i32 %1190)
  br i1 %1191, label %1245, label %1192

1192:                                             ; preds = %1183
  br label %1193

1193:                                             ; preds = %1192
  br label %1194

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

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

1206:                                             ; preds = %1201
  %1207 = load i32, ptr %45, align 4, !tbaa !5
  %1208 = call ptr @__errno_location() #11
  store i32 %1207, ptr %1208, align 4, !tbaa !5
  %1209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1210 = load i32, ptr @test_count, align 4, !tbaa !5
  %1211 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1212 = load i32, ptr %1211, align 4, !tbaa !5
  %1213 = call ptr @s2n_strerror(i32 noundef %1212, ptr noundef @.str.4)
  %1214 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1215 = load i32, ptr %1214, align 4, !tbaa !5
  %1216 = call ptr @s2n_strerror_debug(i32 noundef %1215, ptr noundef @.str.4)
  %1217 = call ptr @__errno_location() #11
  %1218 = load i32, ptr %1217, align 4, !tbaa !5
  %1219 = call ptr @strerror(i32 noundef %1218) #10
  %1220 = call ptr @__errno_location() #11
  %1221 = load i32, ptr %1220, align 4, !tbaa !5
  %1222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1209, ptr noundef @.str.2, i32 noundef %1210, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 174, ptr noundef %1213, ptr noundef %1216, ptr noundef %1219, i32 noundef %1221) #10
  br label %1240

1223:                                             ; preds = %1201, %1194
  %1224 = load i32, ptr %45, align 4, !tbaa !5
  %1225 = call ptr @__errno_location() #11
  store i32 %1224, ptr %1225, align 4, !tbaa !5
  %1226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1227 = load i32, ptr @test_count, align 4, !tbaa !5
  %1228 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1229 = load i32, ptr %1228, align 4, !tbaa !5
  %1230 = call ptr @s2n_strerror(i32 noundef %1229, ptr noundef @.str.4)
  %1231 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1232 = load i32, ptr %1231, align 4, !tbaa !5
  %1233 = call ptr @s2n_strerror_debug(i32 noundef %1232, ptr noundef @.str.4)
  %1234 = call ptr @__errno_location() #11
  %1235 = load i32, ptr %1234, align 4, !tbaa !5
  %1236 = call ptr @strerror(i32 noundef %1235) #10
  %1237 = call ptr @__errno_location() #11
  %1238 = load i32, ptr %1237, align 4, !tbaa !5
  %1239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1226, ptr noundef @.str.5, i32 noundef %1227, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 174, ptr noundef %1230, ptr noundef %1233, ptr noundef %1236, i32 noundef %1238) #10
  br label %1240

1240:                                             ; preds = %1223, %1206
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %1241

1241:                                             ; preds = %1240
  br label %1242

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

1243:                                             ; No predecessors!
  br label %1244

1244:                                             ; preds = %1243
  br label %1245

1245:                                             ; preds = %1244, %1183
  br label %1246

1246:                                             ; preds = %1245
  br label %1247

1247:                                             ; preds = %1246
  %1248 = load ptr, ptr @curve, align 8, !tbaa !9
  %1249 = load ptr, ptr %43, align 8, !tbaa !9
  %1250 = getelementptr inbounds %struct.s2n_connection, ptr %1249, i32 0, i32 31
  %1251 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1250, i32 0, i32 1
  %1252 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1251, i32 0, i32 0
  store ptr %1248, ptr %1252, align 8, !tbaa !53
  %1253 = getelementptr inbounds %struct.s2n_blob, ptr %31, i32 0, i32 0
  %1254 = load ptr, ptr %1253, align 8, !tbaa !49
  %1255 = getelementptr inbounds %struct.s2n_blob, ptr %31, i32 0, i32 1
  %1256 = load i32, ptr %1255, align 8, !tbaa !48
  %1257 = zext i32 %1256 to i64
  %1258 = call ptr @EVP_PKEY_new_raw_public_key(i32 noundef 1034, ptr noundef null, ptr noundef %1254, i64 noundef %1257)
  %1259 = load ptr, ptr %43, align 8, !tbaa !9
  %1260 = getelementptr inbounds %struct.s2n_connection, ptr %1259, i32 0, i32 31
  %1261 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1260, i32 0, i32 1
  %1262 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1261, i32 0, i32 1
  store ptr %1258, ptr %1262, align 8, !tbaa !54
  br label %1263

1263:                                             ; preds = %1247
  %1264 = load i32, ptr @test_count, align 4, !tbaa !5
  %1265 = add nsw i32 %1264, 1
  store i32 %1265, ptr @test_count, align 4, !tbaa !5
  %1266 = load ptr, ptr %43, align 8, !tbaa !9
  %1267 = getelementptr inbounds %struct.s2n_connection, ptr %1266, i32 0, i32 31
  %1268 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1267, i32 0, i32 1
  %1269 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1268, i32 0, i32 1
  %1270 = load ptr, ptr %1269, align 8, !tbaa !54
  %1271 = icmp eq ptr %1270, null
  br i1 %1271, label %1272, label %1325

1272:                                             ; preds = %1263
  br label %1273

1273:                                             ; preds = %1272
  br label %1274

1274:                                             ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %1275 = call ptr @__errno_location() #11
  %1276 = load i32, ptr %1275, align 4, !tbaa !5
  store i32 %1276, ptr %46, align 4, !tbaa !5
  %1277 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1278 = call i32 @s2n_print_stacktrace(ptr noundef %1277)
  %1279 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1280 = trunc i8 %1279 to i1
  br i1 %1280, label %1281, label %1303

1281:                                             ; preds = %1274
  %1282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1283 = call i32 @fileno(ptr noundef %1282) #10
  %1284 = call i32 @isatty(i32 noundef %1283) #10
  %1285 = icmp ne i32 %1284, 0
  br i1 %1285, label %1286, label %1303

1286:                                             ; preds = %1281
  %1287 = load i32, ptr %46, align 4, !tbaa !5
  %1288 = call ptr @__errno_location() #11
  store i32 %1287, ptr %1288, align 4, !tbaa !5
  %1289 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1290 = load i32, ptr @test_count, align 4, !tbaa !5
  %1291 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1292 = load i32, ptr %1291, align 4, !tbaa !5
  %1293 = call ptr @s2n_strerror(i32 noundef %1292, ptr noundef @.str.4)
  %1294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1295 = load i32, ptr %1294, align 4, !tbaa !5
  %1296 = call ptr @s2n_strerror_debug(i32 noundef %1295, ptr noundef @.str.4)
  %1297 = call ptr @__errno_location() #11
  %1298 = load i32, ptr %1297, align 4, !tbaa !5
  %1299 = call ptr @strerror(i32 noundef %1298) #10
  %1300 = call ptr @__errno_location() #11
  %1301 = load i32, ptr %1300, align 4, !tbaa !5
  %1302 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1289, ptr noundef @.str.2, i32 noundef %1290, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 179, ptr noundef %1293, ptr noundef %1296, ptr noundef %1299, i32 noundef %1301) #10
  br label %1320

1303:                                             ; preds = %1281, %1274
  %1304 = load i32, ptr %46, align 4, !tbaa !5
  %1305 = call ptr @__errno_location() #11
  store i32 %1304, ptr %1305, align 4, !tbaa !5
  %1306 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1307 = load i32, ptr @test_count, align 4, !tbaa !5
  %1308 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1309 = load i32, ptr %1308, align 4, !tbaa !5
  %1310 = call ptr @s2n_strerror(i32 noundef %1309, ptr noundef @.str.4)
  %1311 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1312 = load i32, ptr %1311, align 4, !tbaa !5
  %1313 = call ptr @s2n_strerror_debug(i32 noundef %1312, ptr noundef @.str.4)
  %1314 = call ptr @__errno_location() #11
  %1315 = load i32, ptr %1314, align 4, !tbaa !5
  %1316 = call ptr @strerror(i32 noundef %1315) #10
  %1317 = call ptr @__errno_location() #11
  %1318 = load i32, ptr %1317, align 4, !tbaa !5
  %1319 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1306, ptr noundef @.str.5, i32 noundef %1307, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 179, ptr noundef %1310, ptr noundef %1313, ptr noundef %1316, i32 noundef %1318) #10
  br label %1320

1320:                                             ; preds = %1303, %1286
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %1321

1321:                                             ; preds = %1320
  br label %1322

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

1323:                                             ; No predecessors!
  br label %1324

1324:                                             ; preds = %1323
  br label %1325

1325:                                             ; preds = %1324, %1263
  br label %1326

1326:                                             ; preds = %1325
  br label %1327

1327:                                             ; preds = %1326
  %1328 = load ptr, ptr @curve, align 8, !tbaa !9
  %1329 = load ptr, ptr %43, align 8, !tbaa !9
  %1330 = getelementptr inbounds %struct.s2n_connection, ptr %1329, i32 0, i32 31
  %1331 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1330, i32 0, i32 3
  %1332 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1331, i32 0, i32 0
  store ptr %1328, ptr %1332, align 8, !tbaa !55
  %1333 = getelementptr inbounds %struct.s2n_blob, ptr %25, i32 0, i32 0
  %1334 = load ptr, ptr %1333, align 8, !tbaa !49
  %1335 = getelementptr inbounds %struct.s2n_blob, ptr %25, i32 0, i32 1
  %1336 = load i32, ptr %1335, align 8, !tbaa !48
  %1337 = zext i32 %1336 to i64
  %1338 = call ptr @EVP_PKEY_new_raw_private_key(i32 noundef 1034, ptr noundef null, ptr noundef %1334, i64 noundef %1337)
  %1339 = load ptr, ptr %43, align 8, !tbaa !9
  %1340 = getelementptr inbounds %struct.s2n_connection, ptr %1339, i32 0, i32 31
  %1341 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1340, i32 0, i32 3
  %1342 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1341, i32 0, i32 1
  store ptr %1338, ptr %1342, align 8, !tbaa !56
  br label %1343

1343:                                             ; preds = %1327
  %1344 = load i32, ptr @test_count, align 4, !tbaa !5
  %1345 = add nsw i32 %1344, 1
  store i32 %1345, ptr @test_count, align 4, !tbaa !5
  %1346 = load ptr, ptr %43, align 8, !tbaa !9
  %1347 = getelementptr inbounds %struct.s2n_connection, ptr %1346, i32 0, i32 31
  %1348 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1347, i32 0, i32 3
  %1349 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1348, i32 0, i32 1
  %1350 = load ptr, ptr %1349, align 8, !tbaa !56
  %1351 = icmp eq ptr %1350, null
  br i1 %1351, label %1352, label %1405

1352:                                             ; preds = %1343
  br label %1353

1353:                                             ; preds = %1352
  br label %1354

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

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

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

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

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

1401:                                             ; preds = %1400
  br label %1402

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

1403:                                             ; No predecessors!
  br label %1404

1404:                                             ; preds = %1403
  br label %1405

1405:                                             ; preds = %1404, %1343
  br label %1406

1406:                                             ; preds = %1405
  br label %1407

1407:                                             ; preds = %1406
  br label %1408

1408:                                             ; preds = %1407
  %1409 = load i32, ptr @test_count, align 4, !tbaa !5
  %1410 = add nsw i32 %1409, 1
  store i32 %1410, ptr @test_count, align 4, !tbaa !5
  %1411 = load ptr, ptr %43, align 8, !tbaa !9
  %1412 = call i32 @s2n_tls13_extract_secret(ptr noundef %1411, i32 noundef 2)
  %1413 = getelementptr inbounds %struct.s2n_result, ptr %48, i32 0, i32 0
  store i32 %1412, ptr %1413, align 4
  %1414 = getelementptr inbounds %struct.s2n_result, ptr %48, i32 0, i32 0
  %1415 = load i32, ptr %1414, align 4
  %1416 = call zeroext i1 @s2n_result_is_ok(i32 %1415)
  br i1 %1416, label %1470, label %1417

1417:                                             ; preds = %1408
  br label %1418

1418:                                             ; preds = %1417
  br label %1419

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

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

1431:                                             ; preds = %1426
  %1432 = load i32, ptr %49, align 4, !tbaa !5
  %1433 = call ptr @__errno_location() #11
  store i32 %1432, ptr %1433, align 4, !tbaa !5
  %1434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1435 = load i32, ptr @test_count, align 4, !tbaa !5
  %1436 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1437 = load i32, ptr %1436, align 4, !tbaa !5
  %1438 = call ptr @s2n_strerror(i32 noundef %1437, ptr noundef @.str.4)
  %1439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1440 = load i32, ptr %1439, align 4, !tbaa !5
  %1441 = call ptr @s2n_strerror_debug(i32 noundef %1440, ptr noundef @.str.4)
  %1442 = call ptr @__errno_location() #11
  %1443 = load i32, ptr %1442, align 4, !tbaa !5
  %1444 = call ptr @strerror(i32 noundef %1443) #10
  %1445 = call ptr @__errno_location() #11
  %1446 = load i32, ptr %1445, align 4, !tbaa !5
  %1447 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1434, ptr noundef @.str.2, i32 noundef %1435, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 186, ptr noundef %1438, ptr noundef %1441, ptr noundef %1444, i32 noundef %1446) #10
  br label %1465

1448:                                             ; preds = %1426, %1419
  %1449 = load i32, ptr %49, align 4, !tbaa !5
  %1450 = call ptr @__errno_location() #11
  store i32 %1449, ptr %1450, align 4, !tbaa !5
  %1451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1452 = load i32, ptr @test_count, align 4, !tbaa !5
  %1453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1454 = load i32, ptr %1453, align 4, !tbaa !5
  %1455 = call ptr @s2n_strerror(i32 noundef %1454, ptr noundef @.str.4)
  %1456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1457 = load i32, ptr %1456, align 4, !tbaa !5
  %1458 = call ptr @s2n_strerror_debug(i32 noundef %1457, ptr noundef @.str.4)
  %1459 = call ptr @__errno_location() #11
  %1460 = load i32, ptr %1459, align 4, !tbaa !5
  %1461 = call ptr @strerror(i32 noundef %1460) #10
  %1462 = call ptr @__errno_location() #11
  %1463 = load i32, ptr %1462, align 4, !tbaa !5
  %1464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1451, ptr noundef @.str.5, i32 noundef %1452, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 186, ptr noundef %1455, ptr noundef %1458, ptr noundef %1461, i32 noundef %1463) #10
  br label %1465

1465:                                             ; preds = %1448, %1431
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %1466

1466:                                             ; preds = %1465
  br label %1467

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

1468:                                             ; No predecessors!
  br label %1469

1469:                                             ; preds = %1468
  br label %1470

1470:                                             ; preds = %1469, %1408
  br label %1471

1471:                                             ; preds = %1470
  br label %1472

1472:                                             ; preds = %1471
  br label %1473

1473:                                             ; preds = %1472
  %1474 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 1
  %1475 = load i32, ptr %1474, align 8, !tbaa !48
  %1476 = icmp ne i32 %1475, 0
  br i1 %1476, label %1477, label %1549

1477:                                             ; preds = %1473
  br label %1478

1478:                                             ; preds = %1477
  %1479 = load i32, ptr @test_count, align 4, !tbaa !5
  %1480 = add nsw i32 %1479, 1
  store i32 %1480, ptr @test_count, align 4, !tbaa !5
  %1481 = load ptr, ptr %43, align 8, !tbaa !9
  %1482 = getelementptr inbounds %struct.s2n_connection, ptr %1481, i32 0, i32 28
  %1483 = getelementptr inbounds %struct.s2n_secrets, ptr %1482, i32 0, i32 0
  %1484 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %1483, i32 0, i32 0
  %1485 = getelementptr inbounds [48 x i8], ptr %1484, i64 0, i64 0
  %1486 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 0
  %1487 = load ptr, ptr %1486, align 8, !tbaa !49
  %1488 = getelementptr inbounds %struct.s2n_blob, ptr %22, i32 0, i32 1
  %1489 = load i32, ptr %1488, align 8, !tbaa !48
  %1490 = zext i32 %1489 to i64
  %1491 = call i32 @memcmp(ptr noundef %1485, ptr noundef %1487, i64 noundef %1490) #13
  %1492 = icmp eq i32 %1491, 0
  br i1 %1492, label %1546, label %1493

1493:                                             ; preds = %1478
  br label %1494

1494:                                             ; preds = %1493
  br label %1495

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

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

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

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

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

1542:                                             ; preds = %1541
  br label %1543

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

1544:                                             ; No predecessors!
  br label %1545

1545:                                             ; preds = %1544
  br label %1546

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

1547:                                             ; preds = %1546
  br label %1548

1548:                                             ; preds = %1547
  br label %1549

1549:                                             ; preds = %1548, %1473
  br label %1550

1550:                                             ; preds = %1549
  br label %1551

1551:                                             ; preds = %1550
  br label %1552

1552:                                             ; preds = %1551
  %1553 = load i32, ptr @test_count, align 4, !tbaa !5
  %1554 = add nsw i32 %1553, 1
  store i32 %1554, ptr @test_count, align 4, !tbaa !5
  %1555 = load ptr, ptr %43, align 8, !tbaa !9
  %1556 = getelementptr inbounds %struct.s2n_connection, ptr %1555, i32 0, i32 28
  %1557 = getelementptr inbounds %struct.s2n_secrets, ptr %1556, i32 0, i32 1
  %1558 = load i32, ptr %1557, align 4, !tbaa !50
  %1559 = icmp eq i32 %1558, 2
  br i1 %1559, label %1613, label %1560

1560:                                             ; preds = %1552
  br label %1561

1561:                                             ; preds = %1560
  br label %1562

1562:                                             ; preds = %1561
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %1563 = call ptr @__errno_location() #11
  %1564 = load i32, ptr %1563, align 4, !tbaa !5
  store i32 %1564, ptr %51, align 4, !tbaa !5
  %1565 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1566 = call i32 @s2n_print_stacktrace(ptr noundef %1565)
  %1567 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1568 = trunc i8 %1567 to i1
  br i1 %1568, label %1569, label %1591

1569:                                             ; preds = %1562
  %1570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1571 = call i32 @fileno(ptr noundef %1570) #10
  %1572 = call i32 @isatty(i32 noundef %1571) #10
  %1573 = icmp ne i32 %1572, 0
  br i1 %1573, label %1574, label %1591

1574:                                             ; preds = %1569
  %1575 = load i32, ptr %51, align 4, !tbaa !5
  %1576 = call ptr @__errno_location() #11
  store i32 %1575, ptr %1576, align 4, !tbaa !5
  %1577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1578 = load i32, ptr @test_count, align 4, !tbaa !5
  %1579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1580 = load i32, ptr %1579, align 4, !tbaa !5
  %1581 = call ptr @s2n_strerror(i32 noundef %1580, ptr noundef @.str.4)
  %1582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1583 = load i32, ptr %1582, align 4, !tbaa !5
  %1584 = call ptr @s2n_strerror_debug(i32 noundef %1583, ptr noundef @.str.4)
  %1585 = call ptr @__errno_location() #11
  %1586 = load i32, ptr %1585, align 4, !tbaa !5
  %1587 = call ptr @strerror(i32 noundef %1586) #10
  %1588 = call ptr @__errno_location() #11
  %1589 = load i32, ptr %1588, align 4, !tbaa !5
  %1590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1577, ptr noundef @.str.2, i32 noundef %1578, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 189, ptr noundef %1581, ptr noundef %1584, ptr noundef %1587, i32 noundef %1589) #10
  br label %1608

1591:                                             ; preds = %1569, %1562
  %1592 = load i32, ptr %51, align 4, !tbaa !5
  %1593 = call ptr @__errno_location() #11
  store i32 %1592, ptr %1593, align 4, !tbaa !5
  %1594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1595 = load i32, ptr @test_count, align 4, !tbaa !5
  %1596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1597 = load i32, ptr %1596, align 4, !tbaa !5
  %1598 = call ptr @s2n_strerror(i32 noundef %1597, ptr noundef @.str.4)
  %1599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1600 = load i32, ptr %1599, align 4, !tbaa !5
  %1601 = call ptr @s2n_strerror_debug(i32 noundef %1600, ptr noundef @.str.4)
  %1602 = call ptr @__errno_location() #11
  %1603 = load i32, ptr %1602, align 4, !tbaa !5
  %1604 = call ptr @strerror(i32 noundef %1603) #10
  %1605 = call ptr @__errno_location() #11
  %1606 = load i32, ptr %1605, align 4, !tbaa !5
  %1607 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1594, ptr noundef @.str.5, i32 noundef %1595, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 189, ptr noundef %1598, ptr noundef %1601, ptr noundef %1604, i32 noundef %1606) #10
  br label %1608

1608:                                             ; preds = %1591, %1574
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %1609

1609:                                             ; preds = %1608
  br label %1610

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

1611:                                             ; No predecessors!
  br label %1612

1612:                                             ; preds = %1611
  br label %1613

1613:                                             ; preds = %1612, %1552
  br label %1614

1614:                                             ; preds = %1613
  br label %1615

1615:                                             ; preds = %1614
  %1616 = call i32 @s2n_connection_ptr_free(ptr noundef %43)
  %1617 = getelementptr inbounds %struct.s2n_result, ptr %52, i32 0, i32 0
  store i32 %1616, ptr %1617, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  store i32 0, ptr %14, align 4
  br label %1618

1618:                                             ; preds = %1615, %732
  %1619 = call i32 @s2n_free(ptr noundef %31)
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #10
  br label %1620

1620:                                             ; preds = %1618, %722
  %1621 = call i32 @s2n_free(ptr noundef %29)
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #10
  br label %1622

1622:                                             ; preds = %1620, %712
  %1623 = call i32 @s2n_free(ptr noundef %27)
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #10
  br label %1624

1624:                                             ; preds = %1622, %702
  %1625 = call i32 @s2n_free(ptr noundef %25)
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  %1626 = load i32, ptr %14, align 4
  switch i32 %1626, label %4402 [
    i32 0, label %1627
  ]

1627:                                             ; preds = %1624
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #10
  call void @llvm.memset.p0.i64(ptr align 8 %53, i8 0, i64 24, i1 false)
  br label %1628

1628:                                             ; preds = %1627
  %1629 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %53, ptr noundef @.str.24)
  %1630 = getelementptr inbounds %struct.s2n_result, ptr %54, i32 0, i32 0
  store i32 %1629, ptr %1630, align 4
  %1631 = getelementptr inbounds %struct.s2n_result, ptr %54, i32 0, i32 0
  %1632 = load i32, ptr %1631, align 4
  %1633 = call zeroext i1 @s2n_result_is_ok(i32 %1632)
  br i1 %1633, label %1635, label %1634

1634:                                             ; preds = %1628
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %2095

1635:                                             ; preds = %1628
  br label %1636

1636:                                             ; preds = %1635
  br label %1637

1637:                                             ; preds = %1636
  call void @llvm.lifetime.start.p0(i64 24, ptr %55) #10
  call void @llvm.memset.p0.i64(ptr align 8 %55, i8 0, i64 24, i1 false)
  br label %1638

1638:                                             ; preds = %1637
  %1639 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %55, ptr noundef @.str.25)
  %1640 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  store i32 %1639, ptr %1640, align 4
  %1641 = getelementptr inbounds %struct.s2n_result, ptr %56, i32 0, i32 0
  %1642 = load i32, ptr %1641, align 4
  %1643 = call zeroext i1 @s2n_result_is_ok(i32 %1642)
  br i1 %1643, label %1645, label %1644

1644:                                             ; preds = %1638
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %2093

1645:                                             ; preds = %1638
  br label %1646

1646:                                             ; preds = %1645
  br label %1647

1647:                                             ; preds = %1646
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #10
  call void @llvm.memset.p0.i64(ptr align 8 %57, i8 0, i64 24, i1 false)
  br label %1648

1648:                                             ; preds = %1647
  %1649 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %57, ptr noundef @.str.26)
  %1650 = getelementptr inbounds %struct.s2n_result, ptr %58, i32 0, i32 0
  store i32 %1649, ptr %1650, align 4
  %1651 = getelementptr inbounds %struct.s2n_result, ptr %58, i32 0, i32 0
  %1652 = load i32, ptr %1651, align 4
  %1653 = call zeroext i1 @s2n_result_is_ok(i32 %1652)
  br i1 %1653, label %1655, label %1654

1654:                                             ; preds = %1648
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %2091

1655:                                             ; preds = %1648
  br label %1656

1656:                                             ; preds = %1655
  br label %1657

1657:                                             ; preds = %1656
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  store i64 0, ptr %59, align 8, !tbaa !15
  br label %1658

1658:                                             ; preds = %2087, %1657
  %1659 = load i64, ptr %59, align 8, !tbaa !15
  %1660 = icmp ult i64 %1659, 2
  br i1 %1660, label %1662, label %1661

1661:                                             ; preds = %1658
  store i32 147, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %2090

1662:                                             ; preds = %1658
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  %1663 = load i64, ptr %59, align 8, !tbaa !15
  %1664 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %1663
  %1665 = load i32, ptr %1664, align 4, !tbaa !5
  %1666 = call ptr @s2n_connection_new(i32 noundef %1665)
  store ptr %1666, ptr %60, align 8, !tbaa !9
  %1667 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1668 = load ptr, ptr %60, align 8, !tbaa !9
  %1669 = getelementptr inbounds %struct.s2n_connection, ptr %1668, i32 0, i32 27
  %1670 = load ptr, ptr %1669, align 8, !tbaa !17
  %1671 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1670, i32 0, i32 0
  store ptr %1667, ptr %1671, align 8, !tbaa !43
  br label %1672

1672:                                             ; preds = %1662
  %1673 = load i32, ptr @test_count, align 4, !tbaa !5
  %1674 = add nsw i32 %1673, 1
  store i32 %1674, ptr @test_count, align 4, !tbaa !5
  %1675 = load ptr, ptr %60, align 8, !tbaa !9
  %1676 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %1675, ptr noundef %22)
  %1677 = getelementptr inbounds %struct.s2n_result, ptr %61, i32 0, i32 0
  store i32 %1676, ptr %1677, align 4
  %1678 = getelementptr inbounds %struct.s2n_result, ptr %61, i32 0, i32 0
  %1679 = load i32, ptr %1678, align 4
  %1680 = call zeroext i1 @s2n_result_is_ok(i32 %1679)
  br i1 %1680, label %1734, label %1681

1681:                                             ; preds = %1672
  br label %1682

1682:                                             ; preds = %1681
  br label %1683

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

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

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

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

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

1730:                                             ; preds = %1729
  br label %1731

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

1732:                                             ; No predecessors!
  br label %1733

1733:                                             ; preds = %1732
  br label %1734

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

1735:                                             ; preds = %1734
  br label %1736

1736:                                             ; preds = %1735
  br label %1737

1737:                                             ; preds = %1736
  %1738 = load i32, ptr @test_count, align 4, !tbaa !5
  %1739 = add nsw i32 %1738, 1
  store i32 %1739, ptr @test_count, align 4, !tbaa !5
  %1740 = load ptr, ptr %60, align 8, !tbaa !9
  %1741 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1740, i32 noundef 1, ptr noundef %53)
  %1742 = getelementptr inbounds %struct.s2n_result, ptr %63, i32 0, i32 0
  store i32 %1741, ptr %1742, align 4
  %1743 = getelementptr inbounds %struct.s2n_result, ptr %63, i32 0, i32 0
  %1744 = load i32, ptr %1743, align 4
  %1745 = call zeroext i1 @s2n_result_is_ok(i32 %1744)
  br i1 %1745, label %1799, label %1746

1746:                                             ; preds = %1737
  br label %1747

1747:                                             ; preds = %1746
  br label %1748

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

1755:                                             ; preds = %1748
  %1756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1757 = call i32 @fileno(ptr noundef %1756) #10
  %1758 = call i32 @isatty(i32 noundef %1757) #10
  %1759 = icmp ne i32 %1758, 0
  br i1 %1759, label %1760, label %1777

1760:                                             ; preds = %1755
  %1761 = load i32, ptr %64, align 4, !tbaa !5
  %1762 = call ptr @__errno_location() #11
  store i32 %1761, ptr %1762, align 4, !tbaa !5
  %1763 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1764 = load i32, ptr @test_count, align 4, !tbaa !5
  %1765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1766 = load i32, ptr %1765, align 4, !tbaa !5
  %1767 = call ptr @s2n_strerror(i32 noundef %1766, ptr noundef @.str.4)
  %1768 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1769 = load i32, ptr %1768, align 4, !tbaa !5
  %1770 = call ptr @s2n_strerror_debug(i32 noundef %1769, ptr noundef @.str.4)
  %1771 = call ptr @__errno_location() #11
  %1772 = load i32, ptr %1771, align 4, !tbaa !5
  %1773 = call ptr @strerror(i32 noundef %1772) #10
  %1774 = call ptr @__errno_location() #11
  %1775 = load i32, ptr %1774, align 4, !tbaa !5
  %1776 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1763, ptr noundef @.str.2, i32 noundef %1764, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 254, ptr noundef %1767, ptr noundef %1770, ptr noundef %1773, i32 noundef %1775) #10
  br label %1794

1777:                                             ; preds = %1755, %1748
  %1778 = load i32, ptr %64, align 4, !tbaa !5
  %1779 = call ptr @__errno_location() #11
  store i32 %1778, ptr %1779, align 4, !tbaa !5
  %1780 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1781 = load i32, ptr @test_count, align 4, !tbaa !5
  %1782 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1783 = load i32, ptr %1782, align 4, !tbaa !5
  %1784 = call ptr @s2n_strerror(i32 noundef %1783, ptr noundef @.str.4)
  %1785 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1786 = load i32, ptr %1785, align 4, !tbaa !5
  %1787 = call ptr @s2n_strerror_debug(i32 noundef %1786, ptr noundef @.str.4)
  %1788 = call ptr @__errno_location() #11
  %1789 = load i32, ptr %1788, align 4, !tbaa !5
  %1790 = call ptr @strerror(i32 noundef %1789) #10
  %1791 = call ptr @__errno_location() #11
  %1792 = load i32, ptr %1791, align 4, !tbaa !5
  %1793 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1780, ptr noundef @.str.5, i32 noundef %1781, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 254, ptr noundef %1784, ptr noundef %1787, ptr noundef %1790, i32 noundef %1792) #10
  br label %1794

1794:                                             ; preds = %1777, %1760
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #10
  br label %1795

1795:                                             ; preds = %1794
  br label %1796

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

1797:                                             ; No predecessors!
  br label %1798

1798:                                             ; preds = %1797
  br label %1799

1799:                                             ; preds = %1798, %1737
  br label %1800

1800:                                             ; preds = %1799
  br label %1801

1801:                                             ; preds = %1800
  br label %1802

1802:                                             ; preds = %1801
  %1803 = load i32, ptr @test_count, align 4, !tbaa !5
  %1804 = add nsw i32 %1803, 1
  store i32 %1804, ptr @test_count, align 4, !tbaa !5
  %1805 = load ptr, ptr %60, align 8, !tbaa !9
  %1806 = call i32 @s2n_tls13_derive_secret(ptr noundef %1805, i32 noundef 2, i32 noundef 1, ptr noundef %9)
  %1807 = getelementptr inbounds %struct.s2n_result, ptr %65, i32 0, i32 0
  store i32 %1806, ptr %1807, align 4
  %1808 = getelementptr inbounds %struct.s2n_result, ptr %65, i32 0, i32 0
  %1809 = load i32, ptr %1808, align 4
  %1810 = call zeroext i1 @s2n_result_is_ok(i32 %1809)
  br i1 %1810, label %1864, label %1811

1811:                                             ; preds = %1802
  br label %1812

1812:                                             ; preds = %1811
  br label %1813

1813:                                             ; preds = %1812
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #10
  %1814 = call ptr @__errno_location() #11
  %1815 = load i32, ptr %1814, align 4, !tbaa !5
  store i32 %1815, ptr %66, align 4, !tbaa !5
  %1816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1817 = call i32 @s2n_print_stacktrace(ptr noundef %1816)
  %1818 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1819 = trunc i8 %1818 to i1
  br i1 %1819, label %1820, label %1842

1820:                                             ; preds = %1813
  %1821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1822 = call i32 @fileno(ptr noundef %1821) #10
  %1823 = call i32 @isatty(i32 noundef %1822) #10
  %1824 = icmp ne i32 %1823, 0
  br i1 %1824, label %1825, label %1842

1825:                                             ; preds = %1820
  %1826 = load i32, ptr %66, align 4, !tbaa !5
  %1827 = call ptr @__errno_location() #11
  store i32 %1826, ptr %1827, align 4, !tbaa !5
  %1828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1829 = load i32, ptr @test_count, align 4, !tbaa !5
  %1830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1831 = load i32, ptr %1830, align 4, !tbaa !5
  %1832 = call ptr @s2n_strerror(i32 noundef %1831, ptr noundef @.str.4)
  %1833 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1834 = load i32, ptr %1833, align 4, !tbaa !5
  %1835 = call ptr @s2n_strerror_debug(i32 noundef %1834, ptr noundef @.str.4)
  %1836 = call ptr @__errno_location() #11
  %1837 = load i32, ptr %1836, align 4, !tbaa !5
  %1838 = call ptr @strerror(i32 noundef %1837) #10
  %1839 = call ptr @__errno_location() #11
  %1840 = load i32, ptr %1839, align 4, !tbaa !5
  %1841 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1828, ptr noundef @.str.2, i32 noundef %1829, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 257, ptr noundef %1832, ptr noundef %1835, ptr noundef %1838, i32 noundef %1840) #10
  br label %1859

1842:                                             ; preds = %1820, %1813
  %1843 = load i32, ptr %66, align 4, !tbaa !5
  %1844 = call ptr @__errno_location() #11
  store i32 %1843, ptr %1844, align 4, !tbaa !5
  %1845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1846 = load i32, ptr @test_count, align 4, !tbaa !5
  %1847 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1848 = load i32, ptr %1847, align 4, !tbaa !5
  %1849 = call ptr @s2n_strerror(i32 noundef %1848, ptr noundef @.str.4)
  %1850 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1851 = load i32, ptr %1850, align 4, !tbaa !5
  %1852 = call ptr @s2n_strerror_debug(i32 noundef %1851, ptr noundef @.str.4)
  %1853 = call ptr @__errno_location() #11
  %1854 = load i32, ptr %1853, align 4, !tbaa !5
  %1855 = call ptr @strerror(i32 noundef %1854) #10
  %1856 = call ptr @__errno_location() #11
  %1857 = load i32, ptr %1856, align 4, !tbaa !5
  %1858 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1845, ptr noundef @.str.5, i32 noundef %1846, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 257, ptr noundef %1849, ptr noundef %1852, ptr noundef %1855, i32 noundef %1857) #10
  br label %1859

1859:                                             ; preds = %1842, %1825
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #10
  br label %1860

1860:                                             ; preds = %1859
  br label %1861

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

1862:                                             ; No predecessors!
  br label %1863

1863:                                             ; preds = %1862
  br label %1864

1864:                                             ; preds = %1863, %1802
  br label %1865

1865:                                             ; preds = %1864
  br label %1866

1866:                                             ; preds = %1865
  br label %1867

1867:                                             ; preds = %1866
  %1868 = load i32, ptr @test_count, align 4, !tbaa !5
  %1869 = add nsw i32 %1868, 1
  store i32 %1869, ptr @test_count, align 4, !tbaa !5
  %1870 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 1
  %1871 = load i32, ptr %1870, align 8, !tbaa !48
  %1872 = getelementptr inbounds %struct.s2n_blob, ptr %55, i32 0, i32 1
  %1873 = load i32, ptr %1872, align 8, !tbaa !48
  %1874 = icmp eq i32 %1871, %1873
  br i1 %1874, label %1928, label %1875

1875:                                             ; preds = %1867
  br label %1876

1876:                                             ; preds = %1875
  br label %1877

1877:                                             ; preds = %1876
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #10
  %1878 = call ptr @__errno_location() #11
  %1879 = load i32, ptr %1878, align 4, !tbaa !5
  store i32 %1879, ptr %67, align 4, !tbaa !5
  %1880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1881 = call i32 @s2n_print_stacktrace(ptr noundef %1880)
  %1882 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1883 = trunc i8 %1882 to i1
  br i1 %1883, label %1884, label %1906

1884:                                             ; preds = %1877
  %1885 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1886 = call i32 @fileno(ptr noundef %1885) #10
  %1887 = call i32 @isatty(i32 noundef %1886) #10
  %1888 = icmp ne i32 %1887, 0
  br i1 %1888, label %1889, label %1906

1889:                                             ; preds = %1884
  %1890 = load i32, ptr %67, align 4, !tbaa !5
  %1891 = call ptr @__errno_location() #11
  store i32 %1890, ptr %1891, align 4, !tbaa !5
  %1892 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1893 = load i32, ptr @test_count, align 4, !tbaa !5
  %1894 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1895 = load i32, ptr %1894, align 4, !tbaa !5
  %1896 = call ptr @s2n_strerror(i32 noundef %1895, ptr noundef @.str.4)
  %1897 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1898 = load i32, ptr %1897, align 4, !tbaa !5
  %1899 = call ptr @s2n_strerror_debug(i32 noundef %1898, ptr noundef @.str.4)
  %1900 = call ptr @__errno_location() #11
  %1901 = load i32, ptr %1900, align 4, !tbaa !5
  %1902 = call ptr @strerror(i32 noundef %1901) #10
  %1903 = call ptr @__errno_location() #11
  %1904 = load i32, ptr %1903, align 4, !tbaa !5
  %1905 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1892, ptr noundef @.str.2, i32 noundef %1893, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 259, ptr noundef %1896, ptr noundef %1899, ptr noundef %1902, i32 noundef %1904) #10
  br label %1923

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

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

1924:                                             ; preds = %1923
  br label %1925

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

1926:                                             ; No predecessors!
  br label %1927

1927:                                             ; preds = %1926
  br label %1928

1928:                                             ; preds = %1927, %1867
  br label %1929

1929:                                             ; preds = %1928
  br label %1930

1930:                                             ; preds = %1929
  br label %1931

1931:                                             ; preds = %1930
  %1932 = getelementptr inbounds %struct.s2n_blob, ptr %55, i32 0, i32 1
  %1933 = load i32, ptr %1932, align 8, !tbaa !48
  %1934 = icmp ne i32 %1933, 0
  br i1 %1934, label %1935, label %2004

1935:                                             ; preds = %1931
  br label %1936

1936:                                             ; preds = %1935
  %1937 = load i32, ptr @test_count, align 4, !tbaa !5
  %1938 = add nsw i32 %1937, 1
  store i32 %1938, ptr @test_count, align 4, !tbaa !5
  %1939 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 0
  %1940 = load ptr, ptr %1939, align 8, !tbaa !49
  %1941 = getelementptr inbounds %struct.s2n_blob, ptr %55, i32 0, i32 0
  %1942 = load ptr, ptr %1941, align 8, !tbaa !49
  %1943 = getelementptr inbounds %struct.s2n_blob, ptr %55, i32 0, i32 1
  %1944 = load i32, ptr %1943, align 8, !tbaa !48
  %1945 = zext i32 %1944 to i64
  %1946 = call i32 @memcmp(ptr noundef %1940, ptr noundef %1942, i64 noundef %1945) #13
  %1947 = icmp eq i32 %1946, 0
  br i1 %1947, label %2001, label %1948

1948:                                             ; preds = %1936
  br label %1949

1949:                                             ; preds = %1948
  br label %1950

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

1957:                                             ; preds = %1950
  %1958 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1959 = call i32 @fileno(ptr noundef %1958) #10
  %1960 = call i32 @isatty(i32 noundef %1959) #10
  %1961 = icmp ne i32 %1960, 0
  br i1 %1961, label %1962, label %1979

1962:                                             ; preds = %1957
  %1963 = load i32, ptr %68, align 4, !tbaa !5
  %1964 = call ptr @__errno_location() #11
  store i32 %1963, ptr %1964, align 4, !tbaa !5
  %1965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1966 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1968, ptr noundef @.str.4)
  %1970 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1971 = load i32, ptr %1970, align 4, !tbaa !5
  %1972 = call ptr @s2n_strerror_debug(i32 noundef %1971, ptr noundef @.str.4)
  %1973 = call ptr @__errno_location() #11
  %1974 = load i32, ptr %1973, align 4, !tbaa !5
  %1975 = call ptr @strerror(i32 noundef %1974) #10
  %1976 = call ptr @__errno_location() #11
  %1977 = load i32, ptr %1976, align 4, !tbaa !5
  %1978 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1965, ptr noundef @.str.2, i32 noundef %1966, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 260, ptr noundef %1969, ptr noundef %1972, ptr noundef %1975, i32 noundef %1977) #10
  br label %1996

1979:                                             ; preds = %1957, %1950
  %1980 = load i32, ptr %68, align 4, !tbaa !5
  %1981 = call ptr @__errno_location() #11
  store i32 %1980, ptr %1981, align 4, !tbaa !5
  %1982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1983 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1985, ptr noundef @.str.4)
  %1987 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1988 = load i32, ptr %1987, align 4, !tbaa !5
  %1989 = call ptr @s2n_strerror_debug(i32 noundef %1988, ptr noundef @.str.4)
  %1990 = call ptr @__errno_location() #11
  %1991 = load i32, ptr %1990, align 4, !tbaa !5
  %1992 = call ptr @strerror(i32 noundef %1991) #10
  %1993 = call ptr @__errno_location() #11
  %1994 = load i32, ptr %1993, align 4, !tbaa !5
  %1995 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1982, ptr noundef @.str.5, i32 noundef %1983, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 260, ptr noundef %1986, ptr noundef %1989, ptr noundef %1992, i32 noundef %1994) #10
  br label %1996

1996:                                             ; preds = %1979, %1962
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  br label %1997

1997:                                             ; preds = %1996
  br label %1998

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

1999:                                             ; No predecessors!
  br label %2000

2000:                                             ; preds = %1999
  br label %2001

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

2002:                                             ; preds = %2001
  br label %2003

2003:                                             ; preds = %2002
  br label %2004

2004:                                             ; preds = %2003, %1931
  br label %2005

2005:                                             ; preds = %2004
  br label %2006

2006:                                             ; preds = %2005
  br label %2007

2007:                                             ; preds = %2006
  %2008 = getelementptr inbounds %struct.s2n_blob, ptr %57, i32 0, i32 1
  %2009 = load i32, ptr %2008, align 8, !tbaa !48
  %2010 = icmp ne i32 %2009, 0
  br i1 %2010, label %2011, label %2082

2011:                                             ; preds = %2007
  br label %2012

2012:                                             ; preds = %2011
  %2013 = load i32, ptr @test_count, align 4, !tbaa !5
  %2014 = add nsw i32 %2013, 1
  store i32 %2014, ptr @test_count, align 4, !tbaa !5
  %2015 = load ptr, ptr %60, align 8, !tbaa !9
  %2016 = getelementptr inbounds %struct.s2n_connection, ptr %2015, i32 0, i32 52
  %2017 = getelementptr inbounds %struct.s2n_handshake, ptr %2016, i32 0, i32 4
  %2018 = getelementptr inbounds [48 x i8], ptr %2017, i64 0, i64 0
  %2019 = getelementptr inbounds %struct.s2n_blob, ptr %57, i32 0, i32 0
  %2020 = load ptr, ptr %2019, align 8, !tbaa !49
  %2021 = getelementptr inbounds %struct.s2n_blob, ptr %57, i32 0, i32 1
  %2022 = load i32, ptr %2021, align 8, !tbaa !48
  %2023 = zext i32 %2022 to i64
  %2024 = call i32 @memcmp(ptr noundef %2018, ptr noundef %2020, i64 noundef %2023) #13
  %2025 = icmp eq i32 %2024, 0
  br i1 %2025, label %2079, label %2026

2026:                                             ; preds = %2012
  br label %2027

2027:                                             ; preds = %2026
  br label %2028

2028:                                             ; preds = %2027
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #10
  %2029 = call ptr @__errno_location() #11
  %2030 = load i32, ptr %2029, align 4, !tbaa !5
  store i32 %2030, ptr %69, align 4, !tbaa !5
  %2031 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2032 = call i32 @s2n_print_stacktrace(ptr noundef %2031)
  %2033 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2034 = trunc i8 %2033 to i1
  br i1 %2034, label %2035, label %2057

2035:                                             ; preds = %2028
  %2036 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2037 = call i32 @fileno(ptr noundef %2036) #10
  %2038 = call i32 @isatty(i32 noundef %2037) #10
  %2039 = icmp ne i32 %2038, 0
  br i1 %2039, label %2040, label %2057

2040:                                             ; preds = %2035
  %2041 = load i32, ptr %69, align 4, !tbaa !5
  %2042 = call ptr @__errno_location() #11
  store i32 %2041, ptr %2042, align 4, !tbaa !5
  %2043 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2044 = load i32, ptr @test_count, align 4, !tbaa !5
  %2045 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2046 = load i32, ptr %2045, align 4, !tbaa !5
  %2047 = call ptr @s2n_strerror(i32 noundef %2046, ptr noundef @.str.4)
  %2048 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2049 = load i32, ptr %2048, align 4, !tbaa !5
  %2050 = call ptr @s2n_strerror_debug(i32 noundef %2049, ptr noundef @.str.4)
  %2051 = call ptr @__errno_location() #11
  %2052 = load i32, ptr %2051, align 4, !tbaa !5
  %2053 = call ptr @strerror(i32 noundef %2052) #10
  %2054 = call ptr @__errno_location() #11
  %2055 = load i32, ptr %2054, align 4, !tbaa !5
  %2056 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2043, ptr noundef @.str.2, i32 noundef %2044, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 262, ptr noundef %2047, ptr noundef %2050, ptr noundef %2053, i32 noundef %2055) #10
  br label %2074

2057:                                             ; preds = %2035, %2028
  %2058 = load i32, ptr %69, align 4, !tbaa !5
  %2059 = call ptr @__errno_location() #11
  store i32 %2058, ptr %2059, align 4, !tbaa !5
  %2060 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2061 = load i32, ptr @test_count, align 4, !tbaa !5
  %2062 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2063 = load i32, ptr %2062, align 4, !tbaa !5
  %2064 = call ptr @s2n_strerror(i32 noundef %2063, ptr noundef @.str.4)
  %2065 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2066 = load i32, ptr %2065, align 4, !tbaa !5
  %2067 = call ptr @s2n_strerror_debug(i32 noundef %2066, ptr noundef @.str.4)
  %2068 = call ptr @__errno_location() #11
  %2069 = load i32, ptr %2068, align 4, !tbaa !5
  %2070 = call ptr @strerror(i32 noundef %2069) #10
  %2071 = call ptr @__errno_location() #11
  %2072 = load i32, ptr %2071, align 4, !tbaa !5
  %2073 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2060, ptr noundef @.str.5, i32 noundef %2061, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 262, ptr noundef %2064, ptr noundef %2067, ptr noundef %2070, i32 noundef %2072) #10
  br label %2074

2074:                                             ; preds = %2057, %2040
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #10
  br label %2075

2075:                                             ; preds = %2074
  br label %2076

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

2077:                                             ; No predecessors!
  br label %2078

2078:                                             ; preds = %2077
  br label %2079

2079:                                             ; preds = %2078, %2012
  br label %2080

2080:                                             ; preds = %2079
  br label %2081

2081:                                             ; preds = %2080
  br label %2082

2082:                                             ; preds = %2081, %2007
  br label %2083

2083:                                             ; preds = %2082
  br label %2084

2084:                                             ; preds = %2083
  %2085 = call i32 @s2n_connection_ptr_free(ptr noundef %60)
  %2086 = getelementptr inbounds %struct.s2n_result, ptr %70, i32 0, i32 0
  store i32 %2085, ptr %2086, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  br label %2087

2087:                                             ; preds = %2084
  %2088 = load i64, ptr %59, align 8, !tbaa !15
  %2089 = add i64 %2088, 1
  store i64 %2089, ptr %59, align 8, !tbaa !15
  br label %1658, !llvm.loop !57

2090:                                             ; preds = %1661
  store i32 0, ptr %14, align 4
  br label %2091

2091:                                             ; preds = %2090, %1654
  %2092 = call i32 @s2n_free(ptr noundef %57)
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #10
  br label %2093

2093:                                             ; preds = %2091, %1644
  %2094 = call i32 @s2n_free(ptr noundef %55)
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #10
  br label %2095

2095:                                             ; preds = %2093, %1634
  %2096 = call i32 @s2n_free(ptr noundef %53)
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #10
  %2097 = load i32, ptr %14, align 4
  switch i32 %2097, label %4402 [
    i32 0, label %2098
  ]

2098:                                             ; preds = %2095
  call void @llvm.lifetime.start.p0(i64 24, ptr %71) #10
  call void @llvm.memset.p0.i64(ptr align 8 %71, i8 0, i64 24, i1 false)
  br label %2099

2099:                                             ; preds = %2098
  %2100 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %71, ptr noundef @.str.24)
  %2101 = getelementptr inbounds %struct.s2n_result, ptr %72, i32 0, i32 0
  store i32 %2100, ptr %2101, align 4
  %2102 = getelementptr inbounds %struct.s2n_result, ptr %72, i32 0, i32 0
  %2103 = load i32, ptr %2102, align 4
  %2104 = call zeroext i1 @s2n_result_is_ok(i32 %2103)
  br i1 %2104, label %2106, label %2105

2105:                                             ; preds = %2099
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %2566

2106:                                             ; preds = %2099
  br label %2107

2107:                                             ; preds = %2106
  br label %2108

2108:                                             ; preds = %2107
  call void @llvm.lifetime.start.p0(i64 24, ptr %73) #10
  call void @llvm.memset.p0.i64(ptr align 8 %73, i8 0, i64 24, i1 false)
  br label %2109

2109:                                             ; preds = %2108
  %2110 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %73, ptr noundef @.str.33)
  %2111 = getelementptr inbounds %struct.s2n_result, ptr %74, i32 0, i32 0
  store i32 %2110, ptr %2111, align 4
  %2112 = getelementptr inbounds %struct.s2n_result, ptr %74, i32 0, i32 0
  %2113 = load i32, ptr %2112, align 4
  %2114 = call zeroext i1 @s2n_result_is_ok(i32 %2113)
  br i1 %2114, label %2116, label %2115

2115:                                             ; preds = %2109
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %2564

2116:                                             ; preds = %2109
  br label %2117

2117:                                             ; preds = %2116
  br label %2118

2118:                                             ; preds = %2117
  call void @llvm.lifetime.start.p0(i64 24, ptr %75) #10
  call void @llvm.memset.p0.i64(ptr align 8 %75, i8 0, i64 24, i1 false)
  br label %2119

2119:                                             ; preds = %2118
  %2120 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %75, ptr noundef @.str.34)
  %2121 = getelementptr inbounds %struct.s2n_result, ptr %76, i32 0, i32 0
  store i32 %2120, ptr %2121, align 4
  %2122 = getelementptr inbounds %struct.s2n_result, ptr %76, i32 0, i32 0
  %2123 = load i32, ptr %2122, align 4
  %2124 = call zeroext i1 @s2n_result_is_ok(i32 %2123)
  br i1 %2124, label %2126, label %2125

2125:                                             ; preds = %2119
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %2562

2126:                                             ; preds = %2119
  br label %2127

2127:                                             ; preds = %2126
  br label %2128

2128:                                             ; preds = %2127
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #10
  store i64 0, ptr %77, align 8, !tbaa !15
  br label %2129

2129:                                             ; preds = %2558, %2128
  %2130 = load i64, ptr %77, align 8, !tbaa !15
  %2131 = icmp ult i64 %2130, 2
  br i1 %2131, label %2133, label %2132

2132:                                             ; preds = %2129
  store i32 196, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  br label %2561

2133:                                             ; preds = %2129
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  %2134 = load i64, ptr %77, align 8, !tbaa !15
  %2135 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %2134
  %2136 = load i32, ptr %2135, align 4, !tbaa !5
  %2137 = call ptr @s2n_connection_new(i32 noundef %2136)
  store ptr %2137, ptr %78, align 8, !tbaa !9
  %2138 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2139 = load ptr, ptr %78, align 8, !tbaa !9
  %2140 = getelementptr inbounds %struct.s2n_connection, ptr %2139, i32 0, i32 27
  %2141 = load ptr, ptr %2140, align 8, !tbaa !17
  %2142 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2141, i32 0, i32 0
  store ptr %2138, ptr %2142, align 8, !tbaa !43
  br label %2143

2143:                                             ; preds = %2133
  %2144 = load i32, ptr @test_count, align 4, !tbaa !5
  %2145 = add nsw i32 %2144, 1
  store i32 %2145, ptr @test_count, align 4, !tbaa !5
  %2146 = load ptr, ptr %78, align 8, !tbaa !9
  %2147 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %2146, ptr noundef %22)
  %2148 = getelementptr inbounds %struct.s2n_result, ptr %79, i32 0, i32 0
  store i32 %2147, ptr %2148, align 4
  %2149 = getelementptr inbounds %struct.s2n_result, ptr %79, i32 0, i32 0
  %2150 = load i32, ptr %2149, align 4
  %2151 = call zeroext i1 @s2n_result_is_ok(i32 %2150)
  br i1 %2151, label %2205, label %2152

2152:                                             ; preds = %2143
  br label %2153

2153:                                             ; preds = %2152
  br label %2154

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

2161:                                             ; preds = %2154
  %2162 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2163 = call i32 @fileno(ptr noundef %2162) #10
  %2164 = call i32 @isatty(i32 noundef %2163) #10
  %2165 = icmp ne i32 %2164, 0
  br i1 %2165, label %2166, label %2183

2166:                                             ; preds = %2161
  %2167 = load i32, ptr %80, align 4, !tbaa !5
  %2168 = call ptr @__errno_location() #11
  store i32 %2167, ptr %2168, align 4, !tbaa !5
  %2169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2170 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %2172, ptr noundef @.str.4)
  %2174 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2175 = load i32, ptr %2174, align 4, !tbaa !5
  %2176 = call ptr @s2n_strerror_debug(i32 noundef %2175, ptr noundef @.str.4)
  %2177 = call ptr @__errno_location() #11
  %2178 = load i32, ptr %2177, align 4, !tbaa !5
  %2179 = call ptr @strerror(i32 noundef %2178) #10
  %2180 = call ptr @__errno_location() #11
  %2181 = load i32, ptr %2180, align 4, !tbaa !5
  %2182 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2169, ptr noundef @.str.2, i32 noundef %2170, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 321, ptr noundef %2173, ptr noundef %2176, ptr noundef %2179, i32 noundef %2181) #10
  br label %2200

2183:                                             ; preds = %2161, %2154
  %2184 = load i32, ptr %80, align 4, !tbaa !5
  %2185 = call ptr @__errno_location() #11
  store i32 %2184, ptr %2185, align 4, !tbaa !5
  %2186 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2187 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %2189, ptr noundef @.str.4)
  %2191 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2192 = load i32, ptr %2191, align 4, !tbaa !5
  %2193 = call ptr @s2n_strerror_debug(i32 noundef %2192, ptr noundef @.str.4)
  %2194 = call ptr @__errno_location() #11
  %2195 = load i32, ptr %2194, align 4, !tbaa !5
  %2196 = call ptr @strerror(i32 noundef %2195) #10
  %2197 = call ptr @__errno_location() #11
  %2198 = load i32, ptr %2197, align 4, !tbaa !5
  %2199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2186, ptr noundef @.str.5, i32 noundef %2187, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 321, ptr noundef %2190, ptr noundef %2193, ptr noundef %2196, i32 noundef %2198) #10
  br label %2200

2200:                                             ; preds = %2183, %2166
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  br label %2201

2201:                                             ; preds = %2200
  br label %2202

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

2203:                                             ; No predecessors!
  br label %2204

2204:                                             ; preds = %2203
  br label %2205

2205:                                             ; preds = %2204, %2143
  br label %2206

2206:                                             ; preds = %2205
  br label %2207

2207:                                             ; preds = %2206
  br label %2208

2208:                                             ; preds = %2207
  %2209 = load i32, ptr @test_count, align 4, !tbaa !5
  %2210 = add nsw i32 %2209, 1
  store i32 %2210, ptr @test_count, align 4, !tbaa !5
  %2211 = load ptr, ptr %78, align 8, !tbaa !9
  %2212 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %2211, i32 noundef 1, ptr noundef %71)
  %2213 = getelementptr inbounds %struct.s2n_result, ptr %81, i32 0, i32 0
  store i32 %2212, ptr %2213, align 4
  %2214 = getelementptr inbounds %struct.s2n_result, ptr %81, i32 0, i32 0
  %2215 = load i32, ptr %2214, align 4
  %2216 = call zeroext i1 @s2n_result_is_ok(i32 %2215)
  br i1 %2216, label %2270, label %2217

2217:                                             ; preds = %2208
  br label %2218

2218:                                             ; preds = %2217
  br label %2219

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

2226:                                             ; preds = %2219
  %2227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2228 = call i32 @fileno(ptr noundef %2227) #10
  %2229 = call i32 @isatty(i32 noundef %2228) #10
  %2230 = icmp ne i32 %2229, 0
  br i1 %2230, label %2231, label %2248

2231:                                             ; preds = %2226
  %2232 = load i32, ptr %82, align 4, !tbaa !5
  %2233 = call ptr @__errno_location() #11
  store i32 %2232, ptr %2233, align 4, !tbaa !5
  %2234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2235 = load i32, ptr @test_count, align 4, !tbaa !5
  %2236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2237 = load i32, ptr %2236, align 4, !tbaa !5
  %2238 = call ptr @s2n_strerror(i32 noundef %2237, ptr noundef @.str.4)
  %2239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2240 = load i32, ptr %2239, align 4, !tbaa !5
  %2241 = call ptr @s2n_strerror_debug(i32 noundef %2240, ptr noundef @.str.4)
  %2242 = call ptr @__errno_location() #11
  %2243 = load i32, ptr %2242, align 4, !tbaa !5
  %2244 = call ptr @strerror(i32 noundef %2243) #10
  %2245 = call ptr @__errno_location() #11
  %2246 = load i32, ptr %2245, align 4, !tbaa !5
  %2247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2234, ptr noundef @.str.2, i32 noundef %2235, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 322, ptr noundef %2238, ptr noundef %2241, ptr noundef %2244, i32 noundef %2246) #10
  br label %2265

2248:                                             ; preds = %2226, %2219
  %2249 = load i32, ptr %82, align 4, !tbaa !5
  %2250 = call ptr @__errno_location() #11
  store i32 %2249, ptr %2250, align 4, !tbaa !5
  %2251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2252 = load i32, ptr @test_count, align 4, !tbaa !5
  %2253 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2254 = load i32, ptr %2253, align 4, !tbaa !5
  %2255 = call ptr @s2n_strerror(i32 noundef %2254, ptr noundef @.str.4)
  %2256 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2257 = load i32, ptr %2256, align 4, !tbaa !5
  %2258 = call ptr @s2n_strerror_debug(i32 noundef %2257, ptr noundef @.str.4)
  %2259 = call ptr @__errno_location() #11
  %2260 = load i32, ptr %2259, align 4, !tbaa !5
  %2261 = call ptr @strerror(i32 noundef %2260) #10
  %2262 = call ptr @__errno_location() #11
  %2263 = load i32, ptr %2262, align 4, !tbaa !5
  %2264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2251, ptr noundef @.str.5, i32 noundef %2252, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 322, ptr noundef %2255, ptr noundef %2258, ptr noundef %2261, i32 noundef %2263) #10
  br label %2265

2265:                                             ; preds = %2248, %2231
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  br label %2266

2266:                                             ; preds = %2265
  br label %2267

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

2268:                                             ; No predecessors!
  br label %2269

2269:                                             ; preds = %2268
  br label %2270

2270:                                             ; preds = %2269, %2208
  br label %2271

2271:                                             ; preds = %2270
  br label %2272

2272:                                             ; preds = %2271
  br label %2273

2273:                                             ; preds = %2272
  %2274 = load i32, ptr @test_count, align 4, !tbaa !5
  %2275 = add nsw i32 %2274, 1
  store i32 %2275, ptr @test_count, align 4, !tbaa !5
  %2276 = load ptr, ptr %78, align 8, !tbaa !9
  %2277 = call i32 @s2n_tls13_derive_secret(ptr noundef %2276, i32 noundef 2, i32 noundef 0, ptr noundef %9)
  %2278 = getelementptr inbounds %struct.s2n_result, ptr %83, i32 0, i32 0
  store i32 %2277, ptr %2278, align 4
  %2279 = getelementptr inbounds %struct.s2n_result, ptr %83, i32 0, i32 0
  %2280 = load i32, ptr %2279, align 4
  %2281 = call zeroext i1 @s2n_result_is_ok(i32 %2280)
  br i1 %2281, label %2335, label %2282

2282:                                             ; preds = %2273
  br label %2283

2283:                                             ; preds = %2282
  br label %2284

2284:                                             ; preds = %2283
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #10
  %2285 = call ptr @__errno_location() #11
  %2286 = load i32, ptr %2285, align 4, !tbaa !5
  store i32 %2286, ptr %84, align 4, !tbaa !5
  %2287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2288 = call i32 @s2n_print_stacktrace(ptr noundef %2287)
  %2289 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2290 = trunc i8 %2289 to i1
  br i1 %2290, label %2291, label %2313

2291:                                             ; preds = %2284
  %2292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2293 = call i32 @fileno(ptr noundef %2292) #10
  %2294 = call i32 @isatty(i32 noundef %2293) #10
  %2295 = icmp ne i32 %2294, 0
  br i1 %2295, label %2296, label %2313

2296:                                             ; preds = %2291
  %2297 = load i32, ptr %84, align 4, !tbaa !5
  %2298 = call ptr @__errno_location() #11
  store i32 %2297, ptr %2298, align 4, !tbaa !5
  %2299 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2300 = load i32, ptr @test_count, align 4, !tbaa !5
  %2301 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2302 = load i32, ptr %2301, align 4, !tbaa !5
  %2303 = call ptr @s2n_strerror(i32 noundef %2302, ptr noundef @.str.4)
  %2304 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2305 = load i32, ptr %2304, align 4, !tbaa !5
  %2306 = call ptr @s2n_strerror_debug(i32 noundef %2305, ptr noundef @.str.4)
  %2307 = call ptr @__errno_location() #11
  %2308 = load i32, ptr %2307, align 4, !tbaa !5
  %2309 = call ptr @strerror(i32 noundef %2308) #10
  %2310 = call ptr @__errno_location() #11
  %2311 = load i32, ptr %2310, align 4, !tbaa !5
  %2312 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2299, ptr noundef @.str.2, i32 noundef %2300, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 325, ptr noundef %2303, ptr noundef %2306, ptr noundef %2309, i32 noundef %2311) #10
  br label %2330

2313:                                             ; preds = %2291, %2284
  %2314 = load i32, ptr %84, align 4, !tbaa !5
  %2315 = call ptr @__errno_location() #11
  store i32 %2314, ptr %2315, align 4, !tbaa !5
  %2316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2317 = load i32, ptr @test_count, align 4, !tbaa !5
  %2318 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2319 = load i32, ptr %2318, align 4, !tbaa !5
  %2320 = call ptr @s2n_strerror(i32 noundef %2319, ptr noundef @.str.4)
  %2321 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2322 = load i32, ptr %2321, align 4, !tbaa !5
  %2323 = call ptr @s2n_strerror_debug(i32 noundef %2322, ptr noundef @.str.4)
  %2324 = call ptr @__errno_location() #11
  %2325 = load i32, ptr %2324, align 4, !tbaa !5
  %2326 = call ptr @strerror(i32 noundef %2325) #10
  %2327 = call ptr @__errno_location() #11
  %2328 = load i32, ptr %2327, align 4, !tbaa !5
  %2329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2316, ptr noundef @.str.5, i32 noundef %2317, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 325, ptr noundef %2320, ptr noundef %2323, ptr noundef %2326, i32 noundef %2328) #10
  br label %2330

2330:                                             ; preds = %2313, %2296
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #10
  br label %2331

2331:                                             ; preds = %2330
  br label %2332

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

2333:                                             ; No predecessors!
  br label %2334

2334:                                             ; preds = %2333
  br label %2335

2335:                                             ; preds = %2334, %2273
  br label %2336

2336:                                             ; preds = %2335
  br label %2337

2337:                                             ; preds = %2336
  br label %2338

2338:                                             ; preds = %2337
  %2339 = load i32, ptr @test_count, align 4, !tbaa !5
  %2340 = add nsw i32 %2339, 1
  store i32 %2340, ptr @test_count, align 4, !tbaa !5
  %2341 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 1
  %2342 = load i32, ptr %2341, align 8, !tbaa !48
  %2343 = getelementptr inbounds %struct.s2n_blob, ptr %73, i32 0, i32 1
  %2344 = load i32, ptr %2343, align 8, !tbaa !48
  %2345 = icmp eq i32 %2342, %2344
  br i1 %2345, label %2399, label %2346

2346:                                             ; preds = %2338
  br label %2347

2347:                                             ; preds = %2346
  br label %2348

2348:                                             ; preds = %2347
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #10
  %2349 = call ptr @__errno_location() #11
  %2350 = load i32, ptr %2349, align 4, !tbaa !5
  store i32 %2350, ptr %85, align 4, !tbaa !5
  %2351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2352 = call i32 @s2n_print_stacktrace(ptr noundef %2351)
  %2353 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2354 = trunc i8 %2353 to i1
  br i1 %2354, label %2355, label %2377

2355:                                             ; preds = %2348
  %2356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2357 = call i32 @fileno(ptr noundef %2356) #10
  %2358 = call i32 @isatty(i32 noundef %2357) #10
  %2359 = icmp ne i32 %2358, 0
  br i1 %2359, label %2360, label %2377

2360:                                             ; preds = %2355
  %2361 = load i32, ptr %85, align 4, !tbaa !5
  %2362 = call ptr @__errno_location() #11
  store i32 %2361, ptr %2362, align 4, !tbaa !5
  %2363 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2364 = load i32, ptr @test_count, align 4, !tbaa !5
  %2365 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2366 = load i32, ptr %2365, align 4, !tbaa !5
  %2367 = call ptr @s2n_strerror(i32 noundef %2366, ptr noundef @.str.4)
  %2368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2369 = load i32, ptr %2368, align 4, !tbaa !5
  %2370 = call ptr @s2n_strerror_debug(i32 noundef %2369, ptr noundef @.str.4)
  %2371 = call ptr @__errno_location() #11
  %2372 = load i32, ptr %2371, align 4, !tbaa !5
  %2373 = call ptr @strerror(i32 noundef %2372) #10
  %2374 = call ptr @__errno_location() #11
  %2375 = load i32, ptr %2374, align 4, !tbaa !5
  %2376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2363, ptr noundef @.str.2, i32 noundef %2364, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 326, ptr noundef %2367, ptr noundef %2370, ptr noundef %2373, i32 noundef %2375) #10
  br label %2394

2377:                                             ; preds = %2355, %2348
  %2378 = load i32, ptr %85, align 4, !tbaa !5
  %2379 = call ptr @__errno_location() #11
  store i32 %2378, ptr %2379, align 4, !tbaa !5
  %2380 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2381 = load i32, ptr @test_count, align 4, !tbaa !5
  %2382 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2383 = load i32, ptr %2382, align 4, !tbaa !5
  %2384 = call ptr @s2n_strerror(i32 noundef %2383, ptr noundef @.str.4)
  %2385 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2386 = load i32, ptr %2385, align 4, !tbaa !5
  %2387 = call ptr @s2n_strerror_debug(i32 noundef %2386, ptr noundef @.str.4)
  %2388 = call ptr @__errno_location() #11
  %2389 = load i32, ptr %2388, align 4, !tbaa !5
  %2390 = call ptr @strerror(i32 noundef %2389) #10
  %2391 = call ptr @__errno_location() #11
  %2392 = load i32, ptr %2391, align 4, !tbaa !5
  %2393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2380, ptr noundef @.str.5, i32 noundef %2381, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 326, ptr noundef %2384, ptr noundef %2387, ptr noundef %2390, i32 noundef %2392) #10
  br label %2394

2394:                                             ; preds = %2377, %2360
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #10
  br label %2395

2395:                                             ; preds = %2394
  br label %2396

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

2397:                                             ; No predecessors!
  br label %2398

2398:                                             ; preds = %2397
  br label %2399

2399:                                             ; preds = %2398, %2338
  br label %2400

2400:                                             ; preds = %2399
  br label %2401

2401:                                             ; preds = %2400
  br label %2402

2402:                                             ; preds = %2401
  %2403 = getelementptr inbounds %struct.s2n_blob, ptr %73, i32 0, i32 1
  %2404 = load i32, ptr %2403, align 8, !tbaa !48
  %2405 = icmp ne i32 %2404, 0
  br i1 %2405, label %2406, label %2475

2406:                                             ; preds = %2402
  br label %2407

2407:                                             ; preds = %2406
  %2408 = load i32, ptr @test_count, align 4, !tbaa !5
  %2409 = add nsw i32 %2408, 1
  store i32 %2409, ptr @test_count, align 4, !tbaa !5
  %2410 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 0
  %2411 = load ptr, ptr %2410, align 8, !tbaa !49
  %2412 = getelementptr inbounds %struct.s2n_blob, ptr %73, i32 0, i32 0
  %2413 = load ptr, ptr %2412, align 8, !tbaa !49
  %2414 = getelementptr inbounds %struct.s2n_blob, ptr %73, i32 0, i32 1
  %2415 = load i32, ptr %2414, align 8, !tbaa !48
  %2416 = zext i32 %2415 to i64
  %2417 = call i32 @memcmp(ptr noundef %2411, ptr noundef %2413, i64 noundef %2416) #13
  %2418 = icmp eq i32 %2417, 0
  br i1 %2418, label %2472, label %2419

2419:                                             ; preds = %2407
  br label %2420

2420:                                             ; preds = %2419
  br label %2421

2421:                                             ; preds = %2420
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #10
  %2422 = call ptr @__errno_location() #11
  %2423 = load i32, ptr %2422, align 4, !tbaa !5
  store i32 %2423, ptr %86, align 4, !tbaa !5
  %2424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2425 = call i32 @s2n_print_stacktrace(ptr noundef %2424)
  %2426 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2427 = trunc i8 %2426 to i1
  br i1 %2427, label %2428, label %2450

2428:                                             ; preds = %2421
  %2429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2430 = call i32 @fileno(ptr noundef %2429) #10
  %2431 = call i32 @isatty(i32 noundef %2430) #10
  %2432 = icmp ne i32 %2431, 0
  br i1 %2432, label %2433, label %2450

2433:                                             ; preds = %2428
  %2434 = load i32, ptr %86, align 4, !tbaa !5
  %2435 = call ptr @__errno_location() #11
  store i32 %2434, ptr %2435, align 4, !tbaa !5
  %2436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2437 = load i32, ptr @test_count, align 4, !tbaa !5
  %2438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2439 = load i32, ptr %2438, align 4, !tbaa !5
  %2440 = call ptr @s2n_strerror(i32 noundef %2439, ptr noundef @.str.4)
  %2441 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2442 = load i32, ptr %2441, align 4, !tbaa !5
  %2443 = call ptr @s2n_strerror_debug(i32 noundef %2442, ptr noundef @.str.4)
  %2444 = call ptr @__errno_location() #11
  %2445 = load i32, ptr %2444, align 4, !tbaa !5
  %2446 = call ptr @strerror(i32 noundef %2445) #10
  %2447 = call ptr @__errno_location() #11
  %2448 = load i32, ptr %2447, align 4, !tbaa !5
  %2449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2436, ptr noundef @.str.2, i32 noundef %2437, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 327, ptr noundef %2440, ptr noundef %2443, ptr noundef %2446, i32 noundef %2448) #10
  br label %2467

2450:                                             ; preds = %2428, %2421
  %2451 = load i32, ptr %86, align 4, !tbaa !5
  %2452 = call ptr @__errno_location() #11
  store i32 %2451, ptr %2452, align 4, !tbaa !5
  %2453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2454 = load i32, ptr @test_count, align 4, !tbaa !5
  %2455 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2456 = load i32, ptr %2455, align 4, !tbaa !5
  %2457 = call ptr @s2n_strerror(i32 noundef %2456, ptr noundef @.str.4)
  %2458 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2459 = load i32, ptr %2458, align 4, !tbaa !5
  %2460 = call ptr @s2n_strerror_debug(i32 noundef %2459, ptr noundef @.str.4)
  %2461 = call ptr @__errno_location() #11
  %2462 = load i32, ptr %2461, align 4, !tbaa !5
  %2463 = call ptr @strerror(i32 noundef %2462) #10
  %2464 = call ptr @__errno_location() #11
  %2465 = load i32, ptr %2464, align 4, !tbaa !5
  %2466 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2453, ptr noundef @.str.5, i32 noundef %2454, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 327, ptr noundef %2457, ptr noundef %2460, ptr noundef %2463, i32 noundef %2465) #10
  br label %2467

2467:                                             ; preds = %2450, %2433
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #10
  br label %2468

2468:                                             ; preds = %2467
  br label %2469

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

2470:                                             ; No predecessors!
  br label %2471

2471:                                             ; preds = %2470
  br label %2472

2472:                                             ; preds = %2471, %2407
  br label %2473

2473:                                             ; preds = %2472
  br label %2474

2474:                                             ; preds = %2473
  br label %2475

2475:                                             ; preds = %2474, %2402
  br label %2476

2476:                                             ; preds = %2475
  br label %2477

2477:                                             ; preds = %2476
  br label %2478

2478:                                             ; preds = %2477
  %2479 = getelementptr inbounds %struct.s2n_blob, ptr %75, i32 0, i32 1
  %2480 = load i32, ptr %2479, align 8, !tbaa !48
  %2481 = icmp ne i32 %2480, 0
  br i1 %2481, label %2482, label %2553

2482:                                             ; preds = %2478
  br label %2483

2483:                                             ; preds = %2482
  %2484 = load i32, ptr @test_count, align 4, !tbaa !5
  %2485 = add nsw i32 %2484, 1
  store i32 %2485, ptr @test_count, align 4, !tbaa !5
  %2486 = load ptr, ptr %78, align 8, !tbaa !9
  %2487 = getelementptr inbounds %struct.s2n_connection, ptr %2486, i32 0, i32 52
  %2488 = getelementptr inbounds %struct.s2n_handshake, ptr %2487, i32 0, i32 3
  %2489 = getelementptr inbounds [48 x i8], ptr %2488, i64 0, i64 0
  %2490 = getelementptr inbounds %struct.s2n_blob, ptr %75, i32 0, i32 0
  %2491 = load ptr, ptr %2490, align 8, !tbaa !49
  %2492 = getelementptr inbounds %struct.s2n_blob, ptr %75, i32 0, i32 1
  %2493 = load i32, ptr %2492, align 8, !tbaa !48
  %2494 = zext i32 %2493 to i64
  %2495 = call i32 @memcmp(ptr noundef %2489, ptr noundef %2491, i64 noundef %2494) #13
  %2496 = icmp eq i32 %2495, 0
  br i1 %2496, label %2550, label %2497

2497:                                             ; preds = %2483
  br label %2498

2498:                                             ; preds = %2497
  br label %2499

2499:                                             ; preds = %2498
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #10
  %2500 = call ptr @__errno_location() #11
  %2501 = load i32, ptr %2500, align 4, !tbaa !5
  store i32 %2501, ptr %87, align 4, !tbaa !5
  %2502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2503 = call i32 @s2n_print_stacktrace(ptr noundef %2502)
  %2504 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2505 = trunc i8 %2504 to i1
  br i1 %2505, label %2506, label %2528

2506:                                             ; preds = %2499
  %2507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2508 = call i32 @fileno(ptr noundef %2507) #10
  %2509 = call i32 @isatty(i32 noundef %2508) #10
  %2510 = icmp ne i32 %2509, 0
  br i1 %2510, label %2511, label %2528

2511:                                             ; preds = %2506
  %2512 = load i32, ptr %87, align 4, !tbaa !5
  %2513 = call ptr @__errno_location() #11
  store i32 %2512, ptr %2513, align 4, !tbaa !5
  %2514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2515 = load i32, ptr @test_count, align 4, !tbaa !5
  %2516 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2517 = load i32, ptr %2516, align 4, !tbaa !5
  %2518 = call ptr @s2n_strerror(i32 noundef %2517, ptr noundef @.str.4)
  %2519 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2520 = load i32, ptr %2519, align 4, !tbaa !5
  %2521 = call ptr @s2n_strerror_debug(i32 noundef %2520, ptr noundef @.str.4)
  %2522 = call ptr @__errno_location() #11
  %2523 = load i32, ptr %2522, align 4, !tbaa !5
  %2524 = call ptr @strerror(i32 noundef %2523) #10
  %2525 = call ptr @__errno_location() #11
  %2526 = load i32, ptr %2525, align 4, !tbaa !5
  %2527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2514, ptr noundef @.str.2, i32 noundef %2515, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 329, ptr noundef %2518, ptr noundef %2521, ptr noundef %2524, i32 noundef %2526) #10
  br label %2545

2528:                                             ; preds = %2506, %2499
  %2529 = load i32, ptr %87, align 4, !tbaa !5
  %2530 = call ptr @__errno_location() #11
  store i32 %2529, ptr %2530, align 4, !tbaa !5
  %2531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2532 = load i32, ptr @test_count, align 4, !tbaa !5
  %2533 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2534 = load i32, ptr %2533, align 4, !tbaa !5
  %2535 = call ptr @s2n_strerror(i32 noundef %2534, ptr noundef @.str.4)
  %2536 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2537 = load i32, ptr %2536, align 4, !tbaa !5
  %2538 = call ptr @s2n_strerror_debug(i32 noundef %2537, ptr noundef @.str.4)
  %2539 = call ptr @__errno_location() #11
  %2540 = load i32, ptr %2539, align 4, !tbaa !5
  %2541 = call ptr @strerror(i32 noundef %2540) #10
  %2542 = call ptr @__errno_location() #11
  %2543 = load i32, ptr %2542, align 4, !tbaa !5
  %2544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2531, ptr noundef @.str.5, i32 noundef %2532, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 329, ptr noundef %2535, ptr noundef %2538, ptr noundef %2541, i32 noundef %2543) #10
  br label %2545

2545:                                             ; preds = %2528, %2511
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #10
  br label %2546

2546:                                             ; preds = %2545
  br label %2547

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

2548:                                             ; No predecessors!
  br label %2549

2549:                                             ; preds = %2548
  br label %2550

2550:                                             ; preds = %2549, %2483
  br label %2551

2551:                                             ; preds = %2550
  br label %2552

2552:                                             ; preds = %2551
  br label %2553

2553:                                             ; preds = %2552, %2478
  br label %2554

2554:                                             ; preds = %2553
  br label %2555

2555:                                             ; preds = %2554
  %2556 = call i32 @s2n_connection_ptr_free(ptr noundef %78)
  %2557 = getelementptr inbounds %struct.s2n_result, ptr %88, i32 0, i32 0
  store i32 %2556, ptr %2557, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  br label %2558

2558:                                             ; preds = %2555
  %2559 = load i64, ptr %77, align 8, !tbaa !15
  %2560 = add i64 %2559, 1
  store i64 %2560, ptr %77, align 8, !tbaa !15
  br label %2129, !llvm.loop !58

2561:                                             ; preds = %2132
  store i32 0, ptr %14, align 4
  br label %2562

2562:                                             ; preds = %2561, %2125
  %2563 = call i32 @s2n_free(ptr noundef %75)
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #10
  br label %2564

2564:                                             ; preds = %2562, %2115
  %2565 = call i32 @s2n_free(ptr noundef %73)
  call void @llvm.lifetime.end.p0(i64 24, ptr %73) #10
  br label %2566

2566:                                             ; preds = %2564, %2105
  %2567 = call i32 @s2n_free(ptr noundef %71)
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #10
  %2568 = load i32, ptr %14, align 4
  switch i32 %2568, label %4402 [
    i32 0, label %2569
  ]

2569:                                             ; preds = %2566
  call void @llvm.lifetime.start.p0(i64 24, ptr %89) #10
  call void @llvm.memset.p0.i64(ptr align 8 %89, i8 0, i64 24, i1 false)
  br label %2570

2570:                                             ; preds = %2569
  %2571 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %89, ptr noundef @.str.37)
  %2572 = getelementptr inbounds %struct.s2n_result, ptr %90, i32 0, i32 0
  store i32 %2571, ptr %2572, align 4
  %2573 = getelementptr inbounds %struct.s2n_result, ptr %90, i32 0, i32 0
  %2574 = load i32, ptr %2573, align 4
  %2575 = call zeroext i1 @s2n_result_is_ok(i32 %2574)
  br i1 %2575, label %2577, label %2576

2576:                                             ; preds = %2570
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %4400

2577:                                             ; preds = %2570
  br label %2578

2578:                                             ; preds = %2577
  br label %2579

2579:                                             ; preds = %2578
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #10
  store i64 0, ptr %91, align 8, !tbaa !15
  br label %2580

2580:                                             ; preds = %2869, %2579
  %2581 = load i64, ptr %91, align 8, !tbaa !15
  %2582 = icmp ult i64 %2581, 2
  br i1 %2582, label %2584, label %2583

2583:                                             ; preds = %2580
  store i32 241, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  br label %2872

2584:                                             ; preds = %2580
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #10
  %2585 = load i64, ptr %91, align 8, !tbaa !15
  %2586 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %2585
  %2587 = load i32, ptr %2586, align 4, !tbaa !5
  %2588 = call ptr @s2n_connection_new(i32 noundef %2587)
  store ptr %2588, ptr %92, align 8, !tbaa !9
  %2589 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2590 = load ptr, ptr %92, align 8, !tbaa !9
  %2591 = getelementptr inbounds %struct.s2n_connection, ptr %2590, i32 0, i32 27
  %2592 = load ptr, ptr %2591, align 8, !tbaa !17
  %2593 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2592, i32 0, i32 0
  store ptr %2589, ptr %2593, align 8, !tbaa !43
  br label %2594

2594:                                             ; preds = %2584
  %2595 = load i32, ptr @test_count, align 4, !tbaa !5
  %2596 = add nsw i32 %2595, 1
  store i32 %2596, ptr @test_count, align 4, !tbaa !5
  %2597 = load ptr, ptr %92, align 8, !tbaa !9
  %2598 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %2597, ptr noundef %22)
  %2599 = getelementptr inbounds %struct.s2n_result, ptr %93, i32 0, i32 0
  store i32 %2598, ptr %2599, align 4
  %2600 = getelementptr inbounds %struct.s2n_result, ptr %93, i32 0, i32 0
  %2601 = load i32, ptr %2600, align 4
  %2602 = call zeroext i1 @s2n_result_is_ok(i32 %2601)
  br i1 %2602, label %2656, label %2603

2603:                                             ; preds = %2594
  br label %2604

2604:                                             ; preds = %2603
  br label %2605

2605:                                             ; preds = %2604
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #10
  %2606 = call ptr @__errno_location() #11
  %2607 = load i32, ptr %2606, align 4, !tbaa !5
  store i32 %2607, ptr %94, align 4, !tbaa !5
  %2608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2609 = call i32 @s2n_print_stacktrace(ptr noundef %2608)
  %2610 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2611 = trunc i8 %2610 to i1
  br i1 %2611, label %2612, label %2634

2612:                                             ; preds = %2605
  %2613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2614 = call i32 @fileno(ptr noundef %2613) #10
  %2615 = call i32 @isatty(i32 noundef %2614) #10
  %2616 = icmp ne i32 %2615, 0
  br i1 %2616, label %2617, label %2634

2617:                                             ; preds = %2612
  %2618 = load i32, ptr %94, align 4, !tbaa !5
  %2619 = call ptr @__errno_location() #11
  store i32 %2618, ptr %2619, align 4, !tbaa !5
  %2620 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2621 = load i32, ptr @test_count, align 4, !tbaa !5
  %2622 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2623 = load i32, ptr %2622, align 4, !tbaa !5
  %2624 = call ptr @s2n_strerror(i32 noundef %2623, ptr noundef @.str.4)
  %2625 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2626 = load i32, ptr %2625, align 4, !tbaa !5
  %2627 = call ptr @s2n_strerror_debug(i32 noundef %2626, ptr noundef @.str.4)
  %2628 = call ptr @__errno_location() #11
  %2629 = load i32, ptr %2628, align 4, !tbaa !5
  %2630 = call ptr @strerror(i32 noundef %2629) #10
  %2631 = call ptr @__errno_location() #11
  %2632 = load i32, ptr %2631, align 4, !tbaa !5
  %2633 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2620, ptr noundef @.str.2, i32 noundef %2621, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 363, ptr noundef %2624, ptr noundef %2627, ptr noundef %2630, i32 noundef %2632) #10
  br label %2651

2634:                                             ; preds = %2612, %2605
  %2635 = load i32, ptr %94, align 4, !tbaa !5
  %2636 = call ptr @__errno_location() #11
  store i32 %2635, ptr %2636, align 4, !tbaa !5
  %2637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2638 = load i32, ptr @test_count, align 4, !tbaa !5
  %2639 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2640 = load i32, ptr %2639, align 4, !tbaa !5
  %2641 = call ptr @s2n_strerror(i32 noundef %2640, ptr noundef @.str.4)
  %2642 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2643 = load i32, ptr %2642, align 4, !tbaa !5
  %2644 = call ptr @s2n_strerror_debug(i32 noundef %2643, ptr noundef @.str.4)
  %2645 = call ptr @__errno_location() #11
  %2646 = load i32, ptr %2645, align 4, !tbaa !5
  %2647 = call ptr @strerror(i32 noundef %2646) #10
  %2648 = call ptr @__errno_location() #11
  %2649 = load i32, ptr %2648, align 4, !tbaa !5
  %2650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2637, ptr noundef @.str.5, i32 noundef %2638, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 363, ptr noundef %2641, ptr noundef %2644, ptr noundef %2647, i32 noundef %2649) #10
  br label %2651

2651:                                             ; preds = %2634, %2617
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #10
  br label %2652

2652:                                             ; preds = %2651
  br label %2653

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

2654:                                             ; No predecessors!
  br label %2655

2655:                                             ; preds = %2654
  br label %2656

2656:                                             ; preds = %2655, %2594
  br label %2657

2657:                                             ; preds = %2656
  br label %2658

2658:                                             ; preds = %2657
  br label %2659

2659:                                             ; preds = %2658
  %2660 = load i32, ptr @test_count, align 4, !tbaa !5
  %2661 = add nsw i32 %2660, 1
  store i32 %2661, ptr @test_count, align 4, !tbaa !5
  %2662 = load ptr, ptr %92, align 8, !tbaa !9
  %2663 = call i32 @s2n_tls13_extract_secret(ptr noundef %2662, i32 noundef 3)
  %2664 = getelementptr inbounds %struct.s2n_result, ptr %95, i32 0, i32 0
  store i32 %2663, ptr %2664, align 4
  %2665 = getelementptr inbounds %struct.s2n_result, ptr %95, 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 %2721, label %2668

2668:                                             ; preds = %2659
  br label %2669

2669:                                             ; preds = %2668
  br label %2670

2670:                                             ; preds = %2669
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #10
  %2671 = call ptr @__errno_location() #11
  %2672 = load i32, ptr %2671, align 4, !tbaa !5
  store i32 %2672, ptr %96, align 4, !tbaa !5
  %2673 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2674 = call i32 @s2n_print_stacktrace(ptr noundef %2673)
  %2675 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2676 = trunc i8 %2675 to i1
  br i1 %2676, label %2677, label %2699

2677:                                             ; preds = %2670
  %2678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2679 = call i32 @fileno(ptr noundef %2678) #10
  %2680 = call i32 @isatty(i32 noundef %2679) #10
  %2681 = icmp ne i32 %2680, 0
  br i1 %2681, label %2682, label %2699

2682:                                             ; preds = %2677
  %2683 = load i32, ptr %96, align 4, !tbaa !5
  %2684 = call ptr @__errno_location() #11
  store i32 %2683, ptr %2684, align 4, !tbaa !5
  %2685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2686 = load i32, ptr @test_count, align 4, !tbaa !5
  %2687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2688 = load i32, ptr %2687, align 4, !tbaa !5
  %2689 = call ptr @s2n_strerror(i32 noundef %2688, ptr noundef @.str.4)
  %2690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2691 = load i32, ptr %2690, align 4, !tbaa !5
  %2692 = call ptr @s2n_strerror_debug(i32 noundef %2691, ptr noundef @.str.4)
  %2693 = call ptr @__errno_location() #11
  %2694 = load i32, ptr %2693, align 4, !tbaa !5
  %2695 = call ptr @strerror(i32 noundef %2694) #10
  %2696 = call ptr @__errno_location() #11
  %2697 = load i32, ptr %2696, align 4, !tbaa !5
  %2698 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2685, ptr noundef @.str.2, i32 noundef %2686, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 365, ptr noundef %2689, ptr noundef %2692, ptr noundef %2695, i32 noundef %2697) #10
  br label %2716

2699:                                             ; preds = %2677, %2670
  %2700 = load i32, ptr %96, align 4, !tbaa !5
  %2701 = call ptr @__errno_location() #11
  store i32 %2700, ptr %2701, align 4, !tbaa !5
  %2702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2703 = load i32, ptr @test_count, align 4, !tbaa !5
  %2704 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2705 = load i32, ptr %2704, align 4, !tbaa !5
  %2706 = call ptr @s2n_strerror(i32 noundef %2705, ptr noundef @.str.4)
  %2707 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2708 = load i32, ptr %2707, align 4, !tbaa !5
  %2709 = call ptr @s2n_strerror_debug(i32 noundef %2708, ptr noundef @.str.4)
  %2710 = call ptr @__errno_location() #11
  %2711 = load i32, ptr %2710, align 4, !tbaa !5
  %2712 = call ptr @strerror(i32 noundef %2711) #10
  %2713 = call ptr @__errno_location() #11
  %2714 = load i32, ptr %2713, align 4, !tbaa !5
  %2715 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2702, ptr noundef @.str.5, i32 noundef %2703, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 365, ptr noundef %2706, ptr noundef %2709, ptr noundef %2712, i32 noundef %2714) #10
  br label %2716

2716:                                             ; preds = %2699, %2682
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #10
  br label %2717

2717:                                             ; preds = %2716
  br label %2718

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

2719:                                             ; No predecessors!
  br label %2720

2720:                                             ; preds = %2719
  br label %2721

2721:                                             ; preds = %2720, %2659
  br label %2722

2722:                                             ; preds = %2721
  br label %2723

2723:                                             ; preds = %2722
  br label %2724

2724:                                             ; preds = %2723
  %2725 = getelementptr inbounds %struct.s2n_blob, ptr %89, i32 0, i32 1
  %2726 = load i32, ptr %2725, align 8, !tbaa !48
  %2727 = icmp ne i32 %2726, 0
  br i1 %2727, label %2728, label %2800

2728:                                             ; preds = %2724
  br label %2729

2729:                                             ; preds = %2728
  %2730 = load i32, ptr @test_count, align 4, !tbaa !5
  %2731 = add nsw i32 %2730, 1
  store i32 %2731, ptr @test_count, align 4, !tbaa !5
  %2732 = load ptr, ptr %92, align 8, !tbaa !9
  %2733 = getelementptr inbounds %struct.s2n_connection, ptr %2732, i32 0, i32 28
  %2734 = getelementptr inbounds %struct.s2n_secrets, ptr %2733, i32 0, i32 0
  %2735 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %2734, i32 0, i32 0
  %2736 = getelementptr inbounds [48 x i8], ptr %2735, i64 0, i64 0
  %2737 = getelementptr inbounds %struct.s2n_blob, ptr %89, i32 0, i32 0
  %2738 = load ptr, ptr %2737, align 8, !tbaa !49
  %2739 = getelementptr inbounds %struct.s2n_blob, ptr %89, i32 0, i32 1
  %2740 = load i32, ptr %2739, align 8, !tbaa !48
  %2741 = zext i32 %2740 to i64
  %2742 = call i32 @memcmp(ptr noundef %2736, ptr noundef %2738, i64 noundef %2741) #13
  %2743 = icmp eq i32 %2742, 0
  br i1 %2743, label %2797, label %2744

2744:                                             ; preds = %2729
  br label %2745

2745:                                             ; preds = %2744
  br label %2746

2746:                                             ; preds = %2745
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #10
  %2747 = call ptr @__errno_location() #11
  %2748 = load i32, ptr %2747, align 4, !tbaa !5
  store i32 %2748, ptr %97, align 4, !tbaa !5
  %2749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2750 = call i32 @s2n_print_stacktrace(ptr noundef %2749)
  %2751 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2752 = trunc i8 %2751 to i1
  br i1 %2752, label %2753, label %2775

2753:                                             ; preds = %2746
  %2754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2755 = call i32 @fileno(ptr noundef %2754) #10
  %2756 = call i32 @isatty(i32 noundef %2755) #10
  %2757 = icmp ne i32 %2756, 0
  br i1 %2757, label %2758, label %2775

2758:                                             ; preds = %2753
  %2759 = load i32, ptr %97, align 4, !tbaa !5
  %2760 = call ptr @__errno_location() #11
  store i32 %2759, ptr %2760, align 4, !tbaa !5
  %2761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2762 = load i32, ptr @test_count, align 4, !tbaa !5
  %2763 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2764 = load i32, ptr %2763, align 4, !tbaa !5
  %2765 = call ptr @s2n_strerror(i32 noundef %2764, ptr noundef @.str.4)
  %2766 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2767 = load i32, ptr %2766, align 4, !tbaa !5
  %2768 = call ptr @s2n_strerror_debug(i32 noundef %2767, ptr noundef @.str.4)
  %2769 = call ptr @__errno_location() #11
  %2770 = load i32, ptr %2769, align 4, !tbaa !5
  %2771 = call ptr @strerror(i32 noundef %2770) #10
  %2772 = call ptr @__errno_location() #11
  %2773 = load i32, ptr %2772, align 4, !tbaa !5
  %2774 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2761, ptr noundef @.str.2, i32 noundef %2762, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 367, ptr noundef %2765, ptr noundef %2768, ptr noundef %2771, i32 noundef %2773) #10
  br label %2792

2775:                                             ; preds = %2753, %2746
  %2776 = load i32, ptr %97, align 4, !tbaa !5
  %2777 = call ptr @__errno_location() #11
  store i32 %2776, ptr %2777, align 4, !tbaa !5
  %2778 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2779 = load i32, ptr @test_count, align 4, !tbaa !5
  %2780 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2781 = load i32, ptr %2780, align 4, !tbaa !5
  %2782 = call ptr @s2n_strerror(i32 noundef %2781, ptr noundef @.str.4)
  %2783 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2784 = load i32, ptr %2783, align 4, !tbaa !5
  %2785 = call ptr @s2n_strerror_debug(i32 noundef %2784, ptr noundef @.str.4)
  %2786 = call ptr @__errno_location() #11
  %2787 = load i32, ptr %2786, align 4, !tbaa !5
  %2788 = call ptr @strerror(i32 noundef %2787) #10
  %2789 = call ptr @__errno_location() #11
  %2790 = load i32, ptr %2789, align 4, !tbaa !5
  %2791 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2778, ptr noundef @.str.5, i32 noundef %2779, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 367, ptr noundef %2782, ptr noundef %2785, ptr noundef %2788, i32 noundef %2790) #10
  br label %2792

2792:                                             ; preds = %2775, %2758
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #10
  br label %2793

2793:                                             ; preds = %2792
  br label %2794

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

2795:                                             ; No predecessors!
  br label %2796

2796:                                             ; preds = %2795
  br label %2797

2797:                                             ; preds = %2796, %2729
  br label %2798

2798:                                             ; preds = %2797
  br label %2799

2799:                                             ; preds = %2798
  br label %2800

2800:                                             ; preds = %2799, %2724
  br label %2801

2801:                                             ; preds = %2800
  br label %2802

2802:                                             ; preds = %2801
  br label %2803

2803:                                             ; preds = %2802
  %2804 = load i32, ptr @test_count, align 4, !tbaa !5
  %2805 = add nsw i32 %2804, 1
  store i32 %2805, ptr @test_count, align 4, !tbaa !5
  %2806 = load ptr, ptr %92, align 8, !tbaa !9
  %2807 = getelementptr inbounds %struct.s2n_connection, ptr %2806, i32 0, i32 28
  %2808 = getelementptr inbounds %struct.s2n_secrets, ptr %2807, i32 0, i32 1
  %2809 = load i32, ptr %2808, align 4, !tbaa !50
  %2810 = icmp eq i32 %2809, 3
  br i1 %2810, label %2864, label %2811

2811:                                             ; preds = %2803
  br label %2812

2812:                                             ; preds = %2811
  br label %2813

2813:                                             ; preds = %2812
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #10
  %2814 = call ptr @__errno_location() #11
  %2815 = load i32, ptr %2814, align 4, !tbaa !5
  store i32 %2815, ptr %98, align 4, !tbaa !5
  %2816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2817 = call i32 @s2n_print_stacktrace(ptr noundef %2816)
  %2818 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2819 = trunc i8 %2818 to i1
  br i1 %2819, label %2820, label %2842

2820:                                             ; preds = %2813
  %2821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2822 = call i32 @fileno(ptr noundef %2821) #10
  %2823 = call i32 @isatty(i32 noundef %2822) #10
  %2824 = icmp ne i32 %2823, 0
  br i1 %2824, label %2825, label %2842

2825:                                             ; preds = %2820
  %2826 = load i32, ptr %98, align 4, !tbaa !5
  %2827 = call ptr @__errno_location() #11
  store i32 %2826, ptr %2827, align 4, !tbaa !5
  %2828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2829 = load i32, ptr @test_count, align 4, !tbaa !5
  %2830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2831 = load i32, ptr %2830, align 4, !tbaa !5
  %2832 = call ptr @s2n_strerror(i32 noundef %2831, ptr noundef @.str.4)
  %2833 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2834 = load i32, ptr %2833, align 4, !tbaa !5
  %2835 = call ptr @s2n_strerror_debug(i32 noundef %2834, ptr noundef @.str.4)
  %2836 = call ptr @__errno_location() #11
  %2837 = load i32, ptr %2836, align 4, !tbaa !5
  %2838 = call ptr @strerror(i32 noundef %2837) #10
  %2839 = call ptr @__errno_location() #11
  %2840 = load i32, ptr %2839, align 4, !tbaa !5
  %2841 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2828, ptr noundef @.str.2, i32 noundef %2829, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 368, ptr noundef %2832, ptr noundef %2835, ptr noundef %2838, i32 noundef %2840) #10
  br label %2859

2842:                                             ; preds = %2820, %2813
  %2843 = load i32, ptr %98, align 4, !tbaa !5
  %2844 = call ptr @__errno_location() #11
  store i32 %2843, ptr %2844, align 4, !tbaa !5
  %2845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2846 = load i32, ptr @test_count, align 4, !tbaa !5
  %2847 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2848 = load i32, ptr %2847, align 4, !tbaa !5
  %2849 = call ptr @s2n_strerror(i32 noundef %2848, ptr noundef @.str.4)
  %2850 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2851 = load i32, ptr %2850, align 4, !tbaa !5
  %2852 = call ptr @s2n_strerror_debug(i32 noundef %2851, ptr noundef @.str.4)
  %2853 = call ptr @__errno_location() #11
  %2854 = load i32, ptr %2853, align 4, !tbaa !5
  %2855 = call ptr @strerror(i32 noundef %2854) #10
  %2856 = call ptr @__errno_location() #11
  %2857 = load i32, ptr %2856, align 4, !tbaa !5
  %2858 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2845, ptr noundef @.str.5, i32 noundef %2846, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 368, ptr noundef %2849, ptr noundef %2852, ptr noundef %2855, i32 noundef %2857) #10
  br label %2859

2859:                                             ; preds = %2842, %2825
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #10
  br label %2860

2860:                                             ; preds = %2859
  br label %2861

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

2862:                                             ; No predecessors!
  br label %2863

2863:                                             ; preds = %2862
  br label %2864

2864:                                             ; preds = %2863, %2803
  br label %2865

2865:                                             ; preds = %2864
  br label %2866

2866:                                             ; preds = %2865
  %2867 = call i32 @s2n_connection_ptr_free(ptr noundef %92)
  %2868 = getelementptr inbounds %struct.s2n_result, ptr %99, i32 0, i32 0
  store i32 %2867, ptr %2868, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  br label %2869

2869:                                             ; preds = %2866
  %2870 = load i64, ptr %91, align 8, !tbaa !15
  %2871 = add i64 %2870, 1
  store i64 %2871, ptr %91, align 8, !tbaa !15
  br label %2580, !llvm.loop !59

2872:                                             ; preds = %2583
  call void @llvm.lifetime.start.p0(i64 24, ptr %100) #10
  call void @llvm.memset.p0.i64(ptr align 8 %100, i8 0, i64 24, i1 false)
  br label %2873

2873:                                             ; preds = %2872
  %2874 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %100, ptr noundef @.str.41)
  %2875 = getelementptr inbounds %struct.s2n_result, ptr %101, i32 0, i32 0
  store i32 %2874, ptr %2875, align 4
  %2876 = getelementptr inbounds %struct.s2n_result, ptr %101, i32 0, i32 0
  %2877 = load i32, ptr %2876, align 4
  %2878 = call zeroext i1 @s2n_result_is_ok(i32 %2877)
  br i1 %2878, label %2880, label %2879

2879:                                             ; preds = %2873
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %3250

2880:                                             ; preds = %2873
  br label %2881

2881:                                             ; preds = %2880
  br label %2882

2882:                                             ; preds = %2881
  call void @llvm.lifetime.start.p0(i64 24, ptr %102) #10
  call void @llvm.memset.p0.i64(ptr align 8 %102, i8 0, i64 24, i1 false)
  br label %2883

2883:                                             ; preds = %2882
  %2884 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %102, ptr noundef @.str.42)
  %2885 = getelementptr inbounds %struct.s2n_result, ptr %103, i32 0, i32 0
  store i32 %2884, ptr %2885, align 4
  %2886 = getelementptr inbounds %struct.s2n_result, ptr %103, i32 0, i32 0
  %2887 = load i32, ptr %2886, align 4
  %2888 = call zeroext i1 @s2n_result_is_ok(i32 %2887)
  br i1 %2888, label %2890, label %2889

2889:                                             ; preds = %2883
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %3248

2890:                                             ; preds = %2883
  br label %2891

2891:                                             ; preds = %2890
  br label %2892

2892:                                             ; preds = %2891
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #10
  store i64 0, ptr %104, align 8, !tbaa !15
  br label %2893

2893:                                             ; preds = %3244, %2892
  %2894 = load i64, ptr %104, align 8, !tbaa !15
  %2895 = icmp ult i64 %2894, 2
  br i1 %2895, label %2897, label %2896

2896:                                             ; preds = %2893
  store i32 274, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  br label %3247

2897:                                             ; preds = %2893
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #10
  %2898 = load i64, ptr %104, align 8, !tbaa !15
  %2899 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %2898
  %2900 = load i32, ptr %2899, align 4, !tbaa !5
  %2901 = call ptr @s2n_connection_new(i32 noundef %2900)
  store ptr %2901, ptr %105, align 8, !tbaa !9
  %2902 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2903 = load ptr, ptr %105, align 8, !tbaa !9
  %2904 = getelementptr inbounds %struct.s2n_connection, ptr %2903, i32 0, i32 27
  %2905 = load ptr, ptr %2904, align 8, !tbaa !17
  %2906 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2905, i32 0, i32 0
  store ptr %2902, ptr %2906, align 8, !tbaa !43
  br label %2907

2907:                                             ; preds = %2897
  %2908 = load i32, ptr @test_count, align 4, !tbaa !5
  %2909 = add nsw i32 %2908, 1
  store i32 %2909, ptr @test_count, align 4, !tbaa !5
  %2910 = load ptr, ptr %105, align 8, !tbaa !9
  %2911 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %2910, ptr noundef %89)
  %2912 = getelementptr inbounds %struct.s2n_result, ptr %106, i32 0, i32 0
  store i32 %2911, ptr %2912, align 4
  %2913 = getelementptr inbounds %struct.s2n_result, ptr %106, i32 0, i32 0
  %2914 = load i32, ptr %2913, align 4
  %2915 = call zeroext i1 @s2n_result_is_ok(i32 %2914)
  br i1 %2915, label %2969, label %2916

2916:                                             ; preds = %2907
  br label %2917

2917:                                             ; preds = %2916
  br label %2918

2918:                                             ; preds = %2917
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #10
  %2919 = call ptr @__errno_location() #11
  %2920 = load i32, ptr %2919, align 4, !tbaa !5
  store i32 %2920, ptr %107, align 4, !tbaa !5
  %2921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2922 = call i32 @s2n_print_stacktrace(ptr noundef %2921)
  %2923 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2924 = trunc i8 %2923 to i1
  br i1 %2924, label %2925, label %2947

2925:                                             ; preds = %2918
  %2926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2927 = call i32 @fileno(ptr noundef %2926) #10
  %2928 = call i32 @isatty(i32 noundef %2927) #10
  %2929 = icmp ne i32 %2928, 0
  br i1 %2929, label %2930, label %2947

2930:                                             ; preds = %2925
  %2931 = load i32, ptr %107, align 4, !tbaa !5
  %2932 = call ptr @__errno_location() #11
  store i32 %2931, ptr %2932, align 4, !tbaa !5
  %2933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2934 = load i32, ptr @test_count, align 4, !tbaa !5
  %2935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2936 = load i32, ptr %2935, align 4, !tbaa !5
  %2937 = call ptr @s2n_strerror(i32 noundef %2936, ptr noundef @.str.4)
  %2938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2939 = load i32, ptr %2938, align 4, !tbaa !5
  %2940 = call ptr @s2n_strerror_debug(i32 noundef %2939, ptr noundef @.str.4)
  %2941 = call ptr @__errno_location() #11
  %2942 = load i32, ptr %2941, align 4, !tbaa !5
  %2943 = call ptr @strerror(i32 noundef %2942) #10
  %2944 = call ptr @__errno_location() #11
  %2945 = load i32, ptr %2944, align 4, !tbaa !5
  %2946 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2933, ptr noundef @.str.2, i32 noundef %2934, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 404, ptr noundef %2937, ptr noundef %2940, ptr noundef %2943, i32 noundef %2945) #10
  br label %2964

2947:                                             ; preds = %2925, %2918
  %2948 = load i32, ptr %107, align 4, !tbaa !5
  %2949 = call ptr @__errno_location() #11
  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() #11
  %2959 = load i32, ptr %2958, align 4, !tbaa !5
  %2960 = call ptr @strerror(i32 noundef %2959) #10
  %2961 = call ptr @__errno_location() #11
  %2962 = load i32, ptr %2961, align 4, !tbaa !5
  %2963 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2950, ptr noundef @.str.5, i32 noundef %2951, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 404, ptr noundef %2954, ptr noundef %2957, ptr noundef %2960, i32 noundef %2962) #10
  br label %2964

2964:                                             ; preds = %2947, %2930
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #10
  br label %2965

2965:                                             ; preds = %2964
  br label %2966

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

2967:                                             ; No predecessors!
  br label %2968

2968:                                             ; preds = %2967
  br label %2969

2969:                                             ; preds = %2968, %2907
  br label %2970

2970:                                             ; preds = %2969
  br label %2971

2971:                                             ; preds = %2970
  br label %2972

2972:                                             ; preds = %2971
  %2973 = load i32, ptr @test_count, align 4, !tbaa !5
  %2974 = add nsw i32 %2973, 1
  store i32 %2974, ptr @test_count, align 4, !tbaa !5
  %2975 = load ptr, ptr %105, align 8, !tbaa !9
  %2976 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %2975, i32 noundef 15, ptr noundef %100)
  %2977 = getelementptr inbounds %struct.s2n_result, ptr %108, i32 0, i32 0
  store i32 %2976, ptr %2977, align 4
  %2978 = getelementptr inbounds %struct.s2n_result, ptr %108, i32 0, i32 0
  %2979 = load i32, ptr %2978, align 4
  %2980 = call zeroext i1 @s2n_result_is_ok(i32 %2979)
  br i1 %2980, label %3034, label %2981

2981:                                             ; preds = %2972
  br label %2982

2982:                                             ; preds = %2981
  br label %2983

2983:                                             ; preds = %2982
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #10
  %2984 = call ptr @__errno_location() #11
  %2985 = load i32, ptr %2984, align 4, !tbaa !5
  store i32 %2985, ptr %109, align 4, !tbaa !5
  %2986 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2987 = call i32 @s2n_print_stacktrace(ptr noundef %2986)
  %2988 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2989 = trunc i8 %2988 to i1
  br i1 %2989, label %2990, label %3012

2990:                                             ; preds = %2983
  %2991 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2992 = call i32 @fileno(ptr noundef %2991) #10
  %2993 = call i32 @isatty(i32 noundef %2992) #10
  %2994 = icmp ne i32 %2993, 0
  br i1 %2994, label %2995, label %3012

2995:                                             ; preds = %2990
  %2996 = load i32, ptr %109, align 4, !tbaa !5
  %2997 = call ptr @__errno_location() #11
  store i32 %2996, ptr %2997, align 4, !tbaa !5
  %2998 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2999 = load i32, ptr @test_count, align 4, !tbaa !5
  %3000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3001 = load i32, ptr %3000, align 4, !tbaa !5
  %3002 = call ptr @s2n_strerror(i32 noundef %3001, ptr noundef @.str.4)
  %3003 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3004 = load i32, ptr %3003, align 4, !tbaa !5
  %3005 = call ptr @s2n_strerror_debug(i32 noundef %3004, ptr noundef @.str.4)
  %3006 = call ptr @__errno_location() #11
  %3007 = load i32, ptr %3006, align 4, !tbaa !5
  %3008 = call ptr @strerror(i32 noundef %3007) #10
  %3009 = call ptr @__errno_location() #11
  %3010 = load i32, ptr %3009, align 4, !tbaa !5
  %3011 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2998, ptr noundef @.str.2, i32 noundef %2999, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 405, ptr noundef %3002, ptr noundef %3005, ptr noundef %3008, i32 noundef %3010) #10
  br label %3029

3012:                                             ; preds = %2990, %2983
  %3013 = load i32, ptr %109, align 4, !tbaa !5
  %3014 = call ptr @__errno_location() #11
  store i32 %3013, ptr %3014, align 4, !tbaa !5
  %3015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3016 = load i32, ptr @test_count, align 4, !tbaa !5
  %3017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3018 = load i32, ptr %3017, align 4, !tbaa !5
  %3019 = call ptr @s2n_strerror(i32 noundef %3018, ptr noundef @.str.4)
  %3020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3021 = load i32, ptr %3020, align 4, !tbaa !5
  %3022 = call ptr @s2n_strerror_debug(i32 noundef %3021, ptr noundef @.str.4)
  %3023 = call ptr @__errno_location() #11
  %3024 = load i32, ptr %3023, align 4, !tbaa !5
  %3025 = call ptr @strerror(i32 noundef %3024) #10
  %3026 = call ptr @__errno_location() #11
  %3027 = load i32, ptr %3026, align 4, !tbaa !5
  %3028 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3015, ptr noundef @.str.5, i32 noundef %3016, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 405, ptr noundef %3019, ptr noundef %3022, ptr noundef %3025, i32 noundef %3027) #10
  br label %3029

3029:                                             ; preds = %3012, %2995
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #10
  br label %3030

3030:                                             ; preds = %3029
  br label %3031

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

3032:                                             ; No predecessors!
  br label %3033

3033:                                             ; preds = %3032
  br label %3034

3034:                                             ; preds = %3033, %2972
  br label %3035

3035:                                             ; preds = %3034
  br label %3036

3036:                                             ; preds = %3035
  br label %3037

3037:                                             ; preds = %3036
  %3038 = load i32, ptr @test_count, align 4, !tbaa !5
  %3039 = add nsw i32 %3038, 1
  store i32 %3039, ptr @test_count, align 4, !tbaa !5
  %3040 = load ptr, ptr %105, align 8, !tbaa !9
  %3041 = call i32 @s2n_tls13_derive_secret(ptr noundef %3040, i32 noundef 3, i32 noundef 1, ptr noundef %9)
  %3042 = getelementptr inbounds %struct.s2n_result, ptr %110, i32 0, i32 0
  store i32 %3041, ptr %3042, align 4
  %3043 = getelementptr inbounds %struct.s2n_result, ptr %110, i32 0, i32 0
  %3044 = load i32, ptr %3043, align 4
  %3045 = call zeroext i1 @s2n_result_is_ok(i32 %3044)
  br i1 %3045, label %3099, label %3046

3046:                                             ; preds = %3037
  br label %3047

3047:                                             ; preds = %3046
  br label %3048

3048:                                             ; preds = %3047
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #10
  %3049 = call ptr @__errno_location() #11
  %3050 = load i32, ptr %3049, align 4, !tbaa !5
  store i32 %3050, ptr %111, align 4, !tbaa !5
  %3051 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3052 = call i32 @s2n_print_stacktrace(ptr noundef %3051)
  %3053 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3054 = trunc i8 %3053 to i1
  br i1 %3054, label %3055, label %3077

3055:                                             ; preds = %3048
  %3056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3057 = call i32 @fileno(ptr noundef %3056) #10
  %3058 = call i32 @isatty(i32 noundef %3057) #10
  %3059 = icmp ne i32 %3058, 0
  br i1 %3059, label %3060, label %3077

3060:                                             ; preds = %3055
  %3061 = load i32, ptr %111, align 4, !tbaa !5
  %3062 = call ptr @__errno_location() #11
  store i32 %3061, ptr %3062, align 4, !tbaa !5
  %3063 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3064 = load i32, ptr @test_count, align 4, !tbaa !5
  %3065 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3066 = load i32, ptr %3065, align 4, !tbaa !5
  %3067 = call ptr @s2n_strerror(i32 noundef %3066, ptr noundef @.str.4)
  %3068 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3069 = load i32, ptr %3068, align 4, !tbaa !5
  %3070 = call ptr @s2n_strerror_debug(i32 noundef %3069, ptr noundef @.str.4)
  %3071 = call ptr @__errno_location() #11
  %3072 = load i32, ptr %3071, align 4, !tbaa !5
  %3073 = call ptr @strerror(i32 noundef %3072) #10
  %3074 = call ptr @__errno_location() #11
  %3075 = load i32, ptr %3074, align 4, !tbaa !5
  %3076 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3063, ptr noundef @.str.2, i32 noundef %3064, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 408, ptr noundef %3067, ptr noundef %3070, ptr noundef %3073, i32 noundef %3075) #10
  br label %3094

3077:                                             ; preds = %3055, %3048
  %3078 = load i32, ptr %111, align 4, !tbaa !5
  %3079 = call ptr @__errno_location() #11
  store i32 %3078, ptr %3079, align 4, !tbaa !5
  %3080 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3081 = load i32, ptr @test_count, align 4, !tbaa !5
  %3082 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3083 = load i32, ptr %3082, align 4, !tbaa !5
  %3084 = call ptr @s2n_strerror(i32 noundef %3083, ptr noundef @.str.4)
  %3085 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3086 = load i32, ptr %3085, align 4, !tbaa !5
  %3087 = call ptr @s2n_strerror_debug(i32 noundef %3086, ptr noundef @.str.4)
  %3088 = call ptr @__errno_location() #11
  %3089 = load i32, ptr %3088, align 4, !tbaa !5
  %3090 = call ptr @strerror(i32 noundef %3089) #10
  %3091 = call ptr @__errno_location() #11
  %3092 = load i32, ptr %3091, align 4, !tbaa !5
  %3093 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3080, ptr noundef @.str.5, i32 noundef %3081, ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 408, ptr noundef %3084, ptr noundef %3087, ptr noundef %3090, i32 noundef %3092) #10
  br label %3094

3094:                                             ; preds = %3077, %3060
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #10
  br label %3095

3095:                                             ; preds = %3094
  br label %3096

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

3097:                                             ; No predecessors!
  br label %3098

3098:                                             ; preds = %3097
  br label %3099

3099:                                             ; preds = %3098, %3037
  br label %3100

3100:                                             ; preds = %3099
  br label %3101

3101:                                             ; preds = %3100
  br label %3102

3102:                                             ; preds = %3101
  %3103 = load i32, ptr @test_count, align 4, !tbaa !5
  %3104 = add nsw i32 %3103, 1
  store i32 %3104, ptr @test_count, align 4, !tbaa !5
  %3105 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 1
  %3106 = load i32, ptr %3105, align 8, !tbaa !48
  %3107 = getelementptr inbounds %struct.s2n_blob, ptr %102, i32 0, i32 1
  %3108 = load i32, ptr %3107, align 8, !tbaa !48
  %3109 = icmp eq i32 %3106, %3108
  br i1 %3109, label %3163, label %3110

3110:                                             ; preds = %3102
  br label %3111

3111:                                             ; preds = %3110
  br label %3112

3112:                                             ; preds = %3111
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #10
  %3113 = call ptr @__errno_location() #11
  %3114 = load i32, ptr %3113, align 4, !tbaa !5
  store i32 %3114, ptr %112, align 4, !tbaa !5
  %3115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3116 = call i32 @s2n_print_stacktrace(ptr noundef %3115)
  %3117 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3118 = trunc i8 %3117 to i1
  br i1 %3118, label %3119, label %3141

3119:                                             ; preds = %3112
  %3120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3121 = call i32 @fileno(ptr noundef %3120) #10
  %3122 = call i32 @isatty(i32 noundef %3121) #10
  %3123 = icmp ne i32 %3122, 0
  br i1 %3123, label %3124, label %3141

3124:                                             ; preds = %3119
  %3125 = load i32, ptr %112, align 4, !tbaa !5
  %3126 = call ptr @__errno_location() #11
  store i32 %3125, ptr %3126, align 4, !tbaa !5
  %3127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3128 = load i32, ptr @test_count, align 4, !tbaa !5
  %3129 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3130 = load i32, ptr %3129, align 4, !tbaa !5
  %3131 = call ptr @s2n_strerror(i32 noundef %3130, ptr noundef @.str.4)
  %3132 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3133 = load i32, ptr %3132, align 4, !tbaa !5
  %3134 = call ptr @s2n_strerror_debug(i32 noundef %3133, ptr noundef @.str.4)
  %3135 = call ptr @__errno_location() #11
  %3136 = load i32, ptr %3135, align 4, !tbaa !5
  %3137 = call ptr @strerror(i32 noundef %3136) #10
  %3138 = call ptr @__errno_location() #11
  %3139 = load i32, ptr %3138, align 4, !tbaa !5
  %3140 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3127, ptr noundef @.str.2, i32 noundef %3128, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 409, ptr noundef %3131, ptr noundef %3134, ptr noundef %3137, i32 noundef %3139) #10
  br label %3158

3141:                                             ; preds = %3119, %3112
  %3142 = load i32, ptr %112, align 4, !tbaa !5
  %3143 = call ptr @__errno_location() #11
  store i32 %3142, ptr %3143, align 4, !tbaa !5
  %3144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3145 = load i32, ptr @test_count, align 4, !tbaa !5
  %3146 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3147 = load i32, ptr %3146, align 4, !tbaa !5
  %3148 = call ptr @s2n_strerror(i32 noundef %3147, ptr noundef @.str.4)
  %3149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3150 = load i32, ptr %3149, align 4, !tbaa !5
  %3151 = call ptr @s2n_strerror_debug(i32 noundef %3150, ptr noundef @.str.4)
  %3152 = call ptr @__errno_location() #11
  %3153 = load i32, ptr %3152, align 4, !tbaa !5
  %3154 = call ptr @strerror(i32 noundef %3153) #10
  %3155 = call ptr @__errno_location() #11
  %3156 = load i32, ptr %3155, align 4, !tbaa !5
  %3157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3144, ptr noundef @.str.5, i32 noundef %3145, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 409, ptr noundef %3148, ptr noundef %3151, ptr noundef %3154, i32 noundef %3156) #10
  br label %3158

3158:                                             ; preds = %3141, %3124
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #10
  br label %3159

3159:                                             ; preds = %3158
  br label %3160

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

3161:                                             ; No predecessors!
  br label %3162

3162:                                             ; preds = %3161
  br label %3163

3163:                                             ; preds = %3162, %3102
  br label %3164

3164:                                             ; preds = %3163
  br label %3165

3165:                                             ; preds = %3164
  br label %3166

3166:                                             ; preds = %3165
  %3167 = getelementptr inbounds %struct.s2n_blob, ptr %102, i32 0, i32 1
  %3168 = load i32, ptr %3167, align 8, !tbaa !48
  %3169 = icmp ne i32 %3168, 0
  br i1 %3169, label %3170, label %3239

3170:                                             ; preds = %3166
  br label %3171

3171:                                             ; preds = %3170
  %3172 = load i32, ptr @test_count, align 4, !tbaa !5
  %3173 = add nsw i32 %3172, 1
  store i32 %3173, ptr @test_count, align 4, !tbaa !5
  %3174 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 0
  %3175 = load ptr, ptr %3174, align 8, !tbaa !49
  %3176 = getelementptr inbounds %struct.s2n_blob, ptr %102, i32 0, i32 0
  %3177 = load ptr, ptr %3176, align 8, !tbaa !49
  %3178 = getelementptr inbounds %struct.s2n_blob, ptr %102, i32 0, i32 1
  %3179 = load i32, ptr %3178, align 8, !tbaa !48
  %3180 = zext i32 %3179 to i64
  %3181 = call i32 @memcmp(ptr noundef %3175, ptr noundef %3177, i64 noundef %3180) #13
  %3182 = icmp eq i32 %3181, 0
  br i1 %3182, label %3236, label %3183

3183:                                             ; preds = %3171
  br label %3184

3184:                                             ; preds = %3183
  br label %3185

3185:                                             ; preds = %3184
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #10
  %3186 = call ptr @__errno_location() #11
  %3187 = load i32, ptr %3186, align 4, !tbaa !5
  store i32 %3187, ptr %113, align 4, !tbaa !5
  %3188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3189 = call i32 @s2n_print_stacktrace(ptr noundef %3188)
  %3190 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3191 = trunc i8 %3190 to i1
  br i1 %3191, label %3192, label %3214

3192:                                             ; preds = %3185
  %3193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3194 = call i32 @fileno(ptr noundef %3193) #10
  %3195 = call i32 @isatty(i32 noundef %3194) #10
  %3196 = icmp ne i32 %3195, 0
  br i1 %3196, label %3197, label %3214

3197:                                             ; preds = %3192
  %3198 = load i32, ptr %113, align 4, !tbaa !5
  %3199 = call ptr @__errno_location() #11
  store i32 %3198, ptr %3199, align 4, !tbaa !5
  %3200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3201 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %3203, ptr noundef @.str.4)
  %3205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3206 = load i32, ptr %3205, align 4, !tbaa !5
  %3207 = call ptr @s2n_strerror_debug(i32 noundef %3206, ptr noundef @.str.4)
  %3208 = call ptr @__errno_location() #11
  %3209 = load i32, ptr %3208, align 4, !tbaa !5
  %3210 = call ptr @strerror(i32 noundef %3209) #10
  %3211 = call ptr @__errno_location() #11
  %3212 = load i32, ptr %3211, align 4, !tbaa !5
  %3213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3200, ptr noundef @.str.2, i32 noundef %3201, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 410, ptr noundef %3204, ptr noundef %3207, ptr noundef %3210, i32 noundef %3212) #10
  br label %3231

3214:                                             ; preds = %3192, %3185
  %3215 = load i32, ptr %113, align 4, !tbaa !5
  %3216 = call ptr @__errno_location() #11
  store i32 %3215, ptr %3216, align 4, !tbaa !5
  %3217 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3218 = load i32, ptr @test_count, align 4, !tbaa !5
  %3219 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3220 = load i32, ptr %3219, align 4, !tbaa !5
  %3221 = call ptr @s2n_strerror(i32 noundef %3220, ptr noundef @.str.4)
  %3222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3223 = load i32, ptr %3222, align 4, !tbaa !5
  %3224 = call ptr @s2n_strerror_debug(i32 noundef %3223, ptr noundef @.str.4)
  %3225 = call ptr @__errno_location() #11
  %3226 = load i32, ptr %3225, align 4, !tbaa !5
  %3227 = call ptr @strerror(i32 noundef %3226) #10
  %3228 = call ptr @__errno_location() #11
  %3229 = load i32, ptr %3228, align 4, !tbaa !5
  %3230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3217, ptr noundef @.str.5, i32 noundef %3218, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 410, ptr noundef %3221, ptr noundef %3224, ptr noundef %3227, i32 noundef %3229) #10
  br label %3231

3231:                                             ; preds = %3214, %3197
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #10
  br label %3232

3232:                                             ; preds = %3231
  br label %3233

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

3234:                                             ; No predecessors!
  br label %3235

3235:                                             ; preds = %3234
  br label %3236

3236:                                             ; preds = %3235, %3171
  br label %3237

3237:                                             ; preds = %3236
  br label %3238

3238:                                             ; preds = %3237
  br label %3239

3239:                                             ; preds = %3238, %3166
  br label %3240

3240:                                             ; preds = %3239
  br label %3241

3241:                                             ; preds = %3240
  %3242 = call i32 @s2n_connection_ptr_free(ptr noundef %105)
  %3243 = getelementptr inbounds %struct.s2n_result, ptr %114, i32 0, i32 0
  store i32 %3242, ptr %3243, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  br label %3244

3244:                                             ; preds = %3241
  %3245 = load i64, ptr %104, align 8, !tbaa !15
  %3246 = add i64 %3245, 1
  store i64 %3246, ptr %104, align 8, !tbaa !15
  br label %2893, !llvm.loop !60

3247:                                             ; preds = %2896
  store i32 0, ptr %14, align 4
  br label %3248

3248:                                             ; preds = %3247, %2889
  %3249 = call i32 @s2n_free(ptr noundef %102)
  call void @llvm.lifetime.end.p0(i64 24, ptr %102) #10
  br label %3250

3250:                                             ; preds = %3248, %2879
  %3251 = call i32 @s2n_free(ptr noundef %100)
  call void @llvm.lifetime.end.p0(i64 24, ptr %100) #10
  %3252 = load i32, ptr %14, align 4
  switch i32 %3252, label %4400 [
    i32 0, label %3253
  ]

3253:                                             ; preds = %3250
  call void @llvm.lifetime.start.p0(i64 24, ptr %115) #10
  call void @llvm.memset.p0.i64(ptr align 8 %115, i8 0, i64 24, i1 false)
  br label %3254

3254:                                             ; preds = %3253
  %3255 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %115, ptr noundef @.str.41)
  %3256 = getelementptr inbounds %struct.s2n_result, ptr %116, i32 0, i32 0
  store i32 %3255, ptr %3256, align 4
  %3257 = getelementptr inbounds %struct.s2n_result, ptr %116, i32 0, i32 0
  %3258 = load i32, ptr %3257, align 4
  %3259 = call zeroext i1 @s2n_result_is_ok(i32 %3258)
  br i1 %3259, label %3261, label %3260

3260:                                             ; preds = %3254
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %3631

3261:                                             ; preds = %3254
  br label %3262

3262:                                             ; preds = %3261
  br label %3263

3263:                                             ; preds = %3262
  call void @llvm.lifetime.start.p0(i64 24, ptr %117) #10
  call void @llvm.memset.p0.i64(ptr align 8 %117, i8 0, i64 24, i1 false)
  br label %3264

3264:                                             ; preds = %3263
  %3265 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %117, ptr noundef @.str.46)
  %3266 = getelementptr inbounds %struct.s2n_result, ptr %118, i32 0, i32 0
  store i32 %3265, ptr %3266, align 4
  %3267 = getelementptr inbounds %struct.s2n_result, ptr %118, i32 0, i32 0
  %3268 = load i32, ptr %3267, align 4
  %3269 = call zeroext i1 @s2n_result_is_ok(i32 %3268)
  br i1 %3269, label %3271, label %3270

3270:                                             ; preds = %3264
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %3629

3271:                                             ; preds = %3264
  br label %3272

3272:                                             ; preds = %3271
  br label %3273

3273:                                             ; preds = %3272
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #10
  store i64 0, ptr %119, align 8, !tbaa !15
  br label %3274

3274:                                             ; preds = %3625, %3273
  %3275 = load i64, ptr %119, align 8, !tbaa !15
  %3276 = icmp ult i64 %3275, 2
  br i1 %3276, label %3278, label %3277

3277:                                             ; preds = %3274
  store i32 313, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #10
  br label %3628

3278:                                             ; preds = %3274
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #10
  %3279 = load i64, ptr %119, align 8, !tbaa !15
  %3280 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %3279
  %3281 = load i32, ptr %3280, align 4, !tbaa !5
  %3282 = call ptr @s2n_connection_new(i32 noundef %3281)
  store ptr %3282, ptr %120, align 8, !tbaa !9
  %3283 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %3284 = load ptr, ptr %120, align 8, !tbaa !9
  %3285 = getelementptr inbounds %struct.s2n_connection, ptr %3284, i32 0, i32 27
  %3286 = load ptr, ptr %3285, align 8, !tbaa !17
  %3287 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %3286, i32 0, i32 0
  store ptr %3283, ptr %3287, align 8, !tbaa !43
  br label %3288

3288:                                             ; preds = %3278
  %3289 = load i32, ptr @test_count, align 4, !tbaa !5
  %3290 = add nsw i32 %3289, 1
  store i32 %3290, ptr @test_count, align 4, !tbaa !5
  %3291 = load ptr, ptr %120, align 8, !tbaa !9
  %3292 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %3291, ptr noundef %89)
  %3293 = getelementptr inbounds %struct.s2n_result, ptr %121, i32 0, i32 0
  store i32 %3292, ptr %3293, align 4
  %3294 = getelementptr inbounds %struct.s2n_result, ptr %121, i32 0, i32 0
  %3295 = load i32, ptr %3294, align 4
  %3296 = call zeroext i1 @s2n_result_is_ok(i32 %3295)
  br i1 %3296, label %3350, label %3297

3297:                                             ; preds = %3288
  br label %3298

3298:                                             ; preds = %3297
  br label %3299

3299:                                             ; preds = %3298
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #10
  %3300 = call ptr @__errno_location() #11
  %3301 = load i32, ptr %3300, align 4, !tbaa !5
  store i32 %3301, ptr %122, align 4, !tbaa !5
  %3302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3303 = call i32 @s2n_print_stacktrace(ptr noundef %3302)
  %3304 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3305 = trunc i8 %3304 to i1
  br i1 %3305, label %3306, label %3328

3306:                                             ; preds = %3299
  %3307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3308 = call i32 @fileno(ptr noundef %3307) #10
  %3309 = call i32 @isatty(i32 noundef %3308) #10
  %3310 = icmp ne i32 %3309, 0
  br i1 %3310, label %3311, label %3328

3311:                                             ; preds = %3306
  %3312 = load i32, ptr %122, align 4, !tbaa !5
  %3313 = call ptr @__errno_location() #11
  store i32 %3312, ptr %3313, align 4, !tbaa !5
  %3314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3315 = load i32, ptr @test_count, align 4, !tbaa !5
  %3316 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3317 = load i32, ptr %3316, align 4, !tbaa !5
  %3318 = call ptr @s2n_strerror(i32 noundef %3317, ptr noundef @.str.4)
  %3319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3320 = load i32, ptr %3319, align 4, !tbaa !5
  %3321 = call ptr @s2n_strerror_debug(i32 noundef %3320, ptr noundef @.str.4)
  %3322 = call ptr @__errno_location() #11
  %3323 = load i32, ptr %3322, align 4, !tbaa !5
  %3324 = call ptr @strerror(i32 noundef %3323) #10
  %3325 = call ptr @__errno_location() #11
  %3326 = load i32, ptr %3325, align 4, !tbaa !5
  %3327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3314, ptr noundef @.str.2, i32 noundef %3315, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 448, ptr noundef %3318, ptr noundef %3321, ptr noundef %3324, i32 noundef %3326) #10
  br label %3345

3328:                                             ; preds = %3306, %3299
  %3329 = load i32, ptr %122, align 4, !tbaa !5
  %3330 = call ptr @__errno_location() #11
  store i32 %3329, ptr %3330, align 4, !tbaa !5
  %3331 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3332 = load i32, ptr @test_count, align 4, !tbaa !5
  %3333 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3334 = load i32, ptr %3333, align 4, !tbaa !5
  %3335 = call ptr @s2n_strerror(i32 noundef %3334, ptr noundef @.str.4)
  %3336 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3337 = load i32, ptr %3336, align 4, !tbaa !5
  %3338 = call ptr @s2n_strerror_debug(i32 noundef %3337, ptr noundef @.str.4)
  %3339 = call ptr @__errno_location() #11
  %3340 = load i32, ptr %3339, align 4, !tbaa !5
  %3341 = call ptr @strerror(i32 noundef %3340) #10
  %3342 = call ptr @__errno_location() #11
  %3343 = load i32, ptr %3342, align 4, !tbaa !5
  %3344 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3331, ptr noundef @.str.5, i32 noundef %3332, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 448, ptr noundef %3335, ptr noundef %3338, ptr noundef %3341, i32 noundef %3343) #10
  br label %3345

3345:                                             ; preds = %3328, %3311
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #10
  br label %3346

3346:                                             ; preds = %3345
  br label %3347

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

3348:                                             ; No predecessors!
  br label %3349

3349:                                             ; preds = %3348
  br label %3350

3350:                                             ; preds = %3349, %3288
  br label %3351

3351:                                             ; preds = %3350
  br label %3352

3352:                                             ; preds = %3351
  br label %3353

3353:                                             ; preds = %3352
  %3354 = load i32, ptr @test_count, align 4, !tbaa !5
  %3355 = add nsw i32 %3354, 1
  store i32 %3355, ptr @test_count, align 4, !tbaa !5
  %3356 = load ptr, ptr %120, align 8, !tbaa !9
  %3357 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %3356, i32 noundef 15, ptr noundef %115)
  %3358 = getelementptr inbounds %struct.s2n_result, ptr %123, i32 0, i32 0
  store i32 %3357, ptr %3358, align 4
  %3359 = getelementptr inbounds %struct.s2n_result, ptr %123, i32 0, i32 0
  %3360 = load i32, ptr %3359, align 4
  %3361 = call zeroext i1 @s2n_result_is_ok(i32 %3360)
  br i1 %3361, label %3415, label %3362

3362:                                             ; preds = %3353
  br label %3363

3363:                                             ; preds = %3362
  br label %3364

3364:                                             ; preds = %3363
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #10
  %3365 = call ptr @__errno_location() #11
  %3366 = load i32, ptr %3365, align 4, !tbaa !5
  store i32 %3366, ptr %124, align 4, !tbaa !5
  %3367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3368 = call i32 @s2n_print_stacktrace(ptr noundef %3367)
  %3369 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3370 = trunc i8 %3369 to i1
  br i1 %3370, label %3371, label %3393

3371:                                             ; preds = %3364
  %3372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3373 = call i32 @fileno(ptr noundef %3372) #10
  %3374 = call i32 @isatty(i32 noundef %3373) #10
  %3375 = icmp ne i32 %3374, 0
  br i1 %3375, label %3376, label %3393

3376:                                             ; preds = %3371
  %3377 = load i32, ptr %124, align 4, !tbaa !5
  %3378 = call ptr @__errno_location() #11
  store i32 %3377, ptr %3378, align 4, !tbaa !5
  %3379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3380 = load i32, ptr @test_count, align 4, !tbaa !5
  %3381 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3382 = load i32, ptr %3381, align 4, !tbaa !5
  %3383 = call ptr @s2n_strerror(i32 noundef %3382, ptr noundef @.str.4)
  %3384 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3385 = load i32, ptr %3384, align 4, !tbaa !5
  %3386 = call ptr @s2n_strerror_debug(i32 noundef %3385, ptr noundef @.str.4)
  %3387 = call ptr @__errno_location() #11
  %3388 = load i32, ptr %3387, align 4, !tbaa !5
  %3389 = call ptr @strerror(i32 noundef %3388) #10
  %3390 = call ptr @__errno_location() #11
  %3391 = load i32, ptr %3390, align 4, !tbaa !5
  %3392 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3379, ptr noundef @.str.2, i32 noundef %3380, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 449, ptr noundef %3383, ptr noundef %3386, ptr noundef %3389, i32 noundef %3391) #10
  br label %3410

3393:                                             ; preds = %3371, %3364
  %3394 = load i32, ptr %124, align 4, !tbaa !5
  %3395 = call ptr @__errno_location() #11
  store i32 %3394, ptr %3395, align 4, !tbaa !5
  %3396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3397 = load i32, ptr @test_count, align 4, !tbaa !5
  %3398 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3399 = load i32, ptr %3398, align 4, !tbaa !5
  %3400 = call ptr @s2n_strerror(i32 noundef %3399, ptr noundef @.str.4)
  %3401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3402 = load i32, ptr %3401, align 4, !tbaa !5
  %3403 = call ptr @s2n_strerror_debug(i32 noundef %3402, ptr noundef @.str.4)
  %3404 = call ptr @__errno_location() #11
  %3405 = load i32, ptr %3404, align 4, !tbaa !5
  %3406 = call ptr @strerror(i32 noundef %3405) #10
  %3407 = call ptr @__errno_location() #11
  %3408 = load i32, ptr %3407, align 4, !tbaa !5
  %3409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3396, ptr noundef @.str.5, i32 noundef %3397, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 449, ptr noundef %3400, ptr noundef %3403, ptr noundef %3406, i32 noundef %3408) #10
  br label %3410

3410:                                             ; preds = %3393, %3376
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #10
  br label %3411

3411:                                             ; preds = %3410
  br label %3412

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

3413:                                             ; No predecessors!
  br label %3414

3414:                                             ; preds = %3413
  br label %3415

3415:                                             ; preds = %3414, %3353
  br label %3416

3416:                                             ; preds = %3415
  br label %3417

3417:                                             ; preds = %3416
  br label %3418

3418:                                             ; preds = %3417
  %3419 = load i32, ptr @test_count, align 4, !tbaa !5
  %3420 = add nsw i32 %3419, 1
  store i32 %3420, ptr @test_count, align 4, !tbaa !5
  %3421 = load ptr, ptr %120, align 8, !tbaa !9
  %3422 = call i32 @s2n_tls13_derive_secret(ptr noundef %3421, i32 noundef 3, i32 noundef 0, ptr noundef %9)
  %3423 = getelementptr inbounds %struct.s2n_result, ptr %125, i32 0, i32 0
  store i32 %3422, ptr %3423, align 4
  %3424 = getelementptr inbounds %struct.s2n_result, ptr %125, i32 0, i32 0
  %3425 = load i32, ptr %3424, align 4
  %3426 = call zeroext i1 @s2n_result_is_ok(i32 %3425)
  br i1 %3426, label %3480, label %3427

3427:                                             ; preds = %3418
  br label %3428

3428:                                             ; preds = %3427
  br label %3429

3429:                                             ; preds = %3428
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #10
  %3430 = call ptr @__errno_location() #11
  %3431 = load i32, ptr %3430, align 4, !tbaa !5
  store i32 %3431, ptr %126, align 4, !tbaa !5
  %3432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3433 = call i32 @s2n_print_stacktrace(ptr noundef %3432)
  %3434 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3435 = trunc i8 %3434 to i1
  br i1 %3435, label %3436, label %3458

3436:                                             ; preds = %3429
  %3437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3438 = call i32 @fileno(ptr noundef %3437) #10
  %3439 = call i32 @isatty(i32 noundef %3438) #10
  %3440 = icmp ne i32 %3439, 0
  br i1 %3440, label %3441, label %3458

3441:                                             ; preds = %3436
  %3442 = load i32, ptr %126, align 4, !tbaa !5
  %3443 = call ptr @__errno_location() #11
  store i32 %3442, ptr %3443, align 4, !tbaa !5
  %3444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3445 = load i32, ptr @test_count, align 4, !tbaa !5
  %3446 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3447 = load i32, ptr %3446, align 4, !tbaa !5
  %3448 = call ptr @s2n_strerror(i32 noundef %3447, ptr noundef @.str.4)
  %3449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3450 = load i32, ptr %3449, align 4, !tbaa !5
  %3451 = call ptr @s2n_strerror_debug(i32 noundef %3450, ptr noundef @.str.4)
  %3452 = call ptr @__errno_location() #11
  %3453 = load i32, ptr %3452, align 4, !tbaa !5
  %3454 = call ptr @strerror(i32 noundef %3453) #10
  %3455 = call ptr @__errno_location() #11
  %3456 = load i32, ptr %3455, align 4, !tbaa !5
  %3457 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3444, ptr noundef @.str.2, i32 noundef %3445, ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 452, ptr noundef %3448, ptr noundef %3451, ptr noundef %3454, i32 noundef %3456) #10
  br label %3475

3458:                                             ; preds = %3436, %3429
  %3459 = load i32, ptr %126, align 4, !tbaa !5
  %3460 = call ptr @__errno_location() #11
  store i32 %3459, ptr %3460, align 4, !tbaa !5
  %3461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3462 = load i32, ptr @test_count, align 4, !tbaa !5
  %3463 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3464 = load i32, ptr %3463, align 4, !tbaa !5
  %3465 = call ptr @s2n_strerror(i32 noundef %3464, ptr noundef @.str.4)
  %3466 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3467 = load i32, ptr %3466, align 4, !tbaa !5
  %3468 = call ptr @s2n_strerror_debug(i32 noundef %3467, ptr noundef @.str.4)
  %3469 = call ptr @__errno_location() #11
  %3470 = load i32, ptr %3469, align 4, !tbaa !5
  %3471 = call ptr @strerror(i32 noundef %3470) #10
  %3472 = call ptr @__errno_location() #11
  %3473 = load i32, ptr %3472, align 4, !tbaa !5
  %3474 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3461, ptr noundef @.str.5, i32 noundef %3462, ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 452, ptr noundef %3465, ptr noundef %3468, ptr noundef %3471, i32 noundef %3473) #10
  br label %3475

3475:                                             ; preds = %3458, %3441
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #10
  br label %3476

3476:                                             ; preds = %3475
  br label %3477

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

3478:                                             ; No predecessors!
  br label %3479

3479:                                             ; preds = %3478
  br label %3480

3480:                                             ; preds = %3479, %3418
  br label %3481

3481:                                             ; preds = %3480
  br label %3482

3482:                                             ; preds = %3481
  br label %3483

3483:                                             ; preds = %3482
  %3484 = load i32, ptr @test_count, align 4, !tbaa !5
  %3485 = add nsw i32 %3484, 1
  store i32 %3485, ptr @test_count, align 4, !tbaa !5
  %3486 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 1
  %3487 = load i32, ptr %3486, align 8, !tbaa !48
  %3488 = getelementptr inbounds %struct.s2n_blob, ptr %117, i32 0, i32 1
  %3489 = load i32, ptr %3488, align 8, !tbaa !48
  %3490 = icmp eq i32 %3487, %3489
  br i1 %3490, label %3544, label %3491

3491:                                             ; preds = %3483
  br label %3492

3492:                                             ; preds = %3491
  br label %3493

3493:                                             ; preds = %3492
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #10
  %3494 = call ptr @__errno_location() #11
  %3495 = load i32, ptr %3494, align 4, !tbaa !5
  store i32 %3495, ptr %127, align 4, !tbaa !5
  %3496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3497 = call i32 @s2n_print_stacktrace(ptr noundef %3496)
  %3498 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3499 = trunc i8 %3498 to i1
  br i1 %3499, label %3500, label %3522

3500:                                             ; preds = %3493
  %3501 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3502 = call i32 @fileno(ptr noundef %3501) #10
  %3503 = call i32 @isatty(i32 noundef %3502) #10
  %3504 = icmp ne i32 %3503, 0
  br i1 %3504, label %3505, label %3522

3505:                                             ; preds = %3500
  %3506 = load i32, ptr %127, align 4, !tbaa !5
  %3507 = call ptr @__errno_location() #11
  store i32 %3506, ptr %3507, align 4, !tbaa !5
  %3508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3509 = load i32, ptr @test_count, align 4, !tbaa !5
  %3510 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3511 = load i32, ptr %3510, align 4, !tbaa !5
  %3512 = call ptr @s2n_strerror(i32 noundef %3511, ptr noundef @.str.4)
  %3513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3514 = load i32, ptr %3513, align 4, !tbaa !5
  %3515 = call ptr @s2n_strerror_debug(i32 noundef %3514, ptr noundef @.str.4)
  %3516 = call ptr @__errno_location() #11
  %3517 = load i32, ptr %3516, align 4, !tbaa !5
  %3518 = call ptr @strerror(i32 noundef %3517) #10
  %3519 = call ptr @__errno_location() #11
  %3520 = load i32, ptr %3519, align 4, !tbaa !5
  %3521 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3508, ptr noundef @.str.2, i32 noundef %3509, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 454, ptr noundef %3512, ptr noundef %3515, ptr noundef %3518, i32 noundef %3520) #10
  br label %3539

3522:                                             ; preds = %3500, %3493
  %3523 = load i32, ptr %127, align 4, !tbaa !5
  %3524 = call ptr @__errno_location() #11
  store i32 %3523, ptr %3524, align 4, !tbaa !5
  %3525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3526 = load i32, ptr @test_count, align 4, !tbaa !5
  %3527 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3528 = load i32, ptr %3527, align 4, !tbaa !5
  %3529 = call ptr @s2n_strerror(i32 noundef %3528, ptr noundef @.str.4)
  %3530 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3531 = load i32, ptr %3530, align 4, !tbaa !5
  %3532 = call ptr @s2n_strerror_debug(i32 noundef %3531, ptr noundef @.str.4)
  %3533 = call ptr @__errno_location() #11
  %3534 = load i32, ptr %3533, align 4, !tbaa !5
  %3535 = call ptr @strerror(i32 noundef %3534) #10
  %3536 = call ptr @__errno_location() #11
  %3537 = load i32, ptr %3536, align 4, !tbaa !5
  %3538 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3525, ptr noundef @.str.5, i32 noundef %3526, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 454, ptr noundef %3529, ptr noundef %3532, ptr noundef %3535, i32 noundef %3537) #10
  br label %3539

3539:                                             ; preds = %3522, %3505
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #10
  br label %3540

3540:                                             ; preds = %3539
  br label %3541

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

3542:                                             ; No predecessors!
  br label %3543

3543:                                             ; preds = %3542
  br label %3544

3544:                                             ; preds = %3543, %3483
  br label %3545

3545:                                             ; preds = %3544
  br label %3546

3546:                                             ; preds = %3545
  br label %3547

3547:                                             ; preds = %3546
  %3548 = getelementptr inbounds %struct.s2n_blob, ptr %117, i32 0, i32 1
  %3549 = load i32, ptr %3548, align 8, !tbaa !48
  %3550 = icmp ne i32 %3549, 0
  br i1 %3550, label %3551, label %3620

3551:                                             ; preds = %3547
  br label %3552

3552:                                             ; preds = %3551
  %3553 = load i32, ptr @test_count, align 4, !tbaa !5
  %3554 = add nsw i32 %3553, 1
  store i32 %3554, ptr @test_count, align 4, !tbaa !5
  %3555 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 0
  %3556 = load ptr, ptr %3555, align 8, !tbaa !49
  %3557 = getelementptr inbounds %struct.s2n_blob, ptr %117, i32 0, i32 0
  %3558 = load ptr, ptr %3557, align 8, !tbaa !49
  %3559 = getelementptr inbounds %struct.s2n_blob, ptr %117, i32 0, i32 1
  %3560 = load i32, ptr %3559, align 8, !tbaa !48
  %3561 = zext i32 %3560 to i64
  %3562 = call i32 @memcmp(ptr noundef %3556, ptr noundef %3558, i64 noundef %3561) #13
  %3563 = icmp eq i32 %3562, 0
  br i1 %3563, label %3617, label %3564

3564:                                             ; preds = %3552
  br label %3565

3565:                                             ; preds = %3564
  br label %3566

3566:                                             ; preds = %3565
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #10
  %3567 = call ptr @__errno_location() #11
  %3568 = load i32, ptr %3567, align 4, !tbaa !5
  store i32 %3568, ptr %128, align 4, !tbaa !5
  %3569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3570 = call i32 @s2n_print_stacktrace(ptr noundef %3569)
  %3571 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3572 = trunc i8 %3571 to i1
  br i1 %3572, label %3573, label %3595

3573:                                             ; preds = %3566
  %3574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3575 = call i32 @fileno(ptr noundef %3574) #10
  %3576 = call i32 @isatty(i32 noundef %3575) #10
  %3577 = icmp ne i32 %3576, 0
  br i1 %3577, label %3578, label %3595

3578:                                             ; preds = %3573
  %3579 = load i32, ptr %128, align 4, !tbaa !5
  %3580 = call ptr @__errno_location() #11
  store i32 %3579, ptr %3580, align 4, !tbaa !5
  %3581 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3582 = load i32, ptr @test_count, align 4, !tbaa !5
  %3583 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3584 = load i32, ptr %3583, align 4, !tbaa !5
  %3585 = call ptr @s2n_strerror(i32 noundef %3584, ptr noundef @.str.4)
  %3586 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3587 = load i32, ptr %3586, align 4, !tbaa !5
  %3588 = call ptr @s2n_strerror_debug(i32 noundef %3587, ptr noundef @.str.4)
  %3589 = call ptr @__errno_location() #11
  %3590 = load i32, ptr %3589, align 4, !tbaa !5
  %3591 = call ptr @strerror(i32 noundef %3590) #10
  %3592 = call ptr @__errno_location() #11
  %3593 = load i32, ptr %3592, align 4, !tbaa !5
  %3594 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3581, ptr noundef @.str.2, i32 noundef %3582, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 455, ptr noundef %3585, ptr noundef %3588, ptr noundef %3591, i32 noundef %3593) #10
  br label %3612

3595:                                             ; preds = %3573, %3566
  %3596 = load i32, ptr %128, align 4, !tbaa !5
  %3597 = call ptr @__errno_location() #11
  store i32 %3596, ptr %3597, align 4, !tbaa !5
  %3598 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3599 = load i32, ptr @test_count, align 4, !tbaa !5
  %3600 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3601 = load i32, ptr %3600, align 4, !tbaa !5
  %3602 = call ptr @s2n_strerror(i32 noundef %3601, ptr noundef @.str.4)
  %3603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3604 = load i32, ptr %3603, align 4, !tbaa !5
  %3605 = call ptr @s2n_strerror_debug(i32 noundef %3604, ptr noundef @.str.4)
  %3606 = call ptr @__errno_location() #11
  %3607 = load i32, ptr %3606, align 4, !tbaa !5
  %3608 = call ptr @strerror(i32 noundef %3607) #10
  %3609 = call ptr @__errno_location() #11
  %3610 = load i32, ptr %3609, align 4, !tbaa !5
  %3611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3598, ptr noundef @.str.5, i32 noundef %3599, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 455, ptr noundef %3602, ptr noundef %3605, ptr noundef %3608, i32 noundef %3610) #10
  br label %3612

3612:                                             ; preds = %3595, %3578
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #10
  br label %3613

3613:                                             ; preds = %3612
  br label %3614

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

3615:                                             ; No predecessors!
  br label %3616

3616:                                             ; preds = %3615
  br label %3617

3617:                                             ; preds = %3616, %3552
  br label %3618

3618:                                             ; preds = %3617
  br label %3619

3619:                                             ; preds = %3618
  br label %3620

3620:                                             ; preds = %3619, %3547
  br label %3621

3621:                                             ; preds = %3620
  br label %3622

3622:                                             ; preds = %3621
  %3623 = call i32 @s2n_connection_ptr_free(ptr noundef %120)
  %3624 = getelementptr inbounds %struct.s2n_result, ptr %129, i32 0, i32 0
  store i32 %3623, ptr %3624, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %3625

3625:                                             ; preds = %3622
  %3626 = load i64, ptr %119, align 8, !tbaa !15
  %3627 = add i64 %3626, 1
  store i64 %3627, ptr %119, align 8, !tbaa !15
  br label %3274, !llvm.loop !61

3628:                                             ; preds = %3277
  store i32 0, ptr %14, align 4
  br label %3629

3629:                                             ; preds = %3628, %3270
  %3630 = call i32 @s2n_free(ptr noundef %117)
  call void @llvm.lifetime.end.p0(i64 24, ptr %117) #10
  br label %3631

3631:                                             ; preds = %3629, %3260
  %3632 = call i32 @s2n_free(ptr noundef %115)
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #10
  %3633 = load i32, ptr %14, align 4
  switch i32 %3633, label %4400 [
    i32 0, label %3634
  ]

3634:                                             ; preds = %3631
  call void @llvm.lifetime.start.p0(i64 24, ptr %130) #10
  call void @llvm.memset.p0.i64(ptr align 8 %130, i8 0, i64 24, i1 false)
  br label %3635

3635:                                             ; preds = %3634
  %3636 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %130, ptr noundef @.str.48)
  %3637 = getelementptr inbounds %struct.s2n_result, ptr %131, i32 0, i32 0
  store i32 %3636, ptr %3637, align 4
  %3638 = getelementptr inbounds %struct.s2n_result, ptr %131, i32 0, i32 0
  %3639 = load i32, ptr %3638, align 4
  %3640 = call zeroext i1 @s2n_result_is_ok(i32 %3639)
  br i1 %3640, label %3642, label %3641

3641:                                             ; preds = %3635
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %4015

3642:                                             ; preds = %3635
  br label %3643

3643:                                             ; preds = %3642
  br label %3644

3644:                                             ; preds = %3643
  call void @llvm.lifetime.start.p0(i64 24, ptr %132) #10
  call void @llvm.memset.p0.i64(ptr align 8 %132, i8 0, i64 24, i1 false)
  br label %3645

3645:                                             ; preds = %3644
  %3646 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %132, ptr noundef @.str.49)
  %3647 = getelementptr inbounds %struct.s2n_result, ptr %133, i32 0, i32 0
  store i32 %3646, ptr %3647, align 4
  %3648 = getelementptr inbounds %struct.s2n_result, ptr %133, i32 0, i32 0
  %3649 = load i32, ptr %3648, align 4
  %3650 = call zeroext i1 @s2n_result_is_ok(i32 %3649)
  br i1 %3650, label %3652, label %3651

3651:                                             ; preds = %3645
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %4013

3652:                                             ; preds = %3645
  br label %3653

3653:                                             ; preds = %3652
  br label %3654

3654:                                             ; preds = %3653
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #10
  store i64 0, ptr %134, align 8, !tbaa !15
  br label %3655

3655:                                             ; preds = %4009, %3654
  %3656 = load i64, ptr %134, align 8, !tbaa !15
  %3657 = icmp ult i64 %3656, 2
  br i1 %3657, label %3659, label %3658

3658:                                             ; preds = %3655
  store i32 352, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  br label %4012

3659:                                             ; preds = %3655
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #10
  %3660 = load i64, ptr %134, align 8, !tbaa !15
  %3661 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %3660
  %3662 = load i32, ptr %3661, align 4, !tbaa !5
  %3663 = call ptr @s2n_connection_new(i32 noundef %3662)
  store ptr %3663, ptr %135, align 8, !tbaa !9
  %3664 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %3665 = load ptr, ptr %135, align 8, !tbaa !9
  %3666 = getelementptr inbounds %struct.s2n_connection, ptr %3665, i32 0, i32 27
  %3667 = load ptr, ptr %3666, align 8, !tbaa !17
  %3668 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %3667, i32 0, i32 0
  store ptr %3664, ptr %3668, align 8, !tbaa !43
  br label %3669

3669:                                             ; preds = %3659
  %3670 = load i32, ptr @test_count, align 4, !tbaa !5
  %3671 = add nsw i32 %3670, 1
  store i32 %3671, ptr @test_count, align 4, !tbaa !5
  %3672 = load ptr, ptr %135, align 8, !tbaa !9
  %3673 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %3672, ptr noundef %89)
  %3674 = getelementptr inbounds %struct.s2n_result, ptr %136, i32 0, i32 0
  store i32 %3673, ptr %3674, align 4
  %3675 = getelementptr inbounds %struct.s2n_result, ptr %136, i32 0, i32 0
  %3676 = load i32, ptr %3675, align 4
  %3677 = call zeroext i1 @s2n_result_is_ok(i32 %3676)
  br i1 %3677, label %3731, label %3678

3678:                                             ; preds = %3669
  br label %3679

3679:                                             ; preds = %3678
  br label %3680

3680:                                             ; preds = %3679
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #10
  %3681 = call ptr @__errno_location() #11
  %3682 = load i32, ptr %3681, align 4, !tbaa !5
  store i32 %3682, ptr %137, align 4, !tbaa !5
  %3683 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3684 = call i32 @s2n_print_stacktrace(ptr noundef %3683)
  %3685 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3686 = trunc i8 %3685 to i1
  br i1 %3686, label %3687, label %3709

3687:                                             ; preds = %3680
  %3688 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3689 = call i32 @fileno(ptr noundef %3688) #10
  %3690 = call i32 @isatty(i32 noundef %3689) #10
  %3691 = icmp ne i32 %3690, 0
  br i1 %3691, label %3692, label %3709

3692:                                             ; preds = %3687
  %3693 = load i32, ptr %137, align 4, !tbaa !5
  %3694 = call ptr @__errno_location() #11
  store i32 %3693, ptr %3694, align 4, !tbaa !5
  %3695 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3696 = load i32, ptr @test_count, align 4, !tbaa !5
  %3697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3698 = load i32, ptr %3697, align 4, !tbaa !5
  %3699 = call ptr @s2n_strerror(i32 noundef %3698, ptr noundef @.str.4)
  %3700 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3701 = load i32, ptr %3700, align 4, !tbaa !5
  %3702 = call ptr @s2n_strerror_debug(i32 noundef %3701, ptr noundef @.str.4)
  %3703 = call ptr @__errno_location() #11
  %3704 = load i32, ptr %3703, align 4, !tbaa !5
  %3705 = call ptr @strerror(i32 noundef %3704) #10
  %3706 = call ptr @__errno_location() #11
  %3707 = load i32, ptr %3706, align 4, !tbaa !5
  %3708 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3695, ptr noundef @.str.2, i32 noundef %3696, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 493, ptr noundef %3699, ptr noundef %3702, ptr noundef %3705, i32 noundef %3707) #10
  br label %3726

3709:                                             ; preds = %3687, %3680
  %3710 = load i32, ptr %137, align 4, !tbaa !5
  %3711 = call ptr @__errno_location() #11
  store i32 %3710, ptr %3711, align 4, !tbaa !5
  %3712 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3713 = load i32, ptr @test_count, align 4, !tbaa !5
  %3714 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3715 = load i32, ptr %3714, align 4, !tbaa !5
  %3716 = call ptr @s2n_strerror(i32 noundef %3715, ptr noundef @.str.4)
  %3717 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3718 = load i32, ptr %3717, align 4, !tbaa !5
  %3719 = call ptr @s2n_strerror_debug(i32 noundef %3718, ptr noundef @.str.4)
  %3720 = call ptr @__errno_location() #11
  %3721 = load i32, ptr %3720, align 4, !tbaa !5
  %3722 = call ptr @strerror(i32 noundef %3721) #10
  %3723 = call ptr @__errno_location() #11
  %3724 = load i32, ptr %3723, align 4, !tbaa !5
  %3725 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3712, ptr noundef @.str.5, i32 noundef %3713, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 493, ptr noundef %3716, ptr noundef %3719, ptr noundef %3722, i32 noundef %3724) #10
  br label %3726

3726:                                             ; preds = %3709, %3692
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #10
  br label %3727

3727:                                             ; preds = %3726
  br label %3728

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

3729:                                             ; No predecessors!
  br label %3730

3730:                                             ; preds = %3729
  br label %3731

3731:                                             ; preds = %3730, %3669
  br label %3732

3732:                                             ; preds = %3731
  br label %3733

3733:                                             ; preds = %3732
  br label %3734

3734:                                             ; preds = %3733
  %3735 = load i32, ptr @test_count, align 4, !tbaa !5
  %3736 = add nsw i32 %3735, 1
  store i32 %3736, ptr @test_count, align 4, !tbaa !5
  %3737 = load ptr, ptr %135, align 8, !tbaa !9
  %3738 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %3737, i32 noundef 13, ptr noundef %130)
  %3739 = getelementptr inbounds %struct.s2n_result, ptr %138, i32 0, i32 0
  store i32 %3738, ptr %3739, align 4
  %3740 = getelementptr inbounds %struct.s2n_result, ptr %138, i32 0, i32 0
  %3741 = load i32, ptr %3740, align 4
  %3742 = call zeroext i1 @s2n_result_is_ok(i32 %3741)
  br i1 %3742, label %3796, label %3743

3743:                                             ; preds = %3734
  br label %3744

3744:                                             ; preds = %3743
  br label %3745

3745:                                             ; preds = %3744
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #10
  %3746 = call ptr @__errno_location() #11
  %3747 = load i32, ptr %3746, align 4, !tbaa !5
  store i32 %3747, ptr %139, align 4, !tbaa !5
  %3748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3749 = call i32 @s2n_print_stacktrace(ptr noundef %3748)
  %3750 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3751 = trunc i8 %3750 to i1
  br i1 %3751, label %3752, label %3774

3752:                                             ; preds = %3745
  %3753 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3754 = call i32 @fileno(ptr noundef %3753) #10
  %3755 = call i32 @isatty(i32 noundef %3754) #10
  %3756 = icmp ne i32 %3755, 0
  br i1 %3756, label %3757, label %3774

3757:                                             ; preds = %3752
  %3758 = load i32, ptr %139, align 4, !tbaa !5
  %3759 = call ptr @__errno_location() #11
  store i32 %3758, ptr %3759, align 4, !tbaa !5
  %3760 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3761 = load i32, ptr @test_count, align 4, !tbaa !5
  %3762 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3763 = load i32, ptr %3762, align 4, !tbaa !5
  %3764 = call ptr @s2n_strerror(i32 noundef %3763, ptr noundef @.str.4)
  %3765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3766 = load i32, ptr %3765, align 4, !tbaa !5
  %3767 = call ptr @s2n_strerror_debug(i32 noundef %3766, ptr noundef @.str.4)
  %3768 = call ptr @__errno_location() #11
  %3769 = load i32, ptr %3768, align 4, !tbaa !5
  %3770 = call ptr @strerror(i32 noundef %3769) #10
  %3771 = call ptr @__errno_location() #11
  %3772 = load i32, ptr %3771, align 4, !tbaa !5
  %3773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3760, ptr noundef @.str.2, i32 noundef %3761, ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 494, ptr noundef %3764, ptr noundef %3767, ptr noundef %3770, i32 noundef %3772) #10
  br label %3791

3774:                                             ; preds = %3752, %3745
  %3775 = load i32, ptr %139, align 4, !tbaa !5
  %3776 = call ptr @__errno_location() #11
  store i32 %3775, ptr %3776, align 4, !tbaa !5
  %3777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3778 = load i32, ptr @test_count, align 4, !tbaa !5
  %3779 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3780 = load i32, ptr %3779, align 4, !tbaa !5
  %3781 = call ptr @s2n_strerror(i32 noundef %3780, ptr noundef @.str.4)
  %3782 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3783 = load i32, ptr %3782, align 4, !tbaa !5
  %3784 = call ptr @s2n_strerror_debug(i32 noundef %3783, ptr noundef @.str.4)
  %3785 = call ptr @__errno_location() #11
  %3786 = load i32, ptr %3785, align 4, !tbaa !5
  %3787 = call ptr @strerror(i32 noundef %3786) #10
  %3788 = call ptr @__errno_location() #11
  %3789 = load i32, ptr %3788, align 4, !tbaa !5
  %3790 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3777, ptr noundef @.str.5, i32 noundef %3778, ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 494, ptr noundef %3781, ptr noundef %3784, ptr noundef %3787, i32 noundef %3789) #10
  br label %3791

3791:                                             ; preds = %3774, %3757
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #10
  br label %3792

3792:                                             ; preds = %3791
  br label %3793

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

3794:                                             ; No predecessors!
  br label %3795

3795:                                             ; preds = %3794
  br label %3796

3796:                                             ; preds = %3795, %3734
  br label %3797

3797:                                             ; preds = %3796
  br label %3798

3798:                                             ; preds = %3797
  br label %3799

3799:                                             ; preds = %3798
  %3800 = load i32, ptr @test_count, align 4, !tbaa !5
  %3801 = add nsw i32 %3800, 1
  store i32 %3801, ptr @test_count, align 4, !tbaa !5
  %3802 = load ptr, ptr %135, align 8, !tbaa !9
  %3803 = call i32 @s2n_derive_resumption_master_secret(ptr noundef %3802)
  %3804 = getelementptr inbounds %struct.s2n_result, ptr %140, i32 0, i32 0
  store i32 %3803, ptr %3804, align 4
  %3805 = getelementptr inbounds %struct.s2n_result, ptr %140, i32 0, i32 0
  %3806 = load i32, ptr %3805, align 4
  %3807 = call zeroext i1 @s2n_result_is_ok(i32 %3806)
  br i1 %3807, label %3861, label %3808

3808:                                             ; preds = %3799
  br label %3809

3809:                                             ; preds = %3808
  br label %3810

3810:                                             ; preds = %3809
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #10
  %3811 = call ptr @__errno_location() #11
  %3812 = load i32, ptr %3811, align 4, !tbaa !5
  store i32 %3812, ptr %141, align 4, !tbaa !5
  %3813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3814 = call i32 @s2n_print_stacktrace(ptr noundef %3813)
  %3815 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3816 = trunc i8 %3815 to i1
  br i1 %3816, label %3817, label %3839

3817:                                             ; preds = %3810
  %3818 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3819 = call i32 @fileno(ptr noundef %3818) #10
  %3820 = call i32 @isatty(i32 noundef %3819) #10
  %3821 = icmp ne i32 %3820, 0
  br i1 %3821, label %3822, label %3839

3822:                                             ; preds = %3817
  %3823 = load i32, ptr %141, align 4, !tbaa !5
  %3824 = call ptr @__errno_location() #11
  store i32 %3823, ptr %3824, align 4, !tbaa !5
  %3825 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3826 = load i32, ptr @test_count, align 4, !tbaa !5
  %3827 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3828 = load i32, ptr %3827, align 4, !tbaa !5
  %3829 = call ptr @s2n_strerror(i32 noundef %3828, ptr noundef @.str.4)
  %3830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3831 = load i32, ptr %3830, align 4, !tbaa !5
  %3832 = call ptr @s2n_strerror_debug(i32 noundef %3831, ptr noundef @.str.4)
  %3833 = call ptr @__errno_location() #11
  %3834 = load i32, ptr %3833, align 4, !tbaa !5
  %3835 = call ptr @strerror(i32 noundef %3834) #10
  %3836 = call ptr @__errno_location() #11
  %3837 = load i32, ptr %3836, align 4, !tbaa !5
  %3838 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3825, ptr noundef @.str.2, i32 noundef %3826, ptr noundef @.str.51, ptr noundef @.str.1, i32 noundef 496, ptr noundef %3829, ptr noundef %3832, ptr noundef %3835, i32 noundef %3837) #10
  br label %3856

3839:                                             ; preds = %3817, %3810
  %3840 = load i32, ptr %141, align 4, !tbaa !5
  %3841 = call ptr @__errno_location() #11
  store i32 %3840, ptr %3841, align 4, !tbaa !5
  %3842 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3843 = load i32, ptr @test_count, align 4, !tbaa !5
  %3844 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3845 = load i32, ptr %3844, align 4, !tbaa !5
  %3846 = call ptr @s2n_strerror(i32 noundef %3845, ptr noundef @.str.4)
  %3847 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3848 = load i32, ptr %3847, align 4, !tbaa !5
  %3849 = call ptr @s2n_strerror_debug(i32 noundef %3848, ptr noundef @.str.4)
  %3850 = call ptr @__errno_location() #11
  %3851 = load i32, ptr %3850, align 4, !tbaa !5
  %3852 = call ptr @strerror(i32 noundef %3851) #10
  %3853 = call ptr @__errno_location() #11
  %3854 = load i32, ptr %3853, align 4, !tbaa !5
  %3855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3842, ptr noundef @.str.5, i32 noundef %3843, ptr noundef @.str.51, ptr noundef @.str.1, i32 noundef 496, ptr noundef %3846, ptr noundef %3849, ptr noundef %3852, i32 noundef %3854) #10
  br label %3856

3856:                                             ; preds = %3839, %3822
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #10
  br label %3857

3857:                                             ; preds = %3856
  br label %3858

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

3859:                                             ; No predecessors!
  br label %3860

3860:                                             ; preds = %3859
  br label %3861

3861:                                             ; preds = %3860, %3799
  br label %3862

3862:                                             ; preds = %3861
  br label %3863

3863:                                             ; preds = %3862
  br label %3864

3864:                                             ; preds = %3863
  %3865 = load i32, ptr @test_count, align 4, !tbaa !5
  %3866 = add nsw i32 %3865, 1
  store i32 %3866, ptr @test_count, align 4, !tbaa !5
  %3867 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 1
  %3868 = load i32, ptr %3867, align 8, !tbaa !48
  %3869 = getelementptr inbounds %struct.s2n_blob, ptr %132, i32 0, i32 1
  %3870 = load i32, ptr %3869, align 8, !tbaa !48
  %3871 = icmp eq i32 %3868, %3870
  br i1 %3871, label %3925, label %3872

3872:                                             ; preds = %3864
  br label %3873

3873:                                             ; preds = %3872
  br label %3874

3874:                                             ; preds = %3873
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #10
  %3875 = call ptr @__errno_location() #11
  %3876 = load i32, ptr %3875, align 4, !tbaa !5
  store i32 %3876, ptr %142, align 4, !tbaa !5
  %3877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3878 = call i32 @s2n_print_stacktrace(ptr noundef %3877)
  %3879 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3880 = trunc i8 %3879 to i1
  br i1 %3880, label %3881, label %3903

3881:                                             ; preds = %3874
  %3882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3883 = call i32 @fileno(ptr noundef %3882) #10
  %3884 = call i32 @isatty(i32 noundef %3883) #10
  %3885 = icmp ne i32 %3884, 0
  br i1 %3885, label %3886, label %3903

3886:                                             ; preds = %3881
  %3887 = load i32, ptr %142, align 4, !tbaa !5
  %3888 = call ptr @__errno_location() #11
  store i32 %3887, ptr %3888, align 4, !tbaa !5
  %3889 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3890 = load i32, ptr @test_count, align 4, !tbaa !5
  %3891 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3892 = load i32, ptr %3891, align 4, !tbaa !5
  %3893 = call ptr @s2n_strerror(i32 noundef %3892, ptr noundef @.str.4)
  %3894 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3895 = load i32, ptr %3894, align 4, !tbaa !5
  %3896 = call ptr @s2n_strerror_debug(i32 noundef %3895, ptr noundef @.str.4)
  %3897 = call ptr @__errno_location() #11
  %3898 = load i32, ptr %3897, align 4, !tbaa !5
  %3899 = call ptr @strerror(i32 noundef %3898) #10
  %3900 = call ptr @__errno_location() #11
  %3901 = load i32, ptr %3900, align 4, !tbaa !5
  %3902 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3889, ptr noundef @.str.2, i32 noundef %3890, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 497, ptr noundef %3893, ptr noundef %3896, ptr noundef %3899, i32 noundef %3901) #10
  br label %3920

3903:                                             ; preds = %3881, %3874
  %3904 = load i32, ptr %142, align 4, !tbaa !5
  %3905 = call ptr @__errno_location() #11
  store i32 %3904, ptr %3905, align 4, !tbaa !5
  %3906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3907 = load i32, ptr @test_count, align 4, !tbaa !5
  %3908 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3909 = load i32, ptr %3908, align 4, !tbaa !5
  %3910 = call ptr @s2n_strerror(i32 noundef %3909, ptr noundef @.str.4)
  %3911 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3912 = load i32, ptr %3911, align 4, !tbaa !5
  %3913 = call ptr @s2n_strerror_debug(i32 noundef %3912, ptr noundef @.str.4)
  %3914 = call ptr @__errno_location() #11
  %3915 = load i32, ptr %3914, align 4, !tbaa !5
  %3916 = call ptr @strerror(i32 noundef %3915) #10
  %3917 = call ptr @__errno_location() #11
  %3918 = load i32, ptr %3917, align 4, !tbaa !5
  %3919 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3906, ptr noundef @.str.5, i32 noundef %3907, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 497, ptr noundef %3910, ptr noundef %3913, ptr noundef %3916, i32 noundef %3918) #10
  br label %3920

3920:                                             ; preds = %3903, %3886
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #10
  br label %3921

3921:                                             ; preds = %3920
  br label %3922

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

3923:                                             ; No predecessors!
  br label %3924

3924:                                             ; preds = %3923
  br label %3925

3925:                                             ; preds = %3924, %3864
  br label %3926

3926:                                             ; preds = %3925
  br label %3927

3927:                                             ; preds = %3926
  br label %3928

3928:                                             ; preds = %3927
  %3929 = getelementptr inbounds %struct.s2n_blob, ptr %132, i32 0, i32 1
  %3930 = load i32, ptr %3929, align 8, !tbaa !48
  %3931 = icmp ne i32 %3930, 0
  br i1 %3931, label %3932, label %4004

3932:                                             ; preds = %3928
  br label %3933

3933:                                             ; preds = %3932
  %3934 = load i32, ptr @test_count, align 4, !tbaa !5
  %3935 = add nsw i32 %3934, 1
  store i32 %3935, ptr @test_count, align 4, !tbaa !5
  %3936 = load ptr, ptr %135, align 8, !tbaa !9
  %3937 = getelementptr inbounds %struct.s2n_connection, ptr %3936, i32 0, i32 28
  %3938 = getelementptr inbounds %struct.s2n_secrets, ptr %3937, i32 0, i32 0
  %3939 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3938, i32 0, i32 6
  %3940 = getelementptr inbounds [48 x i8], ptr %3939, i64 0, i64 0
  %3941 = getelementptr inbounds %struct.s2n_blob, ptr %132, i32 0, i32 0
  %3942 = load ptr, ptr %3941, align 8, !tbaa !49
  %3943 = getelementptr inbounds %struct.s2n_blob, ptr %132, i32 0, i32 1
  %3944 = load i32, ptr %3943, align 8, !tbaa !48
  %3945 = zext i32 %3944 to i64
  %3946 = call i32 @memcmp(ptr noundef %3940, ptr noundef %3942, i64 noundef %3945) #13
  %3947 = icmp eq i32 %3946, 0
  br i1 %3947, label %4001, label %3948

3948:                                             ; preds = %3933
  br label %3949

3949:                                             ; preds = %3948
  br label %3950

3950:                                             ; preds = %3949
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #10
  %3951 = call ptr @__errno_location() #11
  %3952 = load i32, ptr %3951, align 4, !tbaa !5
  store i32 %3952, ptr %143, align 4, !tbaa !5
  %3953 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3954 = call i32 @s2n_print_stacktrace(ptr noundef %3953)
  %3955 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3956 = trunc i8 %3955 to i1
  br i1 %3956, label %3957, label %3979

3957:                                             ; preds = %3950
  %3958 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3959 = call i32 @fileno(ptr noundef %3958) #10
  %3960 = call i32 @isatty(i32 noundef %3959) #10
  %3961 = icmp ne i32 %3960, 0
  br i1 %3961, label %3962, label %3979

3962:                                             ; preds = %3957
  %3963 = load i32, ptr %143, align 4, !tbaa !5
  %3964 = call ptr @__errno_location() #11
  store i32 %3963, ptr %3964, align 4, !tbaa !5
  %3965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3966 = load i32, ptr @test_count, align 4, !tbaa !5
  %3967 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3968 = load i32, ptr %3967, align 4, !tbaa !5
  %3969 = call ptr @s2n_strerror(i32 noundef %3968, ptr noundef @.str.4)
  %3970 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3971 = load i32, ptr %3970, align 4, !tbaa !5
  %3972 = call ptr @s2n_strerror_debug(i32 noundef %3971, ptr noundef @.str.4)
  %3973 = call ptr @__errno_location() #11
  %3974 = load i32, ptr %3973, align 4, !tbaa !5
  %3975 = call ptr @strerror(i32 noundef %3974) #10
  %3976 = call ptr @__errno_location() #11
  %3977 = load i32, ptr %3976, align 4, !tbaa !5
  %3978 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3965, ptr noundef @.str.2, i32 noundef %3966, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 499, ptr noundef %3969, ptr noundef %3972, ptr noundef %3975, i32 noundef %3977) #10
  br label %3996

3979:                                             ; preds = %3957, %3950
  %3980 = load i32, ptr %143, align 4, !tbaa !5
  %3981 = call ptr @__errno_location() #11
  store i32 %3980, ptr %3981, align 4, !tbaa !5
  %3982 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3983 = load i32, ptr @test_count, align 4, !tbaa !5
  %3984 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3985 = load i32, ptr %3984, align 4, !tbaa !5
  %3986 = call ptr @s2n_strerror(i32 noundef %3985, ptr noundef @.str.4)
  %3987 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3988 = load i32, ptr %3987, align 4, !tbaa !5
  %3989 = call ptr @s2n_strerror_debug(i32 noundef %3988, ptr noundef @.str.4)
  %3990 = call ptr @__errno_location() #11
  %3991 = load i32, ptr %3990, align 4, !tbaa !5
  %3992 = call ptr @strerror(i32 noundef %3991) #10
  %3993 = call ptr @__errno_location() #11
  %3994 = load i32, ptr %3993, align 4, !tbaa !5
  %3995 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3982, ptr noundef @.str.5, i32 noundef %3983, ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 499, ptr noundef %3986, ptr noundef %3989, ptr noundef %3992, i32 noundef %3994) #10
  br label %3996

3996:                                             ; preds = %3979, %3962
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #10
  br label %3997

3997:                                             ; preds = %3996
  br label %3998

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

3999:                                             ; No predecessors!
  br label %4000

4000:                                             ; preds = %3999
  br label %4001

4001:                                             ; preds = %4000, %3933
  br label %4002

4002:                                             ; preds = %4001
  br label %4003

4003:                                             ; preds = %4002
  br label %4004

4004:                                             ; preds = %4003, %3928
  br label %4005

4005:                                             ; preds = %4004
  br label %4006

4006:                                             ; preds = %4005
  %4007 = call i32 @s2n_connection_ptr_free(ptr noundef %135)
  %4008 = getelementptr inbounds %struct.s2n_result, ptr %144, i32 0, i32 0
  store i32 %4007, ptr %4008, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #10
  br label %4009

4009:                                             ; preds = %4006
  %4010 = load i64, ptr %134, align 8, !tbaa !15
  %4011 = add i64 %4010, 1
  store i64 %4011, ptr %134, align 8, !tbaa !15
  br label %3655, !llvm.loop !62

4012:                                             ; preds = %3658
  store i32 0, ptr %14, align 4
  br label %4013

4013:                                             ; preds = %4012, %3651
  %4014 = call i32 @s2n_free(ptr noundef %132)
  call void @llvm.lifetime.end.p0(i64 24, ptr %132) #10
  br label %4015

4015:                                             ; preds = %4013, %3641
  %4016 = call i32 @s2n_free(ptr noundef %130)
  call void @llvm.lifetime.end.p0(i64 24, ptr %130) #10
  %4017 = load i32, ptr %14, align 4
  switch i32 %4017, label %4400 [
    i32 0, label %4018
  ]

4018:                                             ; preds = %4015
  call void @llvm.lifetime.start.p0(i64 24, ptr %145) #10
  call void @llvm.memset.p0.i64(ptr align 8 %145, i8 0, i64 24, i1 false)
  br label %4019

4019:                                             ; preds = %4018
  %4020 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %145, ptr noundef @.str.53)
  %4021 = getelementptr inbounds %struct.s2n_result, ptr %146, i32 0, i32 0
  store i32 %4020, ptr %4021, align 4
  %4022 = getelementptr inbounds %struct.s2n_result, ptr %146, i32 0, i32 0
  %4023 = load i32, ptr %4022, align 4
  %4024 = call zeroext i1 @s2n_result_is_ok(i32 %4023)
  br i1 %4024, label %4026, label %4025

4025:                                             ; preds = %4019
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %4396

4026:                                             ; preds = %4019
  br label %4027

4027:                                             ; preds = %4026
  br label %4028

4028:                                             ; preds = %4027
  call void @llvm.lifetime.start.p0(i64 24, ptr %147) #10
  call void @llvm.memset.p0.i64(ptr align 8 %147, i8 0, i64 24, i1 false)
  br label %4029

4029:                                             ; preds = %4028
  %4030 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %147, ptr noundef @.str.54)
  %4031 = getelementptr inbounds %struct.s2n_result, ptr %148, i32 0, i32 0
  store i32 %4030, ptr %4031, align 4
  %4032 = getelementptr inbounds %struct.s2n_result, ptr %148, i32 0, i32 0
  %4033 = load i32, ptr %4032, align 4
  %4034 = call zeroext i1 @s2n_result_is_ok(i32 %4033)
  br i1 %4034, label %4036, label %4035

4035:                                             ; preds = %4029
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %4394

4036:                                             ; preds = %4029
  br label %4037

4037:                                             ; preds = %4036
  br label %4038

4038:                                             ; preds = %4037
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #10
  store i64 0, ptr %149, align 8, !tbaa !15
  br label %4039

4039:                                             ; preds = %4390, %4038
  %4040 = load i64, ptr %149, align 8, !tbaa !15
  %4041 = icmp ult i64 %4040, 2
  br i1 %4041, label %4043, label %4042

4042:                                             ; preds = %4039
  store i32 391, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #10
  br label %4393

4043:                                             ; preds = %4039
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #10
  %4044 = load i64, ptr %149, align 8, !tbaa !15
  %4045 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %4044
  %4046 = load i32, ptr %4045, align 4, !tbaa !5
  %4047 = call ptr @s2n_connection_new(i32 noundef %4046)
  store ptr %4047, ptr %150, align 8, !tbaa !9
  %4048 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %4049 = load ptr, ptr %150, align 8, !tbaa !9
  %4050 = getelementptr inbounds %struct.s2n_connection, ptr %4049, i32 0, i32 27
  %4051 = load ptr, ptr %4050, align 8, !tbaa !17
  %4052 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %4051, i32 0, i32 0
  store ptr %4048, ptr %4052, align 8, !tbaa !43
  br label %4053

4053:                                             ; preds = %4043
  %4054 = load i32, ptr @test_count, align 4, !tbaa !5
  %4055 = add nsw i32 %4054, 1
  store i32 %4055, ptr @test_count, align 4, !tbaa !5
  %4056 = load ptr, ptr %150, align 8, !tbaa !9
  %4057 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %4056, ptr noundef %89)
  %4058 = getelementptr inbounds %struct.s2n_result, ptr %151, i32 0, i32 0
  store i32 %4057, ptr %4058, align 4
  %4059 = getelementptr inbounds %struct.s2n_result, ptr %151, i32 0, i32 0
  %4060 = load i32, ptr %4059, align 4
  %4061 = call zeroext i1 @s2n_result_is_ok(i32 %4060)
  br i1 %4061, label %4115, label %4062

4062:                                             ; preds = %4053
  br label %4063

4063:                                             ; preds = %4062
  br label %4064

4064:                                             ; preds = %4063
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #10
  %4065 = call ptr @__errno_location() #11
  %4066 = load i32, ptr %4065, align 4, !tbaa !5
  store i32 %4066, ptr %152, align 4, !tbaa !5
  %4067 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4068 = call i32 @s2n_print_stacktrace(ptr noundef %4067)
  %4069 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4070 = trunc i8 %4069 to i1
  br i1 %4070, label %4071, label %4093

4071:                                             ; preds = %4064
  %4072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4073 = call i32 @fileno(ptr noundef %4072) #10
  %4074 = call i32 @isatty(i32 noundef %4073) #10
  %4075 = icmp ne i32 %4074, 0
  br i1 %4075, label %4076, label %4093

4076:                                             ; preds = %4071
  %4077 = load i32, ptr %152, align 4, !tbaa !5
  %4078 = call ptr @__errno_location() #11
  store i32 %4077, ptr %4078, align 4, !tbaa !5
  %4079 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4080 = load i32, ptr @test_count, align 4, !tbaa !5
  %4081 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4082 = load i32, ptr %4081, align 4, !tbaa !5
  %4083 = call ptr @s2n_strerror(i32 noundef %4082, ptr noundef @.str.4)
  %4084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4085 = load i32, ptr %4084, align 4, !tbaa !5
  %4086 = call ptr @s2n_strerror_debug(i32 noundef %4085, ptr noundef @.str.4)
  %4087 = call ptr @__errno_location() #11
  %4088 = load i32, ptr %4087, align 4, !tbaa !5
  %4089 = call ptr @strerror(i32 noundef %4088) #10
  %4090 = call ptr @__errno_location() #11
  %4091 = load i32, ptr %4090, align 4, !tbaa !5
  %4092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4079, ptr noundef @.str.2, i32 noundef %4080, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 538, ptr noundef %4083, ptr noundef %4086, ptr noundef %4089, i32 noundef %4091) #10
  br label %4110

4093:                                             ; preds = %4071, %4064
  %4094 = load i32, ptr %152, align 4, !tbaa !5
  %4095 = call ptr @__errno_location() #11
  store i32 %4094, ptr %4095, align 4, !tbaa !5
  %4096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4097 = load i32, ptr @test_count, align 4, !tbaa !5
  %4098 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4099 = load i32, ptr %4098, align 4, !tbaa !5
  %4100 = call ptr @s2n_strerror(i32 noundef %4099, ptr noundef @.str.4)
  %4101 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4102 = load i32, ptr %4101, align 4, !tbaa !5
  %4103 = call ptr @s2n_strerror_debug(i32 noundef %4102, ptr noundef @.str.4)
  %4104 = call ptr @__errno_location() #11
  %4105 = load i32, ptr %4104, align 4, !tbaa !5
  %4106 = call ptr @strerror(i32 noundef %4105) #10
  %4107 = call ptr @__errno_location() #11
  %4108 = load i32, ptr %4107, align 4, !tbaa !5
  %4109 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4096, ptr noundef @.str.5, i32 noundef %4097, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 538, ptr noundef %4100, ptr noundef %4103, ptr noundef %4106, i32 noundef %4108) #10
  br label %4110

4110:                                             ; preds = %4093, %4076
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #10
  br label %4111

4111:                                             ; preds = %4110
  br label %4112

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

4113:                                             ; No predecessors!
  br label %4114

4114:                                             ; preds = %4113
  br label %4115

4115:                                             ; preds = %4114, %4053
  br label %4116

4116:                                             ; preds = %4115
  br label %4117

4117:                                             ; preds = %4116
  br label %4118

4118:                                             ; preds = %4117
  %4119 = load i32, ptr @test_count, align 4, !tbaa !5
  %4120 = add nsw i32 %4119, 1
  store i32 %4120, ptr @test_count, align 4, !tbaa !5
  %4121 = load ptr, ptr %150, align 8, !tbaa !9
  %4122 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %4121, i32 noundef 15, ptr noundef %145)
  %4123 = getelementptr inbounds %struct.s2n_result, ptr %153, i32 0, i32 0
  store i32 %4122, ptr %4123, align 4
  %4124 = getelementptr inbounds %struct.s2n_result, ptr %153, i32 0, i32 0
  %4125 = load i32, ptr %4124, align 4
  %4126 = call zeroext i1 @s2n_result_is_ok(i32 %4125)
  br i1 %4126, label %4180, label %4127

4127:                                             ; preds = %4118
  br label %4128

4128:                                             ; preds = %4127
  br label %4129

4129:                                             ; preds = %4128
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #10
  %4130 = call ptr @__errno_location() #11
  %4131 = load i32, ptr %4130, align 4, !tbaa !5
  store i32 %4131, ptr %154, align 4, !tbaa !5
  %4132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4133 = call i32 @s2n_print_stacktrace(ptr noundef %4132)
  %4134 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4135 = trunc i8 %4134 to i1
  br i1 %4135, label %4136, label %4158

4136:                                             ; preds = %4129
  %4137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4138 = call i32 @fileno(ptr noundef %4137) #10
  %4139 = call i32 @isatty(i32 noundef %4138) #10
  %4140 = icmp ne i32 %4139, 0
  br i1 %4140, label %4141, label %4158

4141:                                             ; preds = %4136
  %4142 = load i32, ptr %154, align 4, !tbaa !5
  %4143 = call ptr @__errno_location() #11
  store i32 %4142, ptr %4143, align 4, !tbaa !5
  %4144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4145 = load i32, ptr @test_count, align 4, !tbaa !5
  %4146 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4147 = load i32, ptr %4146, align 4, !tbaa !5
  %4148 = call ptr @s2n_strerror(i32 noundef %4147, ptr noundef @.str.4)
  %4149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4150 = load i32, ptr %4149, align 4, !tbaa !5
  %4151 = call ptr @s2n_strerror_debug(i32 noundef %4150, ptr noundef @.str.4)
  %4152 = call ptr @__errno_location() #11
  %4153 = load i32, ptr %4152, align 4, !tbaa !5
  %4154 = call ptr @strerror(i32 noundef %4153) #10
  %4155 = call ptr @__errno_location() #11
  %4156 = load i32, ptr %4155, align 4, !tbaa !5
  %4157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4144, ptr noundef @.str.2, i32 noundef %4145, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 539, ptr noundef %4148, ptr noundef %4151, ptr noundef %4154, i32 noundef %4156) #10
  br label %4175

4158:                                             ; preds = %4136, %4129
  %4159 = load i32, ptr %154, align 4, !tbaa !5
  %4160 = call ptr @__errno_location() #11
  store i32 %4159, ptr %4160, align 4, !tbaa !5
  %4161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4162 = load i32, ptr @test_count, align 4, !tbaa !5
  %4163 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4164 = load i32, ptr %4163, align 4, !tbaa !5
  %4165 = call ptr @s2n_strerror(i32 noundef %4164, ptr noundef @.str.4)
  %4166 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4167 = load i32, ptr %4166, align 4, !tbaa !5
  %4168 = call ptr @s2n_strerror_debug(i32 noundef %4167, ptr noundef @.str.4)
  %4169 = call ptr @__errno_location() #11
  %4170 = load i32, ptr %4169, align 4, !tbaa !5
  %4171 = call ptr @strerror(i32 noundef %4170) #10
  %4172 = call ptr @__errno_location() #11
  %4173 = load i32, ptr %4172, align 4, !tbaa !5
  %4174 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4161, ptr noundef @.str.5, i32 noundef %4162, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 539, ptr noundef %4165, ptr noundef %4168, ptr noundef %4171, i32 noundef %4173) #10
  br label %4175

4175:                                             ; preds = %4158, %4141
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #10
  br label %4176

4176:                                             ; preds = %4175
  br label %4177

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

4178:                                             ; No predecessors!
  br label %4179

4179:                                             ; preds = %4178
  br label %4180

4180:                                             ; preds = %4179, %4118
  br label %4181

4181:                                             ; preds = %4180
  br label %4182

4182:                                             ; preds = %4181
  br label %4183

4183:                                             ; preds = %4182
  %4184 = load i32, ptr @test_count, align 4, !tbaa !5
  %4185 = add nsw i32 %4184, 1
  store i32 %4185, ptr @test_count, align 4, !tbaa !5
  %4186 = load ptr, ptr %150, align 8, !tbaa !9
  %4187 = call i32 @s2n_derive_exporter_master_secret(ptr noundef %4186, ptr noundef %9)
  %4188 = getelementptr inbounds %struct.s2n_result, ptr %155, i32 0, i32 0
  store i32 %4187, ptr %4188, align 4
  %4189 = getelementptr inbounds %struct.s2n_result, ptr %155, i32 0, i32 0
  %4190 = load i32, ptr %4189, align 4
  %4191 = call zeroext i1 @s2n_result_is_ok(i32 %4190)
  br i1 %4191, label %4245, label %4192

4192:                                             ; preds = %4183
  br label %4193

4193:                                             ; preds = %4192
  br label %4194

4194:                                             ; preds = %4193
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #10
  %4195 = call ptr @__errno_location() #11
  %4196 = load i32, ptr %4195, align 4, !tbaa !5
  store i32 %4196, ptr %156, align 4, !tbaa !5
  %4197 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4198 = call i32 @s2n_print_stacktrace(ptr noundef %4197)
  %4199 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4200 = trunc i8 %4199 to i1
  br i1 %4200, label %4201, label %4223

4201:                                             ; preds = %4194
  %4202 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4203 = call i32 @fileno(ptr noundef %4202) #10
  %4204 = call i32 @isatty(i32 noundef %4203) #10
  %4205 = icmp ne i32 %4204, 0
  br i1 %4205, label %4206, label %4223

4206:                                             ; preds = %4201
  %4207 = load i32, ptr %156, align 4, !tbaa !5
  %4208 = call ptr @__errno_location() #11
  store i32 %4207, ptr %4208, align 4, !tbaa !5
  %4209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4210 = load i32, ptr @test_count, align 4, !tbaa !5
  %4211 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4212 = load i32, ptr %4211, align 4, !tbaa !5
  %4213 = call ptr @s2n_strerror(i32 noundef %4212, ptr noundef @.str.4)
  %4214 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4215 = load i32, ptr %4214, align 4, !tbaa !5
  %4216 = call ptr @s2n_strerror_debug(i32 noundef %4215, ptr noundef @.str.4)
  %4217 = call ptr @__errno_location() #11
  %4218 = load i32, ptr %4217, align 4, !tbaa !5
  %4219 = call ptr @strerror(i32 noundef %4218) #10
  %4220 = call ptr @__errno_location() #11
  %4221 = load i32, ptr %4220, align 4, !tbaa !5
  %4222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4209, ptr noundef @.str.2, i32 noundef %4210, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 541, ptr noundef %4213, ptr noundef %4216, ptr noundef %4219, i32 noundef %4221) #10
  br label %4240

4223:                                             ; preds = %4201, %4194
  %4224 = load i32, ptr %156, align 4, !tbaa !5
  %4225 = call ptr @__errno_location() #11
  store i32 %4224, ptr %4225, align 4, !tbaa !5
  %4226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4227 = load i32, ptr @test_count, align 4, !tbaa !5
  %4228 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4229 = load i32, ptr %4228, align 4, !tbaa !5
  %4230 = call ptr @s2n_strerror(i32 noundef %4229, ptr noundef @.str.4)
  %4231 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4232 = load i32, ptr %4231, align 4, !tbaa !5
  %4233 = call ptr @s2n_strerror_debug(i32 noundef %4232, ptr noundef @.str.4)
  %4234 = call ptr @__errno_location() #11
  %4235 = load i32, ptr %4234, align 4, !tbaa !5
  %4236 = call ptr @strerror(i32 noundef %4235) #10
  %4237 = call ptr @__errno_location() #11
  %4238 = load i32, ptr %4237, align 4, !tbaa !5
  %4239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4226, ptr noundef @.str.5, i32 noundef %4227, ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 541, ptr noundef %4230, ptr noundef %4233, ptr noundef %4236, i32 noundef %4238) #10
  br label %4240

4240:                                             ; preds = %4223, %4206
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #10
  br label %4241

4241:                                             ; preds = %4240
  br label %4242

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

4243:                                             ; No predecessors!
  br label %4244

4244:                                             ; preds = %4243
  br label %4245

4245:                                             ; preds = %4244, %4183
  br label %4246

4246:                                             ; preds = %4245
  br label %4247

4247:                                             ; preds = %4246
  br label %4248

4248:                                             ; preds = %4247
  %4249 = load i32, ptr @test_count, align 4, !tbaa !5
  %4250 = add nsw i32 %4249, 1
  store i32 %4250, ptr @test_count, align 4, !tbaa !5
  %4251 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 1
  %4252 = load i32, ptr %4251, align 8, !tbaa !48
  %4253 = getelementptr inbounds %struct.s2n_blob, ptr %147, i32 0, i32 1
  %4254 = load i32, ptr %4253, align 8, !tbaa !48
  %4255 = icmp eq i32 %4252, %4254
  br i1 %4255, label %4309, label %4256

4256:                                             ; preds = %4248
  br label %4257

4257:                                             ; preds = %4256
  br label %4258

4258:                                             ; preds = %4257
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #10
  %4259 = call ptr @__errno_location() #11
  %4260 = load i32, ptr %4259, align 4, !tbaa !5
  store i32 %4260, ptr %157, align 4, !tbaa !5
  %4261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4262 = call i32 @s2n_print_stacktrace(ptr noundef %4261)
  %4263 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4264 = trunc i8 %4263 to i1
  br i1 %4264, label %4265, label %4287

4265:                                             ; preds = %4258
  %4266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4267 = call i32 @fileno(ptr noundef %4266) #10
  %4268 = call i32 @isatty(i32 noundef %4267) #10
  %4269 = icmp ne i32 %4268, 0
  br i1 %4269, label %4270, label %4287

4270:                                             ; preds = %4265
  %4271 = load i32, ptr %157, align 4, !tbaa !5
  %4272 = call ptr @__errno_location() #11
  store i32 %4271, ptr %4272, align 4, !tbaa !5
  %4273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4274 = load i32, ptr @test_count, align 4, !tbaa !5
  %4275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4276 = load i32, ptr %4275, align 4, !tbaa !5
  %4277 = call ptr @s2n_strerror(i32 noundef %4276, ptr noundef @.str.4)
  %4278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4279 = load i32, ptr %4278, align 4, !tbaa !5
  %4280 = call ptr @s2n_strerror_debug(i32 noundef %4279, ptr noundef @.str.4)
  %4281 = call ptr @__errno_location() #11
  %4282 = load i32, ptr %4281, align 4, !tbaa !5
  %4283 = call ptr @strerror(i32 noundef %4282) #10
  %4284 = call ptr @__errno_location() #11
  %4285 = load i32, ptr %4284, align 4, !tbaa !5
  %4286 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4273, ptr noundef @.str.2, i32 noundef %4274, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 542, ptr noundef %4277, ptr noundef %4280, ptr noundef %4283, i32 noundef %4285) #10
  br label %4304

4287:                                             ; preds = %4265, %4258
  %4288 = load i32, ptr %157, align 4, !tbaa !5
  %4289 = call ptr @__errno_location() #11
  store i32 %4288, ptr %4289, align 4, !tbaa !5
  %4290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4291 = load i32, ptr @test_count, align 4, !tbaa !5
  %4292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4293 = load i32, ptr %4292, align 4, !tbaa !5
  %4294 = call ptr @s2n_strerror(i32 noundef %4293, ptr noundef @.str.4)
  %4295 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4296 = load i32, ptr %4295, align 4, !tbaa !5
  %4297 = call ptr @s2n_strerror_debug(i32 noundef %4296, ptr noundef @.str.4)
  %4298 = call ptr @__errno_location() #11
  %4299 = load i32, ptr %4298, align 4, !tbaa !5
  %4300 = call ptr @strerror(i32 noundef %4299) #10
  %4301 = call ptr @__errno_location() #11
  %4302 = load i32, ptr %4301, align 4, !tbaa !5
  %4303 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4290, ptr noundef @.str.5, i32 noundef %4291, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 542, ptr noundef %4294, ptr noundef %4297, ptr noundef %4300, i32 noundef %4302) #10
  br label %4304

4304:                                             ; preds = %4287, %4270
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #10
  br label %4305

4305:                                             ; preds = %4304
  br label %4306

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

4307:                                             ; No predecessors!
  br label %4308

4308:                                             ; preds = %4307
  br label %4309

4309:                                             ; preds = %4308, %4248
  br label %4310

4310:                                             ; preds = %4309
  br label %4311

4311:                                             ; preds = %4310
  br label %4312

4312:                                             ; preds = %4311
  %4313 = getelementptr inbounds %struct.s2n_blob, ptr %147, i32 0, i32 1
  %4314 = load i32, ptr %4313, align 8, !tbaa !48
  %4315 = icmp ne i32 %4314, 0
  br i1 %4315, label %4316, label %4385

4316:                                             ; preds = %4312
  br label %4317

4317:                                             ; preds = %4316
  %4318 = load i32, ptr @test_count, align 4, !tbaa !5
  %4319 = add nsw i32 %4318, 1
  store i32 %4319, ptr @test_count, align 4, !tbaa !5
  %4320 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 0
  %4321 = load ptr, ptr %4320, align 8, !tbaa !49
  %4322 = getelementptr inbounds %struct.s2n_blob, ptr %147, i32 0, i32 0
  %4323 = load ptr, ptr %4322, align 8, !tbaa !49
  %4324 = getelementptr inbounds %struct.s2n_blob, ptr %147, i32 0, i32 1
  %4325 = load i32, ptr %4324, align 8, !tbaa !48
  %4326 = zext i32 %4325 to i64
  %4327 = call i32 @memcmp(ptr noundef %4321, ptr noundef %4323, i64 noundef %4326) #13
  %4328 = icmp eq i32 %4327, 0
  br i1 %4328, label %4382, label %4329

4329:                                             ; preds = %4317
  br label %4330

4330:                                             ; preds = %4329
  br label %4331

4331:                                             ; preds = %4330
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #10
  %4332 = call ptr @__errno_location() #11
  %4333 = load i32, ptr %4332, align 4, !tbaa !5
  store i32 %4333, ptr %158, align 4, !tbaa !5
  %4334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4335 = call i32 @s2n_print_stacktrace(ptr noundef %4334)
  %4336 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4337 = trunc i8 %4336 to i1
  br i1 %4337, label %4338, label %4360

4338:                                             ; preds = %4331
  %4339 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4340 = call i32 @fileno(ptr noundef %4339) #10
  %4341 = call i32 @isatty(i32 noundef %4340) #10
  %4342 = icmp ne i32 %4341, 0
  br i1 %4342, label %4343, label %4360

4343:                                             ; preds = %4338
  %4344 = load i32, ptr %158, align 4, !tbaa !5
  %4345 = call ptr @__errno_location() #11
  store i32 %4344, ptr %4345, align 4, !tbaa !5
  %4346 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4347 = load i32, ptr @test_count, align 4, !tbaa !5
  %4348 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4349 = load i32, ptr %4348, align 4, !tbaa !5
  %4350 = call ptr @s2n_strerror(i32 noundef %4349, ptr noundef @.str.4)
  %4351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4352 = load i32, ptr %4351, align 4, !tbaa !5
  %4353 = call ptr @s2n_strerror_debug(i32 noundef %4352, ptr noundef @.str.4)
  %4354 = call ptr @__errno_location() #11
  %4355 = load i32, ptr %4354, align 4, !tbaa !5
  %4356 = call ptr @strerror(i32 noundef %4355) #10
  %4357 = call ptr @__errno_location() #11
  %4358 = load i32, ptr %4357, align 4, !tbaa !5
  %4359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4346, ptr noundef @.str.2, i32 noundef %4347, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 543, ptr noundef %4350, ptr noundef %4353, ptr noundef %4356, i32 noundef %4358) #10
  br label %4377

4360:                                             ; preds = %4338, %4331
  %4361 = load i32, ptr %158, align 4, !tbaa !5
  %4362 = call ptr @__errno_location() #11
  store i32 %4361, ptr %4362, align 4, !tbaa !5
  %4363 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4364 = load i32, ptr @test_count, align 4, !tbaa !5
  %4365 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4366 = load i32, ptr %4365, align 4, !tbaa !5
  %4367 = call ptr @s2n_strerror(i32 noundef %4366, ptr noundef @.str.4)
  %4368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4369 = load i32, ptr %4368, align 4, !tbaa !5
  %4370 = call ptr @s2n_strerror_debug(i32 noundef %4369, ptr noundef @.str.4)
  %4371 = call ptr @__errno_location() #11
  %4372 = load i32, ptr %4371, align 4, !tbaa !5
  %4373 = call ptr @strerror(i32 noundef %4372) #10
  %4374 = call ptr @__errno_location() #11
  %4375 = load i32, ptr %4374, align 4, !tbaa !5
  %4376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4363, ptr noundef @.str.5, i32 noundef %4364, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 543, ptr noundef %4367, ptr noundef %4370, ptr noundef %4373, i32 noundef %4375) #10
  br label %4377

4377:                                             ; preds = %4360, %4343
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #10
  br label %4378

4378:                                             ; preds = %4377
  br label %4379

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

4380:                                             ; No predecessors!
  br label %4381

4381:                                             ; preds = %4380
  br label %4382

4382:                                             ; preds = %4381, %4317
  br label %4383

4383:                                             ; preds = %4382
  br label %4384

4384:                                             ; preds = %4383
  br label %4385

4385:                                             ; preds = %4384, %4312
  br label %4386

4386:                                             ; preds = %4385
  br label %4387

4387:                                             ; preds = %4386
  %4388 = call i32 @s2n_connection_ptr_free(ptr noundef %150)
  %4389 = getelementptr inbounds %struct.s2n_result, ptr %159, i32 0, i32 0
  store i32 %4388, ptr %4389, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #10
  br label %4390

4390:                                             ; preds = %4387
  %4391 = load i64, ptr %149, align 8, !tbaa !15
  %4392 = add i64 %4391, 1
  store i64 %4392, ptr %149, align 8, !tbaa !15
  br label %4039, !llvm.loop !63

4393:                                             ; preds = %4042
  store i32 0, ptr %14, align 4
  br label %4394

4394:                                             ; preds = %4393, %4035
  %4395 = call i32 @s2n_free(ptr noundef %147)
  call void @llvm.lifetime.end.p0(i64 24, ptr %147) #10
  br label %4396

4396:                                             ; preds = %4394, %4025
  %4397 = call i32 @s2n_free(ptr noundef %145)
  call void @llvm.lifetime.end.p0(i64 24, ptr %145) #10
  %4398 = load i32, ptr %14, align 4
  switch i32 %4398, label %4400 [
    i32 0, label %4399
  ]

4399:                                             ; preds = %4396
  store i32 0, ptr %14, align 4
  br label %4400

4400:                                             ; preds = %4399, %4396, %4015, %3631, %3250, %2576
  %4401 = call i32 @s2n_free(ptr noundef %89)
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #10
  br label %4402

4402:                                             ; preds = %4400, %2566, %2095, %1624, %692
  %4403 = call i32 @s2n_free(ptr noundef %22)
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  br label %4404

4404:                                             ; preds = %4402, %454
  %4405 = call i32 @s2n_free(ptr noundef %12)
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #10
  %4406 = load i32, ptr %14, align 4
  switch i32 %4406, label %5991 [
    i32 0, label %4407
  ]

4407:                                             ; preds = %4404
  call void @llvm.lifetime.start.p0(i64 24, ptr %160) #10
  call void @llvm.memset.p0.i64(ptr align 8 %160, i8 0, i64 24, i1 false)
  br label %4408

4408:                                             ; preds = %4407
  %4409 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %160, ptr noundef @.str.56)
  %4410 = getelementptr inbounds %struct.s2n_result, ptr %161, i32 0, i32 0
  store i32 %4409, ptr %4410, align 4
  %4411 = getelementptr inbounds %struct.s2n_result, ptr %161, i32 0, i32 0
  %4412 = load i32, ptr %4411, align 4
  %4413 = call zeroext i1 @s2n_result_is_ok(i32 %4412)
  br i1 %4413, label %4415, label %4414

4414:                                             ; preds = %4408
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %5833

4415:                                             ; preds = %4408
  br label %4416

4416:                                             ; preds = %4415
  br label %4417

4417:                                             ; preds = %4416
  call void @llvm.lifetime.start.p0(i64 24, ptr %162) #10
  call void @llvm.memset.p0.i64(ptr align 8 %162, i8 0, i64 24, i1 false)
  br label %4418

4418:                                             ; preds = %4417
  %4419 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %162, ptr noundef @.str.57)
  %4420 = getelementptr inbounds %struct.s2n_result, ptr %163, i32 0, i32 0
  store i32 %4419, ptr %4420, align 4
  %4421 = getelementptr inbounds %struct.s2n_result, ptr %163, i32 0, i32 0
  %4422 = load i32, ptr %4421, align 4
  %4423 = call zeroext i1 @s2n_result_is_ok(i32 %4422)
  br i1 %4423, label %4425, label %4424

4424:                                             ; preds = %4418
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %5831

4425:                                             ; preds = %4418
  br label %4426

4426:                                             ; preds = %4425
  br label %4427

4427:                                             ; preds = %4426
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #10
  store i64 0, ptr %164, align 8, !tbaa !15
  br label %4428

4428:                                             ; preds = %4996, %4427
  %4429 = load i64, ptr %164, align 8, !tbaa !15
  %4430 = icmp ult i64 %4429, 2
  br i1 %4430, label %4432, label %4431

4431:                                             ; preds = %4428
  store i32 430, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #10
  br label %4999

4432:                                             ; preds = %4428
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #10
  %4433 = load i64, ptr %164, align 8, !tbaa !15
  %4434 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %4433
  %4435 = load i32, ptr %4434, align 4, !tbaa !5
  %4436 = call ptr @s2n_connection_new(i32 noundef %4435)
  store ptr %4436, ptr %165, align 8, !tbaa !9
  %4437 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %4438 = load ptr, ptr %165, align 8, !tbaa !9
  %4439 = getelementptr inbounds %struct.s2n_connection, ptr %4438, i32 0, i32 27
  %4440 = load ptr, ptr %4439, align 8, !tbaa !17
  %4441 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %4440, i32 0, i32 0
  store ptr %4437, ptr %4441, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #10
  %4442 = load ptr, ptr %165, align 8, !tbaa !9
  %4443 = call ptr @s2n_test_psk_new(ptr noundef %4442)
  store ptr %4443, ptr %166, align 8, !tbaa !9
  br label %4444

4444:                                             ; preds = %4432
  %4445 = load i32, ptr @test_count, align 4, !tbaa !5
  %4446 = add nsw i32 %4445, 1
  store i32 %4446, ptr @test_count, align 4, !tbaa !5
  %4447 = load ptr, ptr %166, align 8, !tbaa !9
  %4448 = icmp eq ptr %4447, null
  br i1 %4448, label %4449, label %4502

4449:                                             ; preds = %4444
  br label %4450

4450:                                             ; preds = %4449
  br label %4451

4451:                                             ; preds = %4450
  call void @llvm.lifetime.start.p0(i64 4, ptr %167) #10
  %4452 = call ptr @__errno_location() #11
  %4453 = load i32, ptr %4452, align 4, !tbaa !5
  store i32 %4453, ptr %167, align 4, !tbaa !5
  %4454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4455 = call i32 @s2n_print_stacktrace(ptr noundef %4454)
  %4456 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4457 = trunc i8 %4456 to i1
  br i1 %4457, label %4458, label %4480

4458:                                             ; preds = %4451
  %4459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4460 = call i32 @fileno(ptr noundef %4459) #10
  %4461 = call i32 @isatty(i32 noundef %4460) #10
  %4462 = icmp ne i32 %4461, 0
  br i1 %4462, label %4463, label %4480

4463:                                             ; preds = %4458
  %4464 = load i32, ptr %167, align 4, !tbaa !5
  %4465 = call ptr @__errno_location() #11
  store i32 %4464, ptr %4465, align 4, !tbaa !5
  %4466 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4467 = load i32, ptr @test_count, align 4, !tbaa !5
  %4468 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4469 = load i32, ptr %4468, align 4, !tbaa !5
  %4470 = call ptr @s2n_strerror(i32 noundef %4469, ptr noundef @.str.4)
  %4471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4472 = load i32, ptr %4471, align 4, !tbaa !5
  %4473 = call ptr @s2n_strerror_debug(i32 noundef %4472, ptr noundef @.str.4)
  %4474 = call ptr @__errno_location() #11
  %4475 = load i32, ptr %4474, align 4, !tbaa !5
  %4476 = call ptr @strerror(i32 noundef %4475) #10
  %4477 = call ptr @__errno_location() #11
  %4478 = load i32, ptr %4477, align 4, !tbaa !5
  %4479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4466, ptr noundef @.str.2, i32 noundef %4467, ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 579, ptr noundef %4470, ptr noundef %4473, ptr noundef %4476, i32 noundef %4478) #10
  br label %4497

4480:                                             ; preds = %4458, %4451
  %4481 = load i32, ptr %167, align 4, !tbaa !5
  %4482 = call ptr @__errno_location() #11
  store i32 %4481, ptr %4482, align 4, !tbaa !5
  %4483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4484 = load i32, ptr @test_count, align 4, !tbaa !5
  %4485 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4486 = load i32, ptr %4485, align 4, !tbaa !5
  %4487 = call ptr @s2n_strerror(i32 noundef %4486, ptr noundef @.str.4)
  %4488 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4489 = load i32, ptr %4488, align 4, !tbaa !5
  %4490 = call ptr @s2n_strerror_debug(i32 noundef %4489, ptr noundef @.str.4)
  %4491 = call ptr @__errno_location() #11
  %4492 = load i32, ptr %4491, align 4, !tbaa !5
  %4493 = call ptr @strerror(i32 noundef %4492) #10
  %4494 = call ptr @__errno_location() #11
  %4495 = load i32, ptr %4494, align 4, !tbaa !5
  %4496 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4483, ptr noundef @.str.5, i32 noundef %4484, ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 579, ptr noundef %4487, ptr noundef %4490, ptr noundef %4493, i32 noundef %4495) #10
  br label %4497

4497:                                             ; preds = %4480, %4463
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #10
  br label %4498

4498:                                             ; preds = %4497
  br label %4499

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

4500:                                             ; No predecessors!
  br label %4501

4501:                                             ; preds = %4500
  br label %4502

4502:                                             ; preds = %4501, %4444
  br label %4503

4503:                                             ; preds = %4502
  br label %4504

4504:                                             ; preds = %4503
  br label %4505

4505:                                             ; preds = %4504
  %4506 = load i32, ptr @test_count, align 4, !tbaa !5
  %4507 = add nsw i32 %4506, 1
  store i32 %4507, ptr @test_count, align 4, !tbaa !5
  %4508 = load ptr, ptr %166, align 8, !tbaa !9
  %4509 = getelementptr inbounds %struct.s2n_blob, ptr %160, i32 0, i32 0
  %4510 = load ptr, ptr %4509, align 8, !tbaa !49
  %4511 = getelementptr inbounds %struct.s2n_blob, ptr %160, i32 0, i32 1
  %4512 = load i32, ptr %4511, align 8, !tbaa !48
  %4513 = trunc i32 %4512 to i16
  %4514 = call i32 @s2n_psk_set_secret(ptr noundef %4508, ptr noundef %4510, i16 noundef zeroext %4513)
  %4515 = icmp eq i32 %4514, -1
  br i1 %4515, label %4516, label %4569

4516:                                             ; preds = %4505
  br label %4517

4517:                                             ; preds = %4516
  br label %4518

4518:                                             ; preds = %4517
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #10
  %4519 = call ptr @__errno_location() #11
  %4520 = load i32, ptr %4519, align 4, !tbaa !5
  store i32 %4520, ptr %168, align 4, !tbaa !5
  %4521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4522 = call i32 @s2n_print_stacktrace(ptr noundef %4521)
  %4523 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4524 = trunc i8 %4523 to i1
  br i1 %4524, label %4525, label %4547

4525:                                             ; preds = %4518
  %4526 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4527 = call i32 @fileno(ptr noundef %4526) #10
  %4528 = call i32 @isatty(i32 noundef %4527) #10
  %4529 = icmp ne i32 %4528, 0
  br i1 %4529, label %4530, label %4547

4530:                                             ; preds = %4525
  %4531 = load i32, ptr %168, align 4, !tbaa !5
  %4532 = call ptr @__errno_location() #11
  store i32 %4531, ptr %4532, align 4, !tbaa !5
  %4533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4534 = load i32, ptr @test_count, align 4, !tbaa !5
  %4535 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4536 = load i32, ptr %4535, align 4, !tbaa !5
  %4537 = call ptr @s2n_strerror(i32 noundef %4536, ptr noundef @.str.4)
  %4538 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4539 = load i32, ptr %4538, align 4, !tbaa !5
  %4540 = call ptr @s2n_strerror_debug(i32 noundef %4539, ptr noundef @.str.4)
  %4541 = call ptr @__errno_location() #11
  %4542 = load i32, ptr %4541, align 4, !tbaa !5
  %4543 = call ptr @strerror(i32 noundef %4542) #10
  %4544 = call ptr @__errno_location() #11
  %4545 = load i32, ptr %4544, align 4, !tbaa !5
  %4546 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4533, ptr noundef @.str.2, i32 noundef %4534, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 580, ptr noundef %4537, ptr noundef %4540, ptr noundef %4543, i32 noundef %4545) #10
  br label %4564

4547:                                             ; preds = %4525, %4518
  %4548 = load i32, ptr %168, align 4, !tbaa !5
  %4549 = call ptr @__errno_location() #11
  store i32 %4548, ptr %4549, align 4, !tbaa !5
  %4550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4551 = load i32, ptr @test_count, align 4, !tbaa !5
  %4552 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4553 = load i32, ptr %4552, align 4, !tbaa !5
  %4554 = call ptr @s2n_strerror(i32 noundef %4553, ptr noundef @.str.4)
  %4555 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4556 = load i32, ptr %4555, align 4, !tbaa !5
  %4557 = call ptr @s2n_strerror_debug(i32 noundef %4556, ptr noundef @.str.4)
  %4558 = call ptr @__errno_location() #11
  %4559 = load i32, ptr %4558, align 4, !tbaa !5
  %4560 = call ptr @strerror(i32 noundef %4559) #10
  %4561 = call ptr @__errno_location() #11
  %4562 = load i32, ptr %4561, align 4, !tbaa !5
  %4563 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4550, ptr noundef @.str.5, i32 noundef %4551, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 580, ptr noundef %4554, ptr noundef %4557, ptr noundef %4560, i32 noundef %4562) #10
  br label %4564

4564:                                             ; preds = %4547, %4530
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #10
  br label %4565

4565:                                             ; preds = %4564
  br label %4566

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

4567:                                             ; No predecessors!
  br label %4568

4568:                                             ; preds = %4567
  br label %4569

4569:                                             ; preds = %4568, %4505
  br label %4570

4570:                                             ; preds = %4569
  br label %4571

4571:                                             ; preds = %4570
  br label %4572

4572:                                             ; preds = %4571
  %4573 = load i32, ptr @test_count, align 4, !tbaa !5
  %4574 = add nsw i32 %4573, 1
  store i32 %4574, ptr @test_count, align 4, !tbaa !5
  %4575 = load ptr, ptr %166, align 8, !tbaa !9
  %4576 = call i32 @s2n_extract_early_secret(ptr noundef %4575)
  %4577 = getelementptr inbounds %struct.s2n_result, ptr %169, i32 0, i32 0
  store i32 %4576, ptr %4577, align 4
  %4578 = getelementptr inbounds %struct.s2n_result, ptr %169, i32 0, i32 0
  %4579 = load i32, ptr %4578, align 4
  %4580 = call zeroext i1 @s2n_result_is_ok(i32 %4579)
  br i1 %4580, label %4634, label %4581

4581:                                             ; preds = %4572
  br label %4582

4582:                                             ; preds = %4581
  br label %4583

4583:                                             ; preds = %4582
  call void @llvm.lifetime.start.p0(i64 4, ptr %170) #10
  %4584 = call ptr @__errno_location() #11
  %4585 = load i32, ptr %4584, align 4, !tbaa !5
  store i32 %4585, ptr %170, align 4, !tbaa !5
  %4586 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4587 = call i32 @s2n_print_stacktrace(ptr noundef %4586)
  %4588 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4589 = trunc i8 %4588 to i1
  br i1 %4589, label %4590, label %4612

4590:                                             ; preds = %4583
  %4591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4592 = call i32 @fileno(ptr noundef %4591) #10
  %4593 = call i32 @isatty(i32 noundef %4592) #10
  %4594 = icmp ne i32 %4593, 0
  br i1 %4594, label %4595, label %4612

4595:                                             ; preds = %4590
  %4596 = load i32, ptr %170, align 4, !tbaa !5
  %4597 = call ptr @__errno_location() #11
  store i32 %4596, ptr %4597, align 4, !tbaa !5
  %4598 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4599 = load i32, ptr @test_count, align 4, !tbaa !5
  %4600 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4601 = load i32, ptr %4600, align 4, !tbaa !5
  %4602 = call ptr @s2n_strerror(i32 noundef %4601, ptr noundef @.str.4)
  %4603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4604 = load i32, ptr %4603, align 4, !tbaa !5
  %4605 = call ptr @s2n_strerror_debug(i32 noundef %4604, ptr noundef @.str.4)
  %4606 = call ptr @__errno_location() #11
  %4607 = load i32, ptr %4606, align 4, !tbaa !5
  %4608 = call ptr @strerror(i32 noundef %4607) #10
  %4609 = call ptr @__errno_location() #11
  %4610 = load i32, ptr %4609, align 4, !tbaa !5
  %4611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4598, ptr noundef @.str.2, i32 noundef %4599, ptr noundef @.str.60, ptr noundef @.str.1, i32 noundef 583, ptr noundef %4602, ptr noundef %4605, ptr noundef %4608, i32 noundef %4610) #10
  br label %4629

4612:                                             ; preds = %4590, %4583
  %4613 = load i32, ptr %170, align 4, !tbaa !5
  %4614 = call ptr @__errno_location() #11
  store i32 %4613, ptr %4614, align 4, !tbaa !5
  %4615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4616 = load i32, ptr @test_count, align 4, !tbaa !5
  %4617 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4618 = load i32, ptr %4617, align 4, !tbaa !5
  %4619 = call ptr @s2n_strerror(i32 noundef %4618, ptr noundef @.str.4)
  %4620 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4621 = load i32, ptr %4620, align 4, !tbaa !5
  %4622 = call ptr @s2n_strerror_debug(i32 noundef %4621, ptr noundef @.str.4)
  %4623 = call ptr @__errno_location() #11
  %4624 = load i32, ptr %4623, align 4, !tbaa !5
  %4625 = call ptr @strerror(i32 noundef %4624) #10
  %4626 = call ptr @__errno_location() #11
  %4627 = load i32, ptr %4626, align 4, !tbaa !5
  %4628 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4615, ptr noundef @.str.5, i32 noundef %4616, ptr noundef @.str.60, ptr noundef @.str.1, i32 noundef 583, ptr noundef %4619, ptr noundef %4622, ptr noundef %4625, i32 noundef %4627) #10
  br label %4629

4629:                                             ; preds = %4612, %4595
  call void @llvm.lifetime.end.p0(i64 4, ptr %170) #10
  br label %4630

4630:                                             ; preds = %4629
  br label %4631

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

4632:                                             ; No predecessors!
  br label %4633

4633:                                             ; preds = %4632
  br label %4634

4634:                                             ; preds = %4633, %4572
  br label %4635

4635:                                             ; preds = %4634
  br label %4636

4636:                                             ; preds = %4635
  br label %4637

4637:                                             ; preds = %4636
  %4638 = load i32, ptr @test_count, align 4, !tbaa !5
  %4639 = add nsw i32 %4638, 1
  store i32 %4639, ptr @test_count, align 4, !tbaa !5
  %4640 = load ptr, ptr %166, align 8, !tbaa !9
  %4641 = getelementptr inbounds %struct.s2n_psk, ptr %4640, i32 0, i32 6
  %4642 = getelementptr inbounds %struct.s2n_blob, ptr %4641, i32 0, i32 1
  %4643 = load i32, ptr %4642, align 8, !tbaa !64
  %4644 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 1
  %4645 = load i32, ptr %4644, align 8, !tbaa !48
  %4646 = icmp eq i32 %4643, %4645
  br i1 %4646, label %4700, label %4647

4647:                                             ; preds = %4637
  br label %4648

4648:                                             ; preds = %4647
  br label %4649

4649:                                             ; preds = %4648
  call void @llvm.lifetime.start.p0(i64 4, ptr %171) #10
  %4650 = call ptr @__errno_location() #11
  %4651 = load i32, ptr %4650, align 4, !tbaa !5
  store i32 %4651, ptr %171, align 4, !tbaa !5
  %4652 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4653 = call i32 @s2n_print_stacktrace(ptr noundef %4652)
  %4654 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4655 = trunc i8 %4654 to i1
  br i1 %4655, label %4656, label %4678

4656:                                             ; preds = %4649
  %4657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4658 = call i32 @fileno(ptr noundef %4657) #10
  %4659 = call i32 @isatty(i32 noundef %4658) #10
  %4660 = icmp ne i32 %4659, 0
  br i1 %4660, label %4661, label %4678

4661:                                             ; preds = %4656
  %4662 = load i32, ptr %171, align 4, !tbaa !5
  %4663 = call ptr @__errno_location() #11
  store i32 %4662, ptr %4663, align 4, !tbaa !5
  %4664 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4665 = load i32, ptr @test_count, align 4, !tbaa !5
  %4666 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4667 = load i32, ptr %4666, align 4, !tbaa !5
  %4668 = call ptr @s2n_strerror(i32 noundef %4667, ptr noundef @.str.4)
  %4669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4670 = load i32, ptr %4669, align 4, !tbaa !5
  %4671 = call ptr @s2n_strerror_debug(i32 noundef %4670, ptr noundef @.str.4)
  %4672 = call ptr @__errno_location() #11
  %4673 = load i32, ptr %4672, align 4, !tbaa !5
  %4674 = call ptr @strerror(i32 noundef %4673) #10
  %4675 = call ptr @__errno_location() #11
  %4676 = load i32, ptr %4675, align 4, !tbaa !5
  %4677 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4664, ptr noundef @.str.2, i32 noundef %4665, ptr noundef @.str.61, ptr noundef @.str.1, i32 noundef 584, ptr noundef %4668, ptr noundef %4671, ptr noundef %4674, i32 noundef %4676) #10
  br label %4695

4678:                                             ; preds = %4656, %4649
  %4679 = load i32, ptr %171, align 4, !tbaa !5
  %4680 = call ptr @__errno_location() #11
  store i32 %4679, ptr %4680, align 4, !tbaa !5
  %4681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4682 = load i32, ptr @test_count, align 4, !tbaa !5
  %4683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4684 = load i32, ptr %4683, align 4, !tbaa !5
  %4685 = call ptr @s2n_strerror(i32 noundef %4684, ptr noundef @.str.4)
  %4686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4687 = load i32, ptr %4686, align 4, !tbaa !5
  %4688 = call ptr @s2n_strerror_debug(i32 noundef %4687, ptr noundef @.str.4)
  %4689 = call ptr @__errno_location() #11
  %4690 = load i32, ptr %4689, align 4, !tbaa !5
  %4691 = call ptr @strerror(i32 noundef %4690) #10
  %4692 = call ptr @__errno_location() #11
  %4693 = load i32, ptr %4692, align 4, !tbaa !5
  %4694 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4681, ptr noundef @.str.5, i32 noundef %4682, ptr noundef @.str.61, ptr noundef @.str.1, i32 noundef 584, ptr noundef %4685, ptr noundef %4688, ptr noundef %4691, i32 noundef %4693) #10
  br label %4695

4695:                                             ; preds = %4678, %4661
  call void @llvm.lifetime.end.p0(i64 4, ptr %171) #10
  br label %4696

4696:                                             ; preds = %4695
  br label %4697

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

4698:                                             ; No predecessors!
  br label %4699

4699:                                             ; preds = %4698
  br label %4700

4700:                                             ; preds = %4699, %4637
  br label %4701

4701:                                             ; preds = %4700
  br label %4702

4702:                                             ; preds = %4701
  br label %4703

4703:                                             ; preds = %4702
  %4704 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 1
  %4705 = load i32, ptr %4704, align 8, !tbaa !48
  %4706 = icmp ne i32 %4705, 0
  br i1 %4706, label %4707, label %4778

4707:                                             ; preds = %4703
  br label %4708

4708:                                             ; preds = %4707
  %4709 = load i32, ptr @test_count, align 4, !tbaa !5
  %4710 = add nsw i32 %4709, 1
  store i32 %4710, ptr @test_count, align 4, !tbaa !5
  %4711 = load ptr, ptr %166, align 8, !tbaa !9
  %4712 = getelementptr inbounds %struct.s2n_psk, ptr %4711, i32 0, i32 6
  %4713 = getelementptr inbounds %struct.s2n_blob, ptr %4712, i32 0, i32 0
  %4714 = load ptr, ptr %4713, align 8, !tbaa !67
  %4715 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 0
  %4716 = load ptr, ptr %4715, align 8, !tbaa !49
  %4717 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 1
  %4718 = load i32, ptr %4717, align 8, !tbaa !48
  %4719 = zext i32 %4718 to i64
  %4720 = call i32 @memcmp(ptr noundef %4714, ptr noundef %4716, i64 noundef %4719) #13
  %4721 = icmp eq i32 %4720, 0
  br i1 %4721, label %4775, label %4722

4722:                                             ; preds = %4708
  br label %4723

4723:                                             ; preds = %4722
  br label %4724

4724:                                             ; preds = %4723
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #10
  %4725 = call ptr @__errno_location() #11
  %4726 = load i32, ptr %4725, align 4, !tbaa !5
  store i32 %4726, ptr %172, align 4, !tbaa !5
  %4727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4728 = call i32 @s2n_print_stacktrace(ptr noundef %4727)
  %4729 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4730 = trunc i8 %4729 to i1
  br i1 %4730, label %4731, label %4753

4731:                                             ; preds = %4724
  %4732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4733 = call i32 @fileno(ptr noundef %4732) #10
  %4734 = call i32 @isatty(i32 noundef %4733) #10
  %4735 = icmp ne i32 %4734, 0
  br i1 %4735, label %4736, label %4753

4736:                                             ; preds = %4731
  %4737 = load i32, ptr %172, align 4, !tbaa !5
  %4738 = call ptr @__errno_location() #11
  store i32 %4737, ptr %4738, align 4, !tbaa !5
  %4739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4740 = load i32, ptr @test_count, align 4, !tbaa !5
  %4741 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4742 = load i32, ptr %4741, align 4, !tbaa !5
  %4743 = call ptr @s2n_strerror(i32 noundef %4742, ptr noundef @.str.4)
  %4744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4745 = load i32, ptr %4744, align 4, !tbaa !5
  %4746 = call ptr @s2n_strerror_debug(i32 noundef %4745, ptr noundef @.str.4)
  %4747 = call ptr @__errno_location() #11
  %4748 = load i32, ptr %4747, align 4, !tbaa !5
  %4749 = call ptr @strerror(i32 noundef %4748) #10
  %4750 = call ptr @__errno_location() #11
  %4751 = load i32, ptr %4750, align 4, !tbaa !5
  %4752 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4739, ptr noundef @.str.2, i32 noundef %4740, ptr noundef @.str.62, ptr noundef @.str.1, i32 noundef 585, ptr noundef %4743, ptr noundef %4746, ptr noundef %4749, i32 noundef %4751) #10
  br label %4770

4753:                                             ; preds = %4731, %4724
  %4754 = load i32, ptr %172, align 4, !tbaa !5
  %4755 = call ptr @__errno_location() #11
  store i32 %4754, ptr %4755, align 4, !tbaa !5
  %4756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4757 = load i32, ptr @test_count, align 4, !tbaa !5
  %4758 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4759 = load i32, ptr %4758, align 4, !tbaa !5
  %4760 = call ptr @s2n_strerror(i32 noundef %4759, ptr noundef @.str.4)
  %4761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4762 = load i32, ptr %4761, align 4, !tbaa !5
  %4763 = call ptr @s2n_strerror_debug(i32 noundef %4762, ptr noundef @.str.4)
  %4764 = call ptr @__errno_location() #11
  %4765 = load i32, ptr %4764, align 4, !tbaa !5
  %4766 = call ptr @strerror(i32 noundef %4765) #10
  %4767 = call ptr @__errno_location() #11
  %4768 = load i32, ptr %4767, align 4, !tbaa !5
  %4769 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4756, ptr noundef @.str.5, i32 noundef %4757, ptr noundef @.str.62, ptr noundef @.str.1, i32 noundef 585, ptr noundef %4760, ptr noundef %4763, ptr noundef %4766, i32 noundef %4768) #10
  br label %4770

4770:                                             ; preds = %4753, %4736
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #10
  br label %4771

4771:                                             ; preds = %4770
  br label %4772

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

4773:                                             ; No predecessors!
  br label %4774

4774:                                             ; preds = %4773
  br label %4775

4775:                                             ; preds = %4774, %4708
  br label %4776

4776:                                             ; preds = %4775
  br label %4777

4777:                                             ; preds = %4776
  br label %4778

4778:                                             ; preds = %4777, %4703
  br label %4779

4779:                                             ; preds = %4778
  br label %4780

4780:                                             ; preds = %4779
  %4781 = load ptr, ptr %166, align 8, !tbaa !9
  %4782 = load ptr, ptr %165, align 8, !tbaa !9
  %4783 = getelementptr inbounds %struct.s2n_connection, ptr %4782, i32 0, i32 33
  %4784 = getelementptr inbounds %struct.s2n_psk_parameters, ptr %4783, i32 0, i32 4
  store ptr %4781, ptr %4784, align 8, !tbaa !68
  br label %4785

4785:                                             ; preds = %4780
  %4786 = load i32, ptr @test_count, align 4, !tbaa !5
  %4787 = add nsw i32 %4786, 1
  store i32 %4787, ptr @test_count, align 4, !tbaa !5
  %4788 = load ptr, ptr %165, align 8, !tbaa !9
  %4789 = call i32 @s2n_tls13_extract_secret(ptr noundef %4788, i32 noundef 1)
  %4790 = getelementptr inbounds %struct.s2n_result, ptr %173, i32 0, i32 0
  store i32 %4789, ptr %4790, align 4
  %4791 = getelementptr inbounds %struct.s2n_result, ptr %173, i32 0, i32 0
  %4792 = load i32, ptr %4791, align 4
  %4793 = call zeroext i1 @s2n_result_is_ok(i32 %4792)
  br i1 %4793, label %4847, label %4794

4794:                                             ; preds = %4785
  br label %4795

4795:                                             ; preds = %4794
  br label %4796

4796:                                             ; preds = %4795
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #10
  %4797 = call ptr @__errno_location() #11
  %4798 = load i32, ptr %4797, align 4, !tbaa !5
  store i32 %4798, ptr %174, align 4, !tbaa !5
  %4799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4800 = call i32 @s2n_print_stacktrace(ptr noundef %4799)
  %4801 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4802 = trunc i8 %4801 to i1
  br i1 %4802, label %4803, label %4825

4803:                                             ; preds = %4796
  %4804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4805 = call i32 @fileno(ptr noundef %4804) #10
  %4806 = call i32 @isatty(i32 noundef %4805) #10
  %4807 = icmp ne i32 %4806, 0
  br i1 %4807, label %4808, label %4825

4808:                                             ; preds = %4803
  %4809 = load i32, ptr %174, align 4, !tbaa !5
  %4810 = call ptr @__errno_location() #11
  store i32 %4809, ptr %4810, align 4, !tbaa !5
  %4811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4812 = load i32, ptr @test_count, align 4, !tbaa !5
  %4813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4814 = load i32, ptr %4813, align 4, !tbaa !5
  %4815 = call ptr @s2n_strerror(i32 noundef %4814, ptr noundef @.str.4)
  %4816 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4817 = load i32, ptr %4816, align 4, !tbaa !5
  %4818 = call ptr @s2n_strerror_debug(i32 noundef %4817, ptr noundef @.str.4)
  %4819 = call ptr @__errno_location() #11
  %4820 = load i32, ptr %4819, align 4, !tbaa !5
  %4821 = call ptr @strerror(i32 noundef %4820) #10
  %4822 = call ptr @__errno_location() #11
  %4823 = load i32, ptr %4822, align 4, !tbaa !5
  %4824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4811, ptr noundef @.str.2, i32 noundef %4812, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 589, ptr noundef %4815, ptr noundef %4818, ptr noundef %4821, i32 noundef %4823) #10
  br label %4842

4825:                                             ; preds = %4803, %4796
  %4826 = load i32, ptr %174, align 4, !tbaa !5
  %4827 = call ptr @__errno_location() #11
  store i32 %4826, ptr %4827, align 4, !tbaa !5
  %4828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4829 = load i32, ptr @test_count, align 4, !tbaa !5
  %4830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4831 = load i32, ptr %4830, align 4, !tbaa !5
  %4832 = call ptr @s2n_strerror(i32 noundef %4831, ptr noundef @.str.4)
  %4833 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4834 = load i32, ptr %4833, align 4, !tbaa !5
  %4835 = call ptr @s2n_strerror_debug(i32 noundef %4834, ptr noundef @.str.4)
  %4836 = call ptr @__errno_location() #11
  %4837 = load i32, ptr %4836, align 4, !tbaa !5
  %4838 = call ptr @strerror(i32 noundef %4837) #10
  %4839 = call ptr @__errno_location() #11
  %4840 = load i32, ptr %4839, align 4, !tbaa !5
  %4841 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4828, ptr noundef @.str.5, i32 noundef %4829, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 589, ptr noundef %4832, ptr noundef %4835, ptr noundef %4838, i32 noundef %4840) #10
  br label %4842

4842:                                             ; preds = %4825, %4808
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #10
  br label %4843

4843:                                             ; preds = %4842
  br label %4844

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

4845:                                             ; No predecessors!
  br label %4846

4846:                                             ; preds = %4845
  br label %4847

4847:                                             ; preds = %4846, %4785
  br label %4848

4848:                                             ; preds = %4847
  br label %4849

4849:                                             ; preds = %4848
  br label %4850

4850:                                             ; preds = %4849
  %4851 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 1
  %4852 = load i32, ptr %4851, align 8, !tbaa !48
  %4853 = icmp ne i32 %4852, 0
  br i1 %4853, label %4854, label %4926

4854:                                             ; preds = %4850
  br label %4855

4855:                                             ; preds = %4854
  %4856 = load i32, ptr @test_count, align 4, !tbaa !5
  %4857 = add nsw i32 %4856, 1
  store i32 %4857, ptr @test_count, align 4, !tbaa !5
  %4858 = load ptr, ptr %165, align 8, !tbaa !9
  %4859 = getelementptr inbounds %struct.s2n_connection, ptr %4858, i32 0, i32 28
  %4860 = getelementptr inbounds %struct.s2n_secrets, ptr %4859, i32 0, i32 0
  %4861 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %4860, i32 0, i32 0
  %4862 = getelementptr inbounds [48 x i8], ptr %4861, i64 0, i64 0
  %4863 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 0
  %4864 = load ptr, ptr %4863, align 8, !tbaa !49
  %4865 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 1
  %4866 = load i32, ptr %4865, align 8, !tbaa !48
  %4867 = zext i32 %4866 to i64
  %4868 = call i32 @memcmp(ptr noundef %4862, ptr noundef %4864, i64 noundef %4867) #13
  %4869 = icmp eq i32 %4868, 0
  br i1 %4869, label %4923, label %4870

4870:                                             ; preds = %4855
  br label %4871

4871:                                             ; preds = %4870
  br label %4872

4872:                                             ; preds = %4871
  call void @llvm.lifetime.start.p0(i64 4, ptr %175) #10
  %4873 = call ptr @__errno_location() #11
  %4874 = load i32, ptr %4873, align 4, !tbaa !5
  store i32 %4874, ptr %175, align 4, !tbaa !5
  %4875 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4876 = call i32 @s2n_print_stacktrace(ptr noundef %4875)
  %4877 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4878 = trunc i8 %4877 to i1
  br i1 %4878, label %4879, label %4901

4879:                                             ; preds = %4872
  %4880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4881 = call i32 @fileno(ptr noundef %4880) #10
  %4882 = call i32 @isatty(i32 noundef %4881) #10
  %4883 = icmp ne i32 %4882, 0
  br i1 %4883, label %4884, label %4901

4884:                                             ; preds = %4879
  %4885 = load i32, ptr %175, align 4, !tbaa !5
  %4886 = call ptr @__errno_location() #11
  store i32 %4885, ptr %4886, align 4, !tbaa !5
  %4887 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4888 = load i32, ptr @test_count, align 4, !tbaa !5
  %4889 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4890 = load i32, ptr %4889, align 4, !tbaa !5
  %4891 = call ptr @s2n_strerror(i32 noundef %4890, ptr noundef @.str.4)
  %4892 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4893 = load i32, ptr %4892, align 4, !tbaa !5
  %4894 = call ptr @s2n_strerror_debug(i32 noundef %4893, ptr noundef @.str.4)
  %4895 = call ptr @__errno_location() #11
  %4896 = load i32, ptr %4895, align 4, !tbaa !5
  %4897 = call ptr @strerror(i32 noundef %4896) #10
  %4898 = call ptr @__errno_location() #11
  %4899 = load i32, ptr %4898, align 4, !tbaa !5
  %4900 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4887, ptr noundef @.str.2, i32 noundef %4888, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 591, ptr noundef %4891, ptr noundef %4894, ptr noundef %4897, i32 noundef %4899) #10
  br label %4918

4901:                                             ; preds = %4879, %4872
  %4902 = load i32, ptr %175, align 4, !tbaa !5
  %4903 = call ptr @__errno_location() #11
  store i32 %4902, ptr %4903, align 4, !tbaa !5
  %4904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4905 = load i32, ptr @test_count, align 4, !tbaa !5
  %4906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4907 = load i32, ptr %4906, align 4, !tbaa !5
  %4908 = call ptr @s2n_strerror(i32 noundef %4907, ptr noundef @.str.4)
  %4909 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4910 = load i32, ptr %4909, align 4, !tbaa !5
  %4911 = call ptr @s2n_strerror_debug(i32 noundef %4910, ptr noundef @.str.4)
  %4912 = call ptr @__errno_location() #11
  %4913 = load i32, ptr %4912, align 4, !tbaa !5
  %4914 = call ptr @strerror(i32 noundef %4913) #10
  %4915 = call ptr @__errno_location() #11
  %4916 = load i32, ptr %4915, align 4, !tbaa !5
  %4917 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4904, ptr noundef @.str.5, i32 noundef %4905, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 591, ptr noundef %4908, ptr noundef %4911, ptr noundef %4914, i32 noundef %4916) #10
  br label %4918

4918:                                             ; preds = %4901, %4884
  call void @llvm.lifetime.end.p0(i64 4, ptr %175) #10
  br label %4919

4919:                                             ; preds = %4918
  br label %4920

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

4921:                                             ; No predecessors!
  br label %4922

4922:                                             ; preds = %4921
  br label %4923

4923:                                             ; preds = %4922, %4855
  br label %4924

4924:                                             ; preds = %4923
  br label %4925

4925:                                             ; preds = %4924
  br label %4926

4926:                                             ; preds = %4925, %4850
  br label %4927

4927:                                             ; preds = %4926
  br label %4928

4928:                                             ; preds = %4927
  br label %4929

4929:                                             ; preds = %4928
  %4930 = load i32, ptr @test_count, align 4, !tbaa !5
  %4931 = add nsw i32 %4930, 1
  store i32 %4931, ptr @test_count, align 4, !tbaa !5
  %4932 = load ptr, ptr %165, align 8, !tbaa !9
  %4933 = getelementptr inbounds %struct.s2n_connection, ptr %4932, i32 0, i32 28
  %4934 = getelementptr inbounds %struct.s2n_secrets, ptr %4933, i32 0, i32 1
  %4935 = load i32, ptr %4934, align 4, !tbaa !50
  %4936 = icmp eq i32 %4935, 1
  br i1 %4936, label %4990, label %4937

4937:                                             ; preds = %4929
  br label %4938

4938:                                             ; preds = %4937
  br label %4939

4939:                                             ; preds = %4938
  call void @llvm.lifetime.start.p0(i64 4, ptr %176) #10
  %4940 = call ptr @__errno_location() #11
  %4941 = load i32, ptr %4940, align 4, !tbaa !5
  store i32 %4941, ptr %176, align 4, !tbaa !5
  %4942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4943 = call i32 @s2n_print_stacktrace(ptr noundef %4942)
  %4944 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4945 = trunc i8 %4944 to i1
  br i1 %4945, label %4946, label %4968

4946:                                             ; preds = %4939
  %4947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4948 = call i32 @fileno(ptr noundef %4947) #10
  %4949 = call i32 @isatty(i32 noundef %4948) #10
  %4950 = icmp ne i32 %4949, 0
  br i1 %4950, label %4951, label %4968

4951:                                             ; preds = %4946
  %4952 = load i32, ptr %176, align 4, !tbaa !5
  %4953 = call ptr @__errno_location() #11
  store i32 %4952, ptr %4953, align 4, !tbaa !5
  %4954 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4955 = load i32, ptr @test_count, align 4, !tbaa !5
  %4956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4957 = load i32, ptr %4956, align 4, !tbaa !5
  %4958 = call ptr @s2n_strerror(i32 noundef %4957, ptr noundef @.str.4)
  %4959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4960 = load i32, ptr %4959, align 4, !tbaa !5
  %4961 = call ptr @s2n_strerror_debug(i32 noundef %4960, ptr noundef @.str.4)
  %4962 = call ptr @__errno_location() #11
  %4963 = load i32, ptr %4962, align 4, !tbaa !5
  %4964 = call ptr @strerror(i32 noundef %4963) #10
  %4965 = call ptr @__errno_location() #11
  %4966 = load i32, ptr %4965, align 4, !tbaa !5
  %4967 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4954, ptr noundef @.str.2, i32 noundef %4955, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 592, ptr noundef %4958, ptr noundef %4961, ptr noundef %4964, i32 noundef %4966) #10
  br label %4985

4968:                                             ; preds = %4946, %4939
  %4969 = load i32, ptr %176, align 4, !tbaa !5
  %4970 = call ptr @__errno_location() #11
  store i32 %4969, ptr %4970, align 4, !tbaa !5
  %4971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4972 = load i32, ptr @test_count, align 4, !tbaa !5
  %4973 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4974 = load i32, ptr %4973, align 4, !tbaa !5
  %4975 = call ptr @s2n_strerror(i32 noundef %4974, ptr noundef @.str.4)
  %4976 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4977 = load i32, ptr %4976, align 4, !tbaa !5
  %4978 = call ptr @s2n_strerror_debug(i32 noundef %4977, ptr noundef @.str.4)
  %4979 = call ptr @__errno_location() #11
  %4980 = load i32, ptr %4979, align 4, !tbaa !5
  %4981 = call ptr @strerror(i32 noundef %4980) #10
  %4982 = call ptr @__errno_location() #11
  %4983 = load i32, ptr %4982, align 4, !tbaa !5
  %4984 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4971, ptr noundef @.str.5, i32 noundef %4972, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 592, ptr noundef %4975, ptr noundef %4978, ptr noundef %4981, i32 noundef %4983) #10
  br label %4985

4985:                                             ; preds = %4968, %4951
  call void @llvm.lifetime.end.p0(i64 4, ptr %176) #10
  br label %4986

4986:                                             ; preds = %4985
  br label %4987

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

4988:                                             ; No predecessors!
  br label %4989

4989:                                             ; preds = %4988
  br label %4990

4990:                                             ; preds = %4989, %4929
  br label %4991

4991:                                             ; preds = %4990
  br label %4992

4992:                                             ; preds = %4991
  %4993 = call i32 @s2n_psk_free(ptr noundef %166)
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #10
  %4994 = call i32 @s2n_connection_ptr_free(ptr noundef %165)
  %4995 = getelementptr inbounds %struct.s2n_result, ptr %177, i32 0, i32 0
  store i32 %4994, ptr %4995, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #10
  br label %4996

4996:                                             ; preds = %4992
  %4997 = load i64, ptr %164, align 8, !tbaa !15
  %4998 = add i64 %4997, 1
  store i64 %4998, ptr %164, align 8, !tbaa !15
  br label %4428, !llvm.loop !69

4999:                                             ; preds = %4431
  call void @llvm.lifetime.start.p0(i64 24, ptr %178) #10
  call void @llvm.memset.p0.i64(ptr align 8 %178, i8 0, i64 24, i1 false)
  br label %5000

5000:                                             ; preds = %4999
  %5001 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %178, ptr noundef @.str.63)
  %5002 = getelementptr inbounds %struct.s2n_result, ptr %179, i32 0, i32 0
  store i32 %5001, ptr %5002, align 4
  %5003 = getelementptr inbounds %struct.s2n_result, ptr %179, i32 0, i32 0
  %5004 = load i32, ptr %5003, align 4
  %5005 = call zeroext i1 @s2n_result_is_ok(i32 %5004)
  br i1 %5005, label %5007, label %5006

5006:                                             ; preds = %5000
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %5446

5007:                                             ; preds = %5000
  br label %5008

5008:                                             ; preds = %5007
  br label %5009

5009:                                             ; preds = %5008
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #10
  store i64 0, ptr %180, align 8, !tbaa !15
  br label %5010

5010:                                             ; preds = %5442, %5009
  %5011 = load i64, ptr %180, align 8, !tbaa !15
  %5012 = icmp ult i64 %5011, 2
  br i1 %5012, label %5014, label %5013

5013:                                             ; preds = %5010
  store i32 487, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #10
  br label %5445

5014:                                             ; preds = %5010
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #10
  %5015 = load i64, ptr %180, align 8, !tbaa !15
  %5016 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %5015
  %5017 = load i32, ptr %5016, align 4, !tbaa !5
  %5018 = call ptr @s2n_connection_new(i32 noundef %5017)
  store ptr %5018, ptr %181, align 8, !tbaa !9
  %5019 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %5020 = load ptr, ptr %181, align 8, !tbaa !9
  %5021 = getelementptr inbounds %struct.s2n_connection, ptr %5020, i32 0, i32 27
  %5022 = load ptr, ptr %5021, align 8, !tbaa !17
  %5023 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %5022, i32 0, i32 0
  store ptr %5019, ptr %5023, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #10
  %5024 = load ptr, ptr %181, align 8, !tbaa !9
  %5025 = call ptr @s2n_test_psk_new(ptr noundef %5024)
  store ptr %5025, ptr %182, align 8, !tbaa !9
  br label %5026

5026:                                             ; preds = %5014
  %5027 = load i32, ptr @test_count, align 4, !tbaa !5
  %5028 = add nsw i32 %5027, 1
  store i32 %5028, ptr @test_count, align 4, !tbaa !5
  %5029 = load ptr, ptr %182, align 8, !tbaa !9
  %5030 = icmp eq ptr %5029, null
  br i1 %5030, label %5031, label %5084

5031:                                             ; preds = %5026
  br label %5032

5032:                                             ; preds = %5031
  br label %5033

5033:                                             ; preds = %5032
  call void @llvm.lifetime.start.p0(i64 4, ptr %183) #10
  %5034 = call ptr @__errno_location() #11
  %5035 = load i32, ptr %5034, align 4, !tbaa !5
  store i32 %5035, ptr %183, align 4, !tbaa !5
  %5036 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5037 = call i32 @s2n_print_stacktrace(ptr noundef %5036)
  %5038 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5039 = trunc i8 %5038 to i1
  br i1 %5039, label %5040, label %5062

5040:                                             ; preds = %5033
  %5041 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5042 = call i32 @fileno(ptr noundef %5041) #10
  %5043 = call i32 @isatty(i32 noundef %5042) #10
  %5044 = icmp ne i32 %5043, 0
  br i1 %5044, label %5045, label %5062

5045:                                             ; preds = %5040
  %5046 = load i32, ptr %183, align 4, !tbaa !5
  %5047 = call ptr @__errno_location() #11
  store i32 %5046, ptr %5047, align 4, !tbaa !5
  %5048 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5049 = load i32, ptr @test_count, align 4, !tbaa !5
  %5050 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5051 = load i32, ptr %5050, align 4, !tbaa !5
  %5052 = call ptr @s2n_strerror(i32 noundef %5051, ptr noundef @.str.4)
  %5053 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5054 = load i32, ptr %5053, align 4, !tbaa !5
  %5055 = call ptr @s2n_strerror_debug(i32 noundef %5054, ptr noundef @.str.4)
  %5056 = call ptr @__errno_location() #11
  %5057 = load i32, ptr %5056, align 4, !tbaa !5
  %5058 = call ptr @strerror(i32 noundef %5057) #10
  %5059 = call ptr @__errno_location() #11
  %5060 = load i32, ptr %5059, align 4, !tbaa !5
  %5061 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5048, ptr noundef @.str.2, i32 noundef %5049, ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 612, ptr noundef %5052, ptr noundef %5055, ptr noundef %5058, i32 noundef %5060) #10
  br label %5079

5062:                                             ; preds = %5040, %5033
  %5063 = load i32, ptr %183, align 4, !tbaa !5
  %5064 = call ptr @__errno_location() #11
  store i32 %5063, ptr %5064, align 4, !tbaa !5
  %5065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5066 = load i32, ptr @test_count, align 4, !tbaa !5
  %5067 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5068 = load i32, ptr %5067, align 4, !tbaa !5
  %5069 = call ptr @s2n_strerror(i32 noundef %5068, ptr noundef @.str.4)
  %5070 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5071 = load i32, ptr %5070, align 4, !tbaa !5
  %5072 = call ptr @s2n_strerror_debug(i32 noundef %5071, ptr noundef @.str.4)
  %5073 = call ptr @__errno_location() #11
  %5074 = load i32, ptr %5073, align 4, !tbaa !5
  %5075 = call ptr @strerror(i32 noundef %5074) #10
  %5076 = call ptr @__errno_location() #11
  %5077 = load i32, ptr %5076, align 4, !tbaa !5
  %5078 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5065, ptr noundef @.str.5, i32 noundef %5066, ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 612, ptr noundef %5069, ptr noundef %5072, ptr noundef %5075, i32 noundef %5077) #10
  br label %5079

5079:                                             ; preds = %5062, %5045
  call void @llvm.lifetime.end.p0(i64 4, ptr %183) #10
  br label %5080

5080:                                             ; preds = %5079
  br label %5081

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

5082:                                             ; No predecessors!
  br label %5083

5083:                                             ; preds = %5082
  br label %5084

5084:                                             ; preds = %5083, %5026
  br label %5085

5085:                                             ; preds = %5084
  br label %5086

5086:                                             ; preds = %5085
  %5087 = load ptr, ptr %182, align 8, !tbaa !9
  %5088 = getelementptr inbounds %struct.s2n_psk, ptr %5087, i32 0, i32 0
  store i32 0, ptr %5088, align 8, !tbaa !70
  br label %5089

5089:                                             ; preds = %5086
  %5090 = load i32, ptr @test_count, align 4, !tbaa !5
  %5091 = add nsw i32 %5090, 1
  store i32 %5091, ptr @test_count, align 4, !tbaa !5
  %5092 = load ptr, ptr %182, align 8, !tbaa !9
  %5093 = getelementptr inbounds %struct.s2n_blob, ptr %160, i32 0, i32 0
  %5094 = load ptr, ptr %5093, align 8, !tbaa !49
  %5095 = getelementptr inbounds %struct.s2n_blob, ptr %160, i32 0, i32 1
  %5096 = load i32, ptr %5095, align 8, !tbaa !48
  %5097 = trunc i32 %5096 to i16
  %5098 = call i32 @s2n_psk_set_secret(ptr noundef %5092, ptr noundef %5094, i16 noundef zeroext %5097)
  %5099 = icmp eq i32 %5098, -1
  br i1 %5099, label %5100, label %5153

5100:                                             ; preds = %5089
  br label %5101

5101:                                             ; preds = %5100
  br label %5102

5102:                                             ; preds = %5101
  call void @llvm.lifetime.start.p0(i64 4, ptr %184) #10
  %5103 = call ptr @__errno_location() #11
  %5104 = load i32, ptr %5103, align 4, !tbaa !5
  store i32 %5104, ptr %184, align 4, !tbaa !5
  %5105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5106 = call i32 @s2n_print_stacktrace(ptr noundef %5105)
  %5107 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5108 = trunc i8 %5107 to i1
  br i1 %5108, label %5109, label %5131

5109:                                             ; preds = %5102
  %5110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5111 = call i32 @fileno(ptr noundef %5110) #10
  %5112 = call i32 @isatty(i32 noundef %5111) #10
  %5113 = icmp ne i32 %5112, 0
  br i1 %5113, label %5114, label %5131

5114:                                             ; preds = %5109
  %5115 = load i32, ptr %184, align 4, !tbaa !5
  %5116 = call ptr @__errno_location() #11
  store i32 %5115, ptr %5116, align 4, !tbaa !5
  %5117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5118 = load i32, ptr @test_count, align 4, !tbaa !5
  %5119 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5120 = load i32, ptr %5119, align 4, !tbaa !5
  %5121 = call ptr @s2n_strerror(i32 noundef %5120, ptr noundef @.str.4)
  %5122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5123 = load i32, ptr %5122, align 4, !tbaa !5
  %5124 = call ptr @s2n_strerror_debug(i32 noundef %5123, ptr noundef @.str.4)
  %5125 = call ptr @__errno_location() #11
  %5126 = load i32, ptr %5125, align 4, !tbaa !5
  %5127 = call ptr @strerror(i32 noundef %5126) #10
  %5128 = call ptr @__errno_location() #11
  %5129 = load i32, ptr %5128, align 4, !tbaa !5
  %5130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5117, ptr noundef @.str.2, i32 noundef %5118, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 614, ptr noundef %5121, ptr noundef %5124, ptr noundef %5127, i32 noundef %5129) #10
  br label %5148

5131:                                             ; preds = %5109, %5102
  %5132 = load i32, ptr %184, align 4, !tbaa !5
  %5133 = call ptr @__errno_location() #11
  store i32 %5132, ptr %5133, align 4, !tbaa !5
  %5134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5135 = load i32, ptr @test_count, align 4, !tbaa !5
  %5136 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5137 = load i32, ptr %5136, align 4, !tbaa !5
  %5138 = call ptr @s2n_strerror(i32 noundef %5137, ptr noundef @.str.4)
  %5139 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5140 = load i32, ptr %5139, align 4, !tbaa !5
  %5141 = call ptr @s2n_strerror_debug(i32 noundef %5140, ptr noundef @.str.4)
  %5142 = call ptr @__errno_location() #11
  %5143 = load i32, ptr %5142, align 4, !tbaa !5
  %5144 = call ptr @strerror(i32 noundef %5143) #10
  %5145 = call ptr @__errno_location() #11
  %5146 = load i32, ptr %5145, align 4, !tbaa !5
  %5147 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5134, ptr noundef @.str.5, i32 noundef %5135, ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 614, ptr noundef %5138, ptr noundef %5141, ptr noundef %5144, i32 noundef %5146) #10
  br label %5148

5148:                                             ; preds = %5131, %5114
  call void @llvm.lifetime.end.p0(i64 4, ptr %184) #10
  br label %5149

5149:                                             ; preds = %5148
  br label %5150

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

5151:                                             ; No predecessors!
  br label %5152

5152:                                             ; preds = %5151
  br label %5153

5153:                                             ; preds = %5152, %5089
  br label %5154

5154:                                             ; preds = %5153
  br label %5155

5155:                                             ; preds = %5154
  br label %5156

5156:                                             ; preds = %5155
  %5157 = load i32, ptr @test_count, align 4, !tbaa !5
  %5158 = add nsw i32 %5157, 1
  store i32 %5158, ptr @test_count, align 4, !tbaa !5
  %5159 = load ptr, ptr %182, align 8, !tbaa !9
  %5160 = call i32 @s2n_derive_binder_key(ptr noundef %5159, ptr noundef %9)
  %5161 = getelementptr inbounds %struct.s2n_result, ptr %185, i32 0, i32 0
  store i32 %5160, ptr %5161, align 4
  %5162 = getelementptr inbounds %struct.s2n_result, ptr %185, i32 0, i32 0
  %5163 = load i32, ptr %5162, align 4
  %5164 = call zeroext i1 @s2n_result_is_ok(i32 %5163)
  br i1 %5164, label %5218, label %5165

5165:                                             ; preds = %5156
  br label %5166

5166:                                             ; preds = %5165
  br label %5167

5167:                                             ; preds = %5166
  call void @llvm.lifetime.start.p0(i64 4, ptr %186) #10
  %5168 = call ptr @__errno_location() #11
  %5169 = load i32, ptr %5168, align 4, !tbaa !5
  store i32 %5169, ptr %186, align 4, !tbaa !5
  %5170 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5171 = call i32 @s2n_print_stacktrace(ptr noundef %5170)
  %5172 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5173 = trunc i8 %5172 to i1
  br i1 %5173, label %5174, label %5196

5174:                                             ; preds = %5167
  %5175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5176 = call i32 @fileno(ptr noundef %5175) #10
  %5177 = call i32 @isatty(i32 noundef %5176) #10
  %5178 = icmp ne i32 %5177, 0
  br i1 %5178, label %5179, label %5196

5179:                                             ; preds = %5174
  %5180 = load i32, ptr %186, align 4, !tbaa !5
  %5181 = call ptr @__errno_location() #11
  store i32 %5180, ptr %5181, align 4, !tbaa !5
  %5182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5183 = load i32, ptr @test_count, align 4, !tbaa !5
  %5184 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5185 = load i32, ptr %5184, align 4, !tbaa !5
  %5186 = call ptr @s2n_strerror(i32 noundef %5185, ptr noundef @.str.4)
  %5187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5188 = load i32, ptr %5187, align 4, !tbaa !5
  %5189 = call ptr @s2n_strerror_debug(i32 noundef %5188, ptr noundef @.str.4)
  %5190 = call ptr @__errno_location() #11
  %5191 = load i32, ptr %5190, align 4, !tbaa !5
  %5192 = call ptr @strerror(i32 noundef %5191) #10
  %5193 = call ptr @__errno_location() #11
  %5194 = load i32, ptr %5193, align 4, !tbaa !5
  %5195 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5182, ptr noundef @.str.2, i32 noundef %5183, ptr noundef @.str.64, ptr noundef @.str.1, i32 noundef 616, ptr noundef %5186, ptr noundef %5189, ptr noundef %5192, i32 noundef %5194) #10
  br label %5213

5196:                                             ; preds = %5174, %5167
  %5197 = load i32, ptr %186, align 4, !tbaa !5
  %5198 = call ptr @__errno_location() #11
  store i32 %5197, ptr %5198, align 4, !tbaa !5
  %5199 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5200 = load i32, ptr @test_count, align 4, !tbaa !5
  %5201 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5202 = load i32, ptr %5201, align 4, !tbaa !5
  %5203 = call ptr @s2n_strerror(i32 noundef %5202, ptr noundef @.str.4)
  %5204 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5205 = load i32, ptr %5204, align 4, !tbaa !5
  %5206 = call ptr @s2n_strerror_debug(i32 noundef %5205, ptr noundef @.str.4)
  %5207 = call ptr @__errno_location() #11
  %5208 = load i32, ptr %5207, align 4, !tbaa !5
  %5209 = call ptr @strerror(i32 noundef %5208) #10
  %5210 = call ptr @__errno_location() #11
  %5211 = load i32, ptr %5210, align 4, !tbaa !5
  %5212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5199, ptr noundef @.str.5, i32 noundef %5200, ptr noundef @.str.64, ptr noundef @.str.1, i32 noundef 616, ptr noundef %5203, ptr noundef %5206, ptr noundef %5209, i32 noundef %5211) #10
  br label %5213

5213:                                             ; preds = %5196, %5179
  call void @llvm.lifetime.end.p0(i64 4, ptr %186) #10
  br label %5214

5214:                                             ; preds = %5213
  br label %5215

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

5216:                                             ; No predecessors!
  br label %5217

5217:                                             ; preds = %5216
  br label %5218

5218:                                             ; preds = %5217, %5156
  br label %5219

5219:                                             ; preds = %5218
  br label %5220

5220:                                             ; preds = %5219
  br label %5221

5221:                                             ; preds = %5220
  %5222 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 1
  %5223 = load i32, ptr %5222, align 8, !tbaa !48
  %5224 = icmp ne i32 %5223, 0
  br i1 %5224, label %5225, label %5296

5225:                                             ; preds = %5221
  br label %5226

5226:                                             ; preds = %5225
  %5227 = load i32, ptr @test_count, align 4, !tbaa !5
  %5228 = add nsw i32 %5227, 1
  store i32 %5228, ptr @test_count, align 4, !tbaa !5
  %5229 = load ptr, ptr %182, align 8, !tbaa !9
  %5230 = getelementptr inbounds %struct.s2n_psk, ptr %5229, i32 0, i32 6
  %5231 = getelementptr inbounds %struct.s2n_blob, ptr %5230, i32 0, i32 0
  %5232 = load ptr, ptr %5231, align 8, !tbaa !67
  %5233 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 0
  %5234 = load ptr, ptr %5233, align 8, !tbaa !49
  %5235 = getelementptr inbounds %struct.s2n_blob, ptr %162, i32 0, i32 1
  %5236 = load i32, ptr %5235, align 8, !tbaa !48
  %5237 = zext i32 %5236 to i64
  %5238 = call i32 @memcmp(ptr noundef %5232, ptr noundef %5234, i64 noundef %5237) #13
  %5239 = icmp eq i32 %5238, 0
  br i1 %5239, label %5293, label %5240

5240:                                             ; preds = %5226
  br label %5241

5241:                                             ; preds = %5240
  br label %5242

5242:                                             ; preds = %5241
  call void @llvm.lifetime.start.p0(i64 4, ptr %187) #10
  %5243 = call ptr @__errno_location() #11
  %5244 = load i32, ptr %5243, align 4, !tbaa !5
  store i32 %5244, ptr %187, align 4, !tbaa !5
  %5245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5246 = call i32 @s2n_print_stacktrace(ptr noundef %5245)
  %5247 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5248 = trunc i8 %5247 to i1
  br i1 %5248, label %5249, label %5271

5249:                                             ; preds = %5242
  %5250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5251 = call i32 @fileno(ptr noundef %5250) #10
  %5252 = call i32 @isatty(i32 noundef %5251) #10
  %5253 = icmp ne i32 %5252, 0
  br i1 %5253, label %5254, label %5271

5254:                                             ; preds = %5249
  %5255 = load i32, ptr %187, align 4, !tbaa !5
  %5256 = call ptr @__errno_location() #11
  store i32 %5255, ptr %5256, align 4, !tbaa !5
  %5257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5258 = load i32, ptr @test_count, align 4, !tbaa !5
  %5259 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5260 = load i32, ptr %5259, align 4, !tbaa !5
  %5261 = call ptr @s2n_strerror(i32 noundef %5260, ptr noundef @.str.4)
  %5262 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5263 = load i32, ptr %5262, align 4, !tbaa !5
  %5264 = call ptr @s2n_strerror_debug(i32 noundef %5263, ptr noundef @.str.4)
  %5265 = call ptr @__errno_location() #11
  %5266 = load i32, ptr %5265, align 4, !tbaa !5
  %5267 = call ptr @strerror(i32 noundef %5266) #10
  %5268 = call ptr @__errno_location() #11
  %5269 = load i32, ptr %5268, align 4, !tbaa !5
  %5270 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5257, ptr noundef @.str.2, i32 noundef %5258, ptr noundef @.str.62, ptr noundef @.str.1, i32 noundef 617, ptr noundef %5261, ptr noundef %5264, ptr noundef %5267, i32 noundef %5269) #10
  br label %5288

5271:                                             ; preds = %5249, %5242
  %5272 = load i32, ptr %187, align 4, !tbaa !5
  %5273 = call ptr @__errno_location() #11
  store i32 %5272, ptr %5273, align 4, !tbaa !5
  %5274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5275 = load i32, ptr @test_count, align 4, !tbaa !5
  %5276 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5277 = load i32, ptr %5276, align 4, !tbaa !5
  %5278 = call ptr @s2n_strerror(i32 noundef %5277, ptr noundef @.str.4)
  %5279 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5280 = load i32, ptr %5279, align 4, !tbaa !5
  %5281 = call ptr @s2n_strerror_debug(i32 noundef %5280, ptr noundef @.str.4)
  %5282 = call ptr @__errno_location() #11
  %5283 = load i32, ptr %5282, align 4, !tbaa !5
  %5284 = call ptr @strerror(i32 noundef %5283) #10
  %5285 = call ptr @__errno_location() #11
  %5286 = load i32, ptr %5285, align 4, !tbaa !5
  %5287 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5274, ptr noundef @.str.5, i32 noundef %5275, ptr noundef @.str.62, ptr noundef @.str.1, i32 noundef 617, ptr noundef %5278, ptr noundef %5281, ptr noundef %5284, i32 noundef %5286) #10
  br label %5288

5288:                                             ; preds = %5271, %5254
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #10
  br label %5289

5289:                                             ; preds = %5288
  br label %5290

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

5291:                                             ; No predecessors!
  br label %5292

5292:                                             ; preds = %5291
  br label %5293

5293:                                             ; preds = %5292, %5226
  br label %5294

5294:                                             ; preds = %5293
  br label %5295

5295:                                             ; preds = %5294
  br label %5296

5296:                                             ; preds = %5295, %5221
  br label %5297

5297:                                             ; preds = %5296
  br label %5298

5298:                                             ; preds = %5297
  br label %5299

5299:                                             ; preds = %5298
  %5300 = load i32, ptr @test_count, align 4, !tbaa !5
  %5301 = add nsw i32 %5300, 1
  store i32 %5301, ptr @test_count, align 4, !tbaa !5
  %5302 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 1
  %5303 = load i32, ptr %5302, align 8, !tbaa !48
  %5304 = getelementptr inbounds %struct.s2n_blob, ptr %178, i32 0, i32 1
  %5305 = load i32, ptr %5304, align 8, !tbaa !48
  %5306 = icmp eq i32 %5303, %5305
  br i1 %5306, label %5360, label %5307

5307:                                             ; preds = %5299
  br label %5308

5308:                                             ; preds = %5307
  br label %5309

5309:                                             ; preds = %5308
  call void @llvm.lifetime.start.p0(i64 4, ptr %188) #10
  %5310 = call ptr @__errno_location() #11
  %5311 = load i32, ptr %5310, align 4, !tbaa !5
  store i32 %5311, ptr %188, align 4, !tbaa !5
  %5312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5313 = call i32 @s2n_print_stacktrace(ptr noundef %5312)
  %5314 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5315 = trunc i8 %5314 to i1
  br i1 %5315, label %5316, label %5338

5316:                                             ; preds = %5309
  %5317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5318 = call i32 @fileno(ptr noundef %5317) #10
  %5319 = call i32 @isatty(i32 noundef %5318) #10
  %5320 = icmp ne i32 %5319, 0
  br i1 %5320, label %5321, label %5338

5321:                                             ; preds = %5316
  %5322 = load i32, ptr %188, align 4, !tbaa !5
  %5323 = call ptr @__errno_location() #11
  store i32 %5322, ptr %5323, align 4, !tbaa !5
  %5324 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5325 = load i32, ptr @test_count, align 4, !tbaa !5
  %5326 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5327 = load i32, ptr %5326, align 4, !tbaa !5
  %5328 = call ptr @s2n_strerror(i32 noundef %5327, ptr noundef @.str.4)
  %5329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5330 = load i32, ptr %5329, align 4, !tbaa !5
  %5331 = call ptr @s2n_strerror_debug(i32 noundef %5330, ptr noundef @.str.4)
  %5332 = call ptr @__errno_location() #11
  %5333 = load i32, ptr %5332, align 4, !tbaa !5
  %5334 = call ptr @strerror(i32 noundef %5333) #10
  %5335 = call ptr @__errno_location() #11
  %5336 = load i32, ptr %5335, align 4, !tbaa !5
  %5337 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5324, ptr noundef @.str.2, i32 noundef %5325, ptr noundef @.str.65, ptr noundef @.str.1, i32 noundef 618, ptr noundef %5328, ptr noundef %5331, ptr noundef %5334, i32 noundef %5336) #10
  br label %5355

5338:                                             ; preds = %5316, %5309
  %5339 = load i32, ptr %188, align 4, !tbaa !5
  %5340 = call ptr @__errno_location() #11
  store i32 %5339, ptr %5340, align 4, !tbaa !5
  %5341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5342 = load i32, ptr @test_count, align 4, !tbaa !5
  %5343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5344 = load i32, ptr %5343, align 4, !tbaa !5
  %5345 = call ptr @s2n_strerror(i32 noundef %5344, ptr noundef @.str.4)
  %5346 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5347 = load i32, ptr %5346, align 4, !tbaa !5
  %5348 = call ptr @s2n_strerror_debug(i32 noundef %5347, ptr noundef @.str.4)
  %5349 = call ptr @__errno_location() #11
  %5350 = load i32, ptr %5349, align 4, !tbaa !5
  %5351 = call ptr @strerror(i32 noundef %5350) #10
  %5352 = call ptr @__errno_location() #11
  %5353 = load i32, ptr %5352, align 4, !tbaa !5
  %5354 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5341, ptr noundef @.str.5, i32 noundef %5342, ptr noundef @.str.65, ptr noundef @.str.1, i32 noundef 618, ptr noundef %5345, ptr noundef %5348, ptr noundef %5351, i32 noundef %5353) #10
  br label %5355

5355:                                             ; preds = %5338, %5321
  call void @llvm.lifetime.end.p0(i64 4, ptr %188) #10
  br label %5356

5356:                                             ; preds = %5355
  br label %5357

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

5358:                                             ; No predecessors!
  br label %5359

5359:                                             ; preds = %5358
  br label %5360

5360:                                             ; preds = %5359, %5299
  br label %5361

5361:                                             ; preds = %5360
  br label %5362

5362:                                             ; preds = %5361
  br label %5363

5363:                                             ; preds = %5362
  %5364 = getelementptr inbounds %struct.s2n_blob, ptr %178, i32 0, i32 1
  %5365 = load i32, ptr %5364, align 8, !tbaa !48
  %5366 = icmp ne i32 %5365, 0
  br i1 %5366, label %5367, label %5436

5367:                                             ; preds = %5363
  br label %5368

5368:                                             ; preds = %5367
  %5369 = load i32, ptr @test_count, align 4, !tbaa !5
  %5370 = add nsw i32 %5369, 1
  store i32 %5370, ptr @test_count, align 4, !tbaa !5
  %5371 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 0
  %5372 = load ptr, ptr %5371, align 8, !tbaa !49
  %5373 = getelementptr inbounds %struct.s2n_blob, ptr %178, i32 0, i32 0
  %5374 = load ptr, ptr %5373, align 8, !tbaa !49
  %5375 = getelementptr inbounds %struct.s2n_blob, ptr %178, i32 0, i32 1
  %5376 = load i32, ptr %5375, align 8, !tbaa !48
  %5377 = zext i32 %5376 to i64
  %5378 = call i32 @memcmp(ptr noundef %5372, ptr noundef %5374, i64 noundef %5377) #13
  %5379 = icmp eq i32 %5378, 0
  br i1 %5379, label %5433, label %5380

5380:                                             ; preds = %5368
  br label %5381

5381:                                             ; preds = %5380
  br label %5382

5382:                                             ; preds = %5381
  call void @llvm.lifetime.start.p0(i64 4, ptr %189) #10
  %5383 = call ptr @__errno_location() #11
  %5384 = load i32, ptr %5383, align 4, !tbaa !5
  store i32 %5384, ptr %189, align 4, !tbaa !5
  %5385 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5386 = call i32 @s2n_print_stacktrace(ptr noundef %5385)
  %5387 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5388 = trunc i8 %5387 to i1
  br i1 %5388, label %5389, label %5411

5389:                                             ; preds = %5382
  %5390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5391 = call i32 @fileno(ptr noundef %5390) #10
  %5392 = call i32 @isatty(i32 noundef %5391) #10
  %5393 = icmp ne i32 %5392, 0
  br i1 %5393, label %5394, label %5411

5394:                                             ; preds = %5389
  %5395 = load i32, ptr %189, align 4, !tbaa !5
  %5396 = call ptr @__errno_location() #11
  store i32 %5395, ptr %5396, align 4, !tbaa !5
  %5397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5398 = load i32, ptr @test_count, align 4, !tbaa !5
  %5399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5400 = load i32, ptr %5399, align 4, !tbaa !5
  %5401 = call ptr @s2n_strerror(i32 noundef %5400, ptr noundef @.str.4)
  %5402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5403 = load i32, ptr %5402, align 4, !tbaa !5
  %5404 = call ptr @s2n_strerror_debug(i32 noundef %5403, ptr noundef @.str.4)
  %5405 = call ptr @__errno_location() #11
  %5406 = load i32, ptr %5405, align 4, !tbaa !5
  %5407 = call ptr @strerror(i32 noundef %5406) #10
  %5408 = call ptr @__errno_location() #11
  %5409 = load i32, ptr %5408, align 4, !tbaa !5
  %5410 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5397, ptr noundef @.str.2, i32 noundef %5398, ptr noundef @.str.66, ptr noundef @.str.1, i32 noundef 619, ptr noundef %5401, ptr noundef %5404, ptr noundef %5407, i32 noundef %5409) #10
  br label %5428

5411:                                             ; preds = %5389, %5382
  %5412 = load i32, ptr %189, align 4, !tbaa !5
  %5413 = call ptr @__errno_location() #11
  store i32 %5412, ptr %5413, align 4, !tbaa !5
  %5414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5415 = load i32, ptr @test_count, align 4, !tbaa !5
  %5416 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5417 = load i32, ptr %5416, align 4, !tbaa !5
  %5418 = call ptr @s2n_strerror(i32 noundef %5417, ptr noundef @.str.4)
  %5419 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5420 = load i32, ptr %5419, align 4, !tbaa !5
  %5421 = call ptr @s2n_strerror_debug(i32 noundef %5420, ptr noundef @.str.4)
  %5422 = call ptr @__errno_location() #11
  %5423 = load i32, ptr %5422, align 4, !tbaa !5
  %5424 = call ptr @strerror(i32 noundef %5423) #10
  %5425 = call ptr @__errno_location() #11
  %5426 = load i32, ptr %5425, align 4, !tbaa !5
  %5427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5414, ptr noundef @.str.5, i32 noundef %5415, ptr noundef @.str.66, ptr noundef @.str.1, i32 noundef 619, ptr noundef %5418, ptr noundef %5421, ptr noundef %5424, i32 noundef %5426) #10
  br label %5428

5428:                                             ; preds = %5411, %5394
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #10
  br label %5429

5429:                                             ; preds = %5428
  br label %5430

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

5431:                                             ; No predecessors!
  br label %5432

5432:                                             ; preds = %5431
  br label %5433

5433:                                             ; preds = %5432, %5368
  br label %5434

5434:                                             ; preds = %5433
  br label %5435

5435:                                             ; preds = %5434
  br label %5436

5436:                                             ; preds = %5435, %5363
  br label %5437

5437:                                             ; preds = %5436
  br label %5438

5438:                                             ; preds = %5437
  %5439 = call i32 @s2n_psk_free(ptr noundef %182)
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #10
  %5440 = call i32 @s2n_connection_ptr_free(ptr noundef %181)
  %5441 = getelementptr inbounds %struct.s2n_result, ptr %190, i32 0, i32 0
  store i32 %5440, ptr %5441, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #10
  br label %5442

5442:                                             ; preds = %5438
  %5443 = load i64, ptr %180, align 8, !tbaa !15
  %5444 = add i64 %5443, 1
  store i64 %5444, ptr %180, align 8, !tbaa !15
  br label %5010, !llvm.loop !71

5445:                                             ; preds = %5013
  store i32 0, ptr %14, align 4
  br label %5446

5446:                                             ; preds = %5445, %5006
  %5447 = call i32 @s2n_free(ptr noundef %178)
  call void @llvm.lifetime.end.p0(i64 24, ptr %178) #10
  %5448 = load i32, ptr %14, align 4
  switch i32 %5448, label %5831 [
    i32 0, label %5449
  ]

5449:                                             ; preds = %5446
  call void @llvm.lifetime.start.p0(i64 24, ptr %191) #10
  call void @llvm.memset.p0.i64(ptr align 8 %191, i8 0, i64 24, i1 false)
  br label %5450

5450:                                             ; preds = %5449
  %5451 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %191, ptr noundef @.str.67)
  %5452 = getelementptr inbounds %struct.s2n_result, ptr %192, i32 0, i32 0
  store i32 %5451, ptr %5452, align 4
  %5453 = getelementptr inbounds %struct.s2n_result, ptr %192, i32 0, i32 0
  %5454 = load i32, ptr %5453, align 4
  %5455 = call zeroext i1 @s2n_result_is_ok(i32 %5454)
  br i1 %5455, label %5457, label %5456

5456:                                             ; preds = %5450
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %5827

5457:                                             ; preds = %5450
  br label %5458

5458:                                             ; preds = %5457
  br label %5459

5459:                                             ; preds = %5458
  call void @llvm.lifetime.start.p0(i64 24, ptr %193) #10
  call void @llvm.memset.p0.i64(ptr align 8 %193, i8 0, i64 24, i1 false)
  br label %5460

5460:                                             ; preds = %5459
  %5461 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef %193, ptr noundef @.str.68)
  %5462 = getelementptr inbounds %struct.s2n_result, ptr %194, i32 0, i32 0
  store i32 %5461, ptr %5462, align 4
  %5463 = getelementptr inbounds %struct.s2n_result, ptr %194, i32 0, i32 0
  %5464 = load i32, ptr %5463, align 4
  %5465 = call zeroext i1 @s2n_result_is_ok(i32 %5464)
  br i1 %5465, label %5467, label %5466

5466:                                             ; preds = %5460
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %5825

5467:                                             ; preds = %5460
  br label %5468

5468:                                             ; preds = %5467
  br label %5469

5469:                                             ; preds = %5468
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #10
  store i64 0, ptr %195, align 8, !tbaa !15
  br label %5470

5470:                                             ; preds = %5821, %5469
  %5471 = load i64, ptr %195, align 8, !tbaa !15
  %5472 = icmp ult i64 %5471, 2
  br i1 %5472, label %5474, label %5473

5473:                                             ; preds = %5470
  store i32 534, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #10
  br label %5824

5474:                                             ; preds = %5470
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #10
  %5475 = load i64, ptr %195, align 8, !tbaa !15
  %5476 = getelementptr inbounds [2 x i32], ptr @modes, i64 0, i64 %5475
  %5477 = load i32, ptr %5476, align 4, !tbaa !5
  %5478 = call ptr @s2n_connection_new(i32 noundef %5477)
  store ptr %5478, ptr %196, align 8, !tbaa !9
  %5479 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %5480 = load ptr, ptr %196, align 8, !tbaa !9
  %5481 = getelementptr inbounds %struct.s2n_connection, ptr %5480, i32 0, i32 27
  %5482 = load ptr, ptr %5481, align 8, !tbaa !17
  %5483 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %5482, i32 0, i32 0
  store ptr %5479, ptr %5483, align 8, !tbaa !43
  br label %5484

5484:                                             ; preds = %5474
  %5485 = load i32, ptr @test_count, align 4, !tbaa !5
  %5486 = add nsw i32 %5485, 1
  store i32 %5486, ptr @test_count, align 4, !tbaa !5
  %5487 = load ptr, ptr %196, align 8, !tbaa !9
  %5488 = call i32 @s2n_connection_set_test_early_secret(ptr noundef %5487, ptr noundef %162)
  %5489 = getelementptr inbounds %struct.s2n_result, ptr %197, i32 0, i32 0
  store i32 %5488, ptr %5489, align 4
  %5490 = getelementptr inbounds %struct.s2n_result, ptr %197, i32 0, i32 0
  %5491 = load i32, ptr %5490, align 4
  %5492 = call zeroext i1 @s2n_result_is_ok(i32 %5491)
  br i1 %5492, label %5546, label %5493

5493:                                             ; preds = %5484
  br label %5494

5494:                                             ; preds = %5493
  br label %5495

5495:                                             ; preds = %5494
  call void @llvm.lifetime.start.p0(i64 4, ptr %198) #10
  %5496 = call ptr @__errno_location() #11
  %5497 = load i32, ptr %5496, align 4, !tbaa !5
  store i32 %5497, ptr %198, align 4, !tbaa !5
  %5498 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5499 = call i32 @s2n_print_stacktrace(ptr noundef %5498)
  %5500 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5501 = trunc i8 %5500 to i1
  br i1 %5501, label %5502, label %5524

5502:                                             ; preds = %5495
  %5503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5504 = call i32 @fileno(ptr noundef %5503) #10
  %5505 = call i32 @isatty(i32 noundef %5504) #10
  %5506 = icmp ne i32 %5505, 0
  br i1 %5506, label %5507, label %5524

5507:                                             ; preds = %5502
  %5508 = load i32, ptr %198, align 4, !tbaa !5
  %5509 = call ptr @__errno_location() #11
  store i32 %5508, ptr %5509, align 4, !tbaa !5
  %5510 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5511 = load i32, ptr @test_count, align 4, !tbaa !5
  %5512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5513 = load i32, ptr %5512, align 4, !tbaa !5
  %5514 = call ptr @s2n_strerror(i32 noundef %5513, ptr noundef @.str.4)
  %5515 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5516 = load i32, ptr %5515, align 4, !tbaa !5
  %5517 = call ptr @s2n_strerror_debug(i32 noundef %5516, ptr noundef @.str.4)
  %5518 = call ptr @__errno_location() #11
  %5519 = load i32, ptr %5518, align 4, !tbaa !5
  %5520 = call ptr @strerror(i32 noundef %5519) #10
  %5521 = call ptr @__errno_location() #11
  %5522 = load i32, ptr %5521, align 4, !tbaa !5
  %5523 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5510, ptr noundef @.str.2, i32 noundef %5511, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 655, ptr noundef %5514, ptr noundef %5517, ptr noundef %5520, i32 noundef %5522) #10
  br label %5541

5524:                                             ; preds = %5502, %5495
  %5525 = load i32, ptr %198, align 4, !tbaa !5
  %5526 = call ptr @__errno_location() #11
  store i32 %5525, ptr %5526, align 4, !tbaa !5
  %5527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5528 = load i32, ptr @test_count, align 4, !tbaa !5
  %5529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5530 = load i32, ptr %5529, align 4, !tbaa !5
  %5531 = call ptr @s2n_strerror(i32 noundef %5530, ptr noundef @.str.4)
  %5532 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5533 = load i32, ptr %5532, align 4, !tbaa !5
  %5534 = call ptr @s2n_strerror_debug(i32 noundef %5533, ptr noundef @.str.4)
  %5535 = call ptr @__errno_location() #11
  %5536 = load i32, ptr %5535, align 4, !tbaa !5
  %5537 = call ptr @strerror(i32 noundef %5536) #10
  %5538 = call ptr @__errno_location() #11
  %5539 = load i32, ptr %5538, align 4, !tbaa !5
  %5540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5527, ptr noundef @.str.5, i32 noundef %5528, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 655, ptr noundef %5531, ptr noundef %5534, ptr noundef %5537, i32 noundef %5539) #10
  br label %5541

5541:                                             ; preds = %5524, %5507
  call void @llvm.lifetime.end.p0(i64 4, ptr %198) #10
  br label %5542

5542:                                             ; preds = %5541
  br label %5543

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

5544:                                             ; No predecessors!
  br label %5545

5545:                                             ; preds = %5544
  br label %5546

5546:                                             ; preds = %5545, %5484
  br label %5547

5547:                                             ; preds = %5546
  br label %5548

5548:                                             ; preds = %5547
  br label %5549

5549:                                             ; preds = %5548
  %5550 = load i32, ptr @test_count, align 4, !tbaa !5
  %5551 = add nsw i32 %5550, 1
  store i32 %5551, ptr @test_count, align 4, !tbaa !5
  %5552 = load ptr, ptr %196, align 8, !tbaa !9
  %5553 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %5552, i32 noundef 0, ptr noundef %191)
  %5554 = getelementptr inbounds %struct.s2n_result, ptr %199, i32 0, i32 0
  store i32 %5553, ptr %5554, align 4
  %5555 = getelementptr inbounds %struct.s2n_result, ptr %199, i32 0, i32 0
  %5556 = load i32, ptr %5555, align 4
  %5557 = call zeroext i1 @s2n_result_is_ok(i32 %5556)
  br i1 %5557, label %5611, label %5558

5558:                                             ; preds = %5549
  br label %5559

5559:                                             ; preds = %5558
  br label %5560

5560:                                             ; preds = %5559
  call void @llvm.lifetime.start.p0(i64 4, ptr %200) #10
  %5561 = call ptr @__errno_location() #11
  %5562 = load i32, ptr %5561, align 4, !tbaa !5
  store i32 %5562, ptr %200, align 4, !tbaa !5
  %5563 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5564 = call i32 @s2n_print_stacktrace(ptr noundef %5563)
  %5565 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5566 = trunc i8 %5565 to i1
  br i1 %5566, label %5567, label %5589

5567:                                             ; preds = %5560
  %5568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5569 = call i32 @fileno(ptr noundef %5568) #10
  %5570 = call i32 @isatty(i32 noundef %5569) #10
  %5571 = icmp ne i32 %5570, 0
  br i1 %5571, label %5572, label %5589

5572:                                             ; preds = %5567
  %5573 = load i32, ptr %200, align 4, !tbaa !5
  %5574 = call ptr @__errno_location() #11
  store i32 %5573, ptr %5574, align 4, !tbaa !5
  %5575 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5576 = load i32, ptr @test_count, align 4, !tbaa !5
  %5577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5578 = load i32, ptr %5577, align 4, !tbaa !5
  %5579 = call ptr @s2n_strerror(i32 noundef %5578, ptr noundef @.str.4)
  %5580 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5581 = load i32, ptr %5580, align 4, !tbaa !5
  %5582 = call ptr @s2n_strerror_debug(i32 noundef %5581, ptr noundef @.str.4)
  %5583 = call ptr @__errno_location() #11
  %5584 = load i32, ptr %5583, align 4, !tbaa !5
  %5585 = call ptr @strerror(i32 noundef %5584) #10
  %5586 = call ptr @__errno_location() #11
  %5587 = load i32, ptr %5586, align 4, !tbaa !5
  %5588 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5575, ptr noundef @.str.2, i32 noundef %5576, ptr noundef @.str.69, ptr noundef @.str.1, i32 noundef 656, ptr noundef %5579, ptr noundef %5582, ptr noundef %5585, i32 noundef %5587) #10
  br label %5606

5589:                                             ; preds = %5567, %5560
  %5590 = load i32, ptr %200, align 4, !tbaa !5
  %5591 = call ptr @__errno_location() #11
  store i32 %5590, ptr %5591, align 4, !tbaa !5
  %5592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5593 = load i32, ptr @test_count, align 4, !tbaa !5
  %5594 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5595 = load i32, ptr %5594, align 4, !tbaa !5
  %5596 = call ptr @s2n_strerror(i32 noundef %5595, ptr noundef @.str.4)
  %5597 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5598 = load i32, ptr %5597, align 4, !tbaa !5
  %5599 = call ptr @s2n_strerror_debug(i32 noundef %5598, ptr noundef @.str.4)
  %5600 = call ptr @__errno_location() #11
  %5601 = load i32, ptr %5600, align 4, !tbaa !5
  %5602 = call ptr @strerror(i32 noundef %5601) #10
  %5603 = call ptr @__errno_location() #11
  %5604 = load i32, ptr %5603, align 4, !tbaa !5
  %5605 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5592, ptr noundef @.str.5, i32 noundef %5593, ptr noundef @.str.69, ptr noundef @.str.1, i32 noundef 656, ptr noundef %5596, ptr noundef %5599, ptr noundef %5602, i32 noundef %5604) #10
  br label %5606

5606:                                             ; preds = %5589, %5572
  call void @llvm.lifetime.end.p0(i64 4, ptr %200) #10
  br label %5607

5607:                                             ; preds = %5606
  br label %5608

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

5609:                                             ; No predecessors!
  br label %5610

5610:                                             ; preds = %5609
  br label %5611

5611:                                             ; preds = %5610, %5549
  br label %5612

5612:                                             ; preds = %5611
  br label %5613

5613:                                             ; preds = %5612
  br label %5614

5614:                                             ; preds = %5613
  %5615 = load i32, ptr @test_count, align 4, !tbaa !5
  %5616 = add nsw i32 %5615, 1
  store i32 %5616, ptr @test_count, align 4, !tbaa !5
  %5617 = load ptr, ptr %196, align 8, !tbaa !9
  %5618 = call i32 @s2n_tls13_derive_secret(ptr noundef %5617, i32 noundef 1, i32 noundef 1, ptr noundef %9)
  %5619 = getelementptr inbounds %struct.s2n_result, ptr %201, i32 0, i32 0
  store i32 %5618, ptr %5619, align 4
  %5620 = getelementptr inbounds %struct.s2n_result, ptr %201, i32 0, i32 0
  %5621 = load i32, ptr %5620, align 4
  %5622 = call zeroext i1 @s2n_result_is_ok(i32 %5621)
  br i1 %5622, label %5676, label %5623

5623:                                             ; preds = %5614
  br label %5624

5624:                                             ; preds = %5623
  br label %5625

5625:                                             ; preds = %5624
  call void @llvm.lifetime.start.p0(i64 4, ptr %202) #10
  %5626 = call ptr @__errno_location() #11
  %5627 = load i32, ptr %5626, align 4, !tbaa !5
  store i32 %5627, ptr %202, align 4, !tbaa !5
  %5628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5629 = call i32 @s2n_print_stacktrace(ptr noundef %5628)
  %5630 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5631 = trunc i8 %5630 to i1
  br i1 %5631, label %5632, label %5654

5632:                                             ; preds = %5625
  %5633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5634 = call i32 @fileno(ptr noundef %5633) #10
  %5635 = call i32 @isatty(i32 noundef %5634) #10
  %5636 = icmp ne i32 %5635, 0
  br i1 %5636, label %5637, label %5654

5637:                                             ; preds = %5632
  %5638 = load i32, ptr %202, align 4, !tbaa !5
  %5639 = call ptr @__errno_location() #11
  store i32 %5638, ptr %5639, align 4, !tbaa !5
  %5640 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5641 = load i32, ptr @test_count, align 4, !tbaa !5
  %5642 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5643 = load i32, ptr %5642, align 4, !tbaa !5
  %5644 = call ptr @s2n_strerror(i32 noundef %5643, ptr noundef @.str.4)
  %5645 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5646 = load i32, ptr %5645, align 4, !tbaa !5
  %5647 = call ptr @s2n_strerror_debug(i32 noundef %5646, ptr noundef @.str.4)
  %5648 = call ptr @__errno_location() #11
  %5649 = load i32, ptr %5648, align 4, !tbaa !5
  %5650 = call ptr @strerror(i32 noundef %5649) #10
  %5651 = call ptr @__errno_location() #11
  %5652 = load i32, ptr %5651, align 4, !tbaa !5
  %5653 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5640, ptr noundef @.str.2, i32 noundef %5641, ptr noundef @.str.70, ptr noundef @.str.1, i32 noundef 659, ptr noundef %5644, ptr noundef %5647, ptr noundef %5650, i32 noundef %5652) #10
  br label %5671

5654:                                             ; preds = %5632, %5625
  %5655 = load i32, ptr %202, align 4, !tbaa !5
  %5656 = call ptr @__errno_location() #11
  store i32 %5655, ptr %5656, align 4, !tbaa !5
  %5657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5658 = load i32, ptr @test_count, align 4, !tbaa !5
  %5659 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5660 = load i32, ptr %5659, align 4, !tbaa !5
  %5661 = call ptr @s2n_strerror(i32 noundef %5660, ptr noundef @.str.4)
  %5662 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5663 = load i32, ptr %5662, align 4, !tbaa !5
  %5664 = call ptr @s2n_strerror_debug(i32 noundef %5663, ptr noundef @.str.4)
  %5665 = call ptr @__errno_location() #11
  %5666 = load i32, ptr %5665, align 4, !tbaa !5
  %5667 = call ptr @strerror(i32 noundef %5666) #10
  %5668 = call ptr @__errno_location() #11
  %5669 = load i32, ptr %5668, align 4, !tbaa !5
  %5670 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5657, ptr noundef @.str.5, i32 noundef %5658, ptr noundef @.str.70, ptr noundef @.str.1, i32 noundef 659, ptr noundef %5661, ptr noundef %5664, ptr noundef %5667, i32 noundef %5669) #10
  br label %5671

5671:                                             ; preds = %5654, %5637
  call void @llvm.lifetime.end.p0(i64 4, ptr %202) #10
  br label %5672

5672:                                             ; preds = %5671
  br label %5673

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

5674:                                             ; No predecessors!
  br label %5675

5675:                                             ; preds = %5674
  br label %5676

5676:                                             ; preds = %5675, %5614
  br label %5677

5677:                                             ; preds = %5676
  br label %5678

5678:                                             ; preds = %5677
  br label %5679

5679:                                             ; preds = %5678
  %5680 = load i32, ptr @test_count, align 4, !tbaa !5
  %5681 = add nsw i32 %5680, 1
  store i32 %5681, ptr @test_count, align 4, !tbaa !5
  %5682 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 1
  %5683 = load i32, ptr %5682, align 8, !tbaa !48
  %5684 = getelementptr inbounds %struct.s2n_blob, ptr %193, i32 0, i32 1
  %5685 = load i32, ptr %5684, align 8, !tbaa !48
  %5686 = icmp eq i32 %5683, %5685
  br i1 %5686, label %5740, label %5687

5687:                                             ; preds = %5679
  br label %5688

5688:                                             ; preds = %5687
  br label %5689

5689:                                             ; preds = %5688
  call void @llvm.lifetime.start.p0(i64 4, ptr %203) #10
  %5690 = call ptr @__errno_location() #11
  %5691 = load i32, ptr %5690, align 4, !tbaa !5
  store i32 %5691, ptr %203, align 4, !tbaa !5
  %5692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5693 = call i32 @s2n_print_stacktrace(ptr noundef %5692)
  %5694 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5695 = trunc i8 %5694 to i1
  br i1 %5695, label %5696, label %5718

5696:                                             ; preds = %5689
  %5697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5698 = call i32 @fileno(ptr noundef %5697) #10
  %5699 = call i32 @isatty(i32 noundef %5698) #10
  %5700 = icmp ne i32 %5699, 0
  br i1 %5700, label %5701, label %5718

5701:                                             ; preds = %5696
  %5702 = load i32, ptr %203, align 4, !tbaa !5
  %5703 = call ptr @__errno_location() #11
  store i32 %5702, ptr %5703, align 4, !tbaa !5
  %5704 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5705 = load i32, ptr @test_count, align 4, !tbaa !5
  %5706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5707 = load i32, ptr %5706, align 4, !tbaa !5
  %5708 = call ptr @s2n_strerror(i32 noundef %5707, ptr noundef @.str.4)
  %5709 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5710 = load i32, ptr %5709, align 4, !tbaa !5
  %5711 = call ptr @s2n_strerror_debug(i32 noundef %5710, ptr noundef @.str.4)
  %5712 = call ptr @__errno_location() #11
  %5713 = load i32, ptr %5712, align 4, !tbaa !5
  %5714 = call ptr @strerror(i32 noundef %5713) #10
  %5715 = call ptr @__errno_location() #11
  %5716 = load i32, ptr %5715, align 4, !tbaa !5
  %5717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5704, ptr noundef @.str.2, i32 noundef %5705, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 660, ptr noundef %5708, ptr noundef %5711, ptr noundef %5714, i32 noundef %5716) #10
  br label %5735

5718:                                             ; preds = %5696, %5689
  %5719 = load i32, ptr %203, align 4, !tbaa !5
  %5720 = call ptr @__errno_location() #11
  store i32 %5719, ptr %5720, align 4, !tbaa !5
  %5721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5722 = load i32, ptr @test_count, align 4, !tbaa !5
  %5723 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5724 = load i32, ptr %5723, align 4, !tbaa !5
  %5725 = call ptr @s2n_strerror(i32 noundef %5724, ptr noundef @.str.4)
  %5726 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5727 = load i32, ptr %5726, align 4, !tbaa !5
  %5728 = call ptr @s2n_strerror_debug(i32 noundef %5727, ptr noundef @.str.4)
  %5729 = call ptr @__errno_location() #11
  %5730 = load i32, ptr %5729, align 4, !tbaa !5
  %5731 = call ptr @strerror(i32 noundef %5730) #10
  %5732 = call ptr @__errno_location() #11
  %5733 = load i32, ptr %5732, align 4, !tbaa !5
  %5734 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5721, ptr noundef @.str.5, i32 noundef %5722, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 660, ptr noundef %5725, ptr noundef %5728, ptr noundef %5731, i32 noundef %5733) #10
  br label %5735

5735:                                             ; preds = %5718, %5701
  call void @llvm.lifetime.end.p0(i64 4, ptr %203) #10
  br label %5736

5736:                                             ; preds = %5735
  br label %5737

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

5738:                                             ; No predecessors!
  br label %5739

5739:                                             ; preds = %5738
  br label %5740

5740:                                             ; preds = %5739, %5679
  br label %5741

5741:                                             ; preds = %5740
  br label %5742

5742:                                             ; preds = %5741
  br label %5743

5743:                                             ; preds = %5742
  %5744 = getelementptr inbounds %struct.s2n_blob, ptr %193, i32 0, i32 1
  %5745 = load i32, ptr %5744, align 8, !tbaa !48
  %5746 = icmp ne i32 %5745, 0
  br i1 %5746, label %5747, label %5816

5747:                                             ; preds = %5743
  br label %5748

5748:                                             ; preds = %5747
  %5749 = load i32, ptr @test_count, align 4, !tbaa !5
  %5750 = add nsw i32 %5749, 1
  store i32 %5750, ptr @test_count, align 4, !tbaa !5
  %5751 = getelementptr inbounds %struct.s2n_blob, ptr %9, i32 0, i32 0
  %5752 = load ptr, ptr %5751, align 8, !tbaa !49
  %5753 = getelementptr inbounds %struct.s2n_blob, ptr %193, i32 0, i32 0
  %5754 = load ptr, ptr %5753, align 8, !tbaa !49
  %5755 = getelementptr inbounds %struct.s2n_blob, ptr %193, i32 0, i32 1
  %5756 = load i32, ptr %5755, align 8, !tbaa !48
  %5757 = zext i32 %5756 to i64
  %5758 = call i32 @memcmp(ptr noundef %5752, ptr noundef %5754, i64 noundef %5757) #13
  %5759 = icmp eq i32 %5758, 0
  br i1 %5759, label %5813, label %5760

5760:                                             ; preds = %5748
  br label %5761

5761:                                             ; preds = %5760
  br label %5762

5762:                                             ; preds = %5761
  call void @llvm.lifetime.start.p0(i64 4, ptr %204) #10
  %5763 = call ptr @__errno_location() #11
  %5764 = load i32, ptr %5763, align 4, !tbaa !5
  store i32 %5764, ptr %204, align 4, !tbaa !5
  %5765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5766 = call i32 @s2n_print_stacktrace(ptr noundef %5765)
  %5767 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5768 = trunc i8 %5767 to i1
  br i1 %5768, label %5769, label %5791

5769:                                             ; preds = %5762
  %5770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5771 = call i32 @fileno(ptr noundef %5770) #10
  %5772 = call i32 @isatty(i32 noundef %5771) #10
  %5773 = icmp ne i32 %5772, 0
  br i1 %5773, label %5774, label %5791

5774:                                             ; preds = %5769
  %5775 = load i32, ptr %204, align 4, !tbaa !5
  %5776 = call ptr @__errno_location() #11
  store i32 %5775, ptr %5776, align 4, !tbaa !5
  %5777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5778 = load i32, ptr @test_count, align 4, !tbaa !5
  %5779 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5780 = load i32, ptr %5779, align 4, !tbaa !5
  %5781 = call ptr @s2n_strerror(i32 noundef %5780, ptr noundef @.str.4)
  %5782 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5783 = load i32, ptr %5782, align 4, !tbaa !5
  %5784 = call ptr @s2n_strerror_debug(i32 noundef %5783, ptr noundef @.str.4)
  %5785 = call ptr @__errno_location() #11
  %5786 = load i32, ptr %5785, align 4, !tbaa !5
  %5787 = call ptr @strerror(i32 noundef %5786) #10
  %5788 = call ptr @__errno_location() #11
  %5789 = load i32, ptr %5788, align 4, !tbaa !5
  %5790 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5777, ptr noundef @.str.2, i32 noundef %5778, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 661, ptr noundef %5781, ptr noundef %5784, ptr noundef %5787, i32 noundef %5789) #10
  br label %5808

5791:                                             ; preds = %5769, %5762
  %5792 = load i32, ptr %204, align 4, !tbaa !5
  %5793 = call ptr @__errno_location() #11
  store i32 %5792, ptr %5793, align 4, !tbaa !5
  %5794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5795 = load i32, ptr @test_count, align 4, !tbaa !5
  %5796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5797 = load i32, ptr %5796, align 4, !tbaa !5
  %5798 = call ptr @s2n_strerror(i32 noundef %5797, ptr noundef @.str.4)
  %5799 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5800 = load i32, ptr %5799, align 4, !tbaa !5
  %5801 = call ptr @s2n_strerror_debug(i32 noundef %5800, ptr noundef @.str.4)
  %5802 = call ptr @__errno_location() #11
  %5803 = load i32, ptr %5802, align 4, !tbaa !5
  %5804 = call ptr @strerror(i32 noundef %5803) #10
  %5805 = call ptr @__errno_location() #11
  %5806 = load i32, ptr %5805, align 4, !tbaa !5
  %5807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5794, ptr noundef @.str.5, i32 noundef %5795, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 661, ptr noundef %5798, ptr noundef %5801, ptr noundef %5804, i32 noundef %5806) #10
  br label %5808

5808:                                             ; preds = %5791, %5774
  call void @llvm.lifetime.end.p0(i64 4, ptr %204) #10
  br label %5809

5809:                                             ; preds = %5808
  br label %5810

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

5811:                                             ; No predecessors!
  br label %5812

5812:                                             ; preds = %5811
  br label %5813

5813:                                             ; preds = %5812, %5748
  br label %5814

5814:                                             ; preds = %5813
  br label %5815

5815:                                             ; preds = %5814
  br label %5816

5816:                                             ; preds = %5815, %5743
  br label %5817

5817:                                             ; preds = %5816
  br label %5818

5818:                                             ; preds = %5817
  %5819 = call i32 @s2n_connection_ptr_free(ptr noundef %196)
  %5820 = getelementptr inbounds %struct.s2n_result, ptr %205, i32 0, i32 0
  store i32 %5819, ptr %5820, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #10
  br label %5821

5821:                                             ; preds = %5818
  %5822 = load i64, ptr %195, align 8, !tbaa !15
  %5823 = add i64 %5822, 1
  store i64 %5823, ptr %195, align 8, !tbaa !15
  br label %5470, !llvm.loop !72

5824:                                             ; preds = %5473
  store i32 0, ptr %14, align 4
  br label %5825

5825:                                             ; preds = %5824, %5466
  %5826 = call i32 @s2n_free(ptr noundef %193)
  call void @llvm.lifetime.end.p0(i64 24, ptr %193) #10
  br label %5827

5827:                                             ; preds = %5825, %5456
  %5828 = call i32 @s2n_free(ptr noundef %191)
  call void @llvm.lifetime.end.p0(i64 24, ptr %191) #10
  %5829 = load i32, ptr %14, align 4
  switch i32 %5829, label %5831 [
    i32 0, label %5830
  ]

5830:                                             ; preds = %5827
  store i32 0, ptr %14, align 4
  br label %5831

5831:                                             ; preds = %5830, %5827, %5446, %4424
  %5832 = call i32 @s2n_free(ptr noundef %162)
  call void @llvm.lifetime.end.p0(i64 24, ptr %162) #10
  br label %5833

5833:                                             ; preds = %5831, %4414
  %5834 = call i32 @s2n_free(ptr noundef %160)
  call void @llvm.lifetime.end.p0(i64 24, ptr %160) #10
  %5835 = load i32, ptr %14, align 4
  switch i32 %5835, label %5991 [
    i32 0, label %5836
  ]

5836:                                             ; preds = %5833
  br label %5837

5837:                                             ; preds = %5836
  br label %5838

5838:                                             ; preds = %5837
  %5839 = call i32 @s2n_cleanup()
  %5840 = icmp eq i32 %5839, -1
  br i1 %5840, label %5841, label %5894

5841:                                             ; preds = %5838
  br label %5842

5842:                                             ; preds = %5841
  br label %5843

5843:                                             ; preds = %5842
  call void @llvm.lifetime.start.p0(i64 4, ptr %206) #10
  %5844 = call ptr @__errno_location() #11
  %5845 = load i32, ptr %5844, align 4, !tbaa !5
  store i32 %5845, ptr %206, align 4, !tbaa !5
  %5846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5847 = call i32 @s2n_print_stacktrace(ptr noundef %5846)
  %5848 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5849 = trunc i8 %5848 to i1
  br i1 %5849, label %5850, label %5872

5850:                                             ; preds = %5843
  %5851 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5852 = call i32 @fileno(ptr noundef %5851) #10
  %5853 = call i32 @isatty(i32 noundef %5852) #10
  %5854 = icmp ne i32 %5853, 0
  br i1 %5854, label %5855, label %5872

5855:                                             ; preds = %5850
  %5856 = load i32, ptr %206, align 4, !tbaa !5
  %5857 = call ptr @__errno_location() #11
  store i32 %5856, ptr %5857, align 4, !tbaa !5
  %5858 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5859 = load i32, ptr @test_count, align 4, !tbaa !5
  %5860 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5861 = load i32, ptr %5860, align 4, !tbaa !5
  %5862 = call ptr @s2n_strerror(i32 noundef %5861, ptr noundef @.str.4)
  %5863 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5864 = load i32, ptr %5863, align 4, !tbaa !5
  %5865 = call ptr @s2n_strerror_debug(i32 noundef %5864, ptr noundef @.str.4)
  %5866 = call ptr @__errno_location() #11
  %5867 = load i32, ptr %5866, align 4, !tbaa !5
  %5868 = call ptr @strerror(i32 noundef %5867) #10
  %5869 = call ptr @__errno_location() #11
  %5870 = load i32, ptr %5869, align 4, !tbaa !5
  %5871 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5858, ptr noundef @.str.2, i32 noundef %5859, ptr noundef @.str.71, ptr noundef @.str.1, i32 noundef 666, ptr noundef %5862, ptr noundef %5865, ptr noundef %5868, i32 noundef %5870) #10
  br label %5889

5872:                                             ; preds = %5850, %5843
  %5873 = load i32, ptr %206, align 4, !tbaa !5
  %5874 = call ptr @__errno_location() #11
  store i32 %5873, ptr %5874, align 4, !tbaa !5
  %5875 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5876 = load i32, ptr @test_count, align 4, !tbaa !5
  %5877 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5878 = load i32, ptr %5877, align 4, !tbaa !5
  %5879 = call ptr @s2n_strerror(i32 noundef %5878, ptr noundef @.str.4)
  %5880 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5881 = load i32, ptr %5880, align 4, !tbaa !5
  %5882 = call ptr @s2n_strerror_debug(i32 noundef %5881, ptr noundef @.str.4)
  %5883 = call ptr @__errno_location() #11
  %5884 = load i32, ptr %5883, align 4, !tbaa !5
  %5885 = call ptr @strerror(i32 noundef %5884) #10
  %5886 = call ptr @__errno_location() #11
  %5887 = load i32, ptr %5886, align 4, !tbaa !5
  %5888 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5875, ptr noundef @.str.5, i32 noundef %5876, ptr noundef @.str.71, ptr noundef @.str.1, i32 noundef 666, ptr noundef %5879, ptr noundef %5882, ptr noundef %5885, i32 noundef %5887) #10
  br label %5889

5889:                                             ; preds = %5872, %5855
  call void @llvm.lifetime.end.p0(i64 4, ptr %206) #10
  br label %5890

5890:                                             ; preds = %5889
  br label %5891

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

5892:                                             ; No predecessors!
  br label %5893

5893:                                             ; preds = %5892
  br label %5894

5894:                                             ; preds = %5893, %5838
  br label %5895

5895:                                             ; preds = %5894
  br label %5896

5896:                                             ; preds = %5895
  br label %5897

5897:                                             ; preds = %5896
  br label %5898

5898:                                             ; preds = %5897
  %5899 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %5900 = icmp eq i32 %5899, -1
  br i1 %5900, label %5901, label %5954

5901:                                             ; preds = %5898
  br label %5902

5902:                                             ; preds = %5901
  br label %5903

5903:                                             ; preds = %5902
  call void @llvm.lifetime.start.p0(i64 4, ptr %207) #10
  %5904 = call ptr @__errno_location() #11
  %5905 = load i32, ptr %5904, align 4, !tbaa !5
  store i32 %5905, ptr %207, align 4, !tbaa !5
  %5906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5907 = call i32 @s2n_print_stacktrace(ptr noundef %5906)
  %5908 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5909 = trunc i8 %5908 to i1
  br i1 %5909, label %5910, label %5932

5910:                                             ; preds = %5903
  %5911 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5912 = call i32 @fileno(ptr noundef %5911) #10
  %5913 = call i32 @isatty(i32 noundef %5912) #10
  %5914 = icmp ne i32 %5913, 0
  br i1 %5914, label %5915, label %5932

5915:                                             ; preds = %5910
  %5916 = load i32, ptr %207, align 4, !tbaa !5
  %5917 = call ptr @__errno_location() #11
  store i32 %5916, ptr %5917, align 4, !tbaa !5
  %5918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5919 = load i32, ptr @test_count, align 4, !tbaa !5
  %5920 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5921 = load i32, ptr %5920, align 4, !tbaa !5
  %5922 = call ptr @s2n_strerror(i32 noundef %5921, ptr noundef @.str.4)
  %5923 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5924 = load i32, ptr %5923, align 4, !tbaa !5
  %5925 = call ptr @s2n_strerror_debug(i32 noundef %5924, ptr noundef @.str.4)
  %5926 = call ptr @__errno_location() #11
  %5927 = load i32, ptr %5926, align 4, !tbaa !5
  %5928 = call ptr @strerror(i32 noundef %5927) #10
  %5929 = call ptr @__errno_location() #11
  %5930 = load i32, ptr %5929, align 4, !tbaa !5
  %5931 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5918, ptr noundef @.str.2, i32 noundef %5919, ptr noundef @.str.72, ptr noundef @.str.1, i32 noundef 666, ptr noundef %5922, ptr noundef %5925, ptr noundef %5928, i32 noundef %5930) #10
  br label %5949

5932:                                             ; preds = %5910, %5903
  %5933 = load i32, ptr %207, align 4, !tbaa !5
  %5934 = call ptr @__errno_location() #11
  store i32 %5933, ptr %5934, align 4, !tbaa !5
  %5935 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5936 = load i32, ptr @test_count, align 4, !tbaa !5
  %5937 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5938 = load i32, ptr %5937, align 4, !tbaa !5
  %5939 = call ptr @s2n_strerror(i32 noundef %5938, ptr noundef @.str.4)
  %5940 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5941 = load i32, ptr %5940, align 4, !tbaa !5
  %5942 = call ptr @s2n_strerror_debug(i32 noundef %5941, ptr noundef @.str.4)
  %5943 = call ptr @__errno_location() #11
  %5944 = load i32, ptr %5943, align 4, !tbaa !5
  %5945 = call ptr @strerror(i32 noundef %5944) #10
  %5946 = call ptr @__errno_location() #11
  %5947 = load i32, ptr %5946, align 4, !tbaa !5
  %5948 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5935, ptr noundef @.str.5, i32 noundef %5936, ptr noundef @.str.72, ptr noundef @.str.1, i32 noundef 666, ptr noundef %5939, ptr noundef %5942, ptr noundef %5945, i32 noundef %5947) #10
  br label %5949

5949:                                             ; preds = %5932, %5915
  call void @llvm.lifetime.end.p0(i64 4, ptr %207) #10
  br label %5950

5950:                                             ; preds = %5949
  br label %5951

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

5952:                                             ; No predecessors!
  br label %5953

5953:                                             ; preds = %5952
  br label %5954

5954:                                             ; preds = %5953, %5898
  br label %5955

5955:                                             ; preds = %5954
  br label %5956

5956:                                             ; preds = %5955
  %5957 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5958 = trunc i8 %5957 to i1
  br i1 %5958, label %5959, label %5975

5959:                                             ; preds = %5956
  %5960 = load ptr, ptr @stdout, align 8, !tbaa !9
  %5961 = call i32 @fileno(ptr noundef %5960) #10
  %5962 = call i32 @isatty(i32 noundef %5961) #10
  %5963 = icmp ne i32 %5962, 0
  br i1 %5963, label %5964, label %5975

5964:                                             ; preds = %5959
  %5965 = load i32, ptr @test_count, align 4, !tbaa !5
  %5966 = icmp ne i32 %5965, 0
  br i1 %5966, label %5967, label %5971

5967:                                             ; preds = %5964
  %5968 = load ptr, ptr @stdout, align 8, !tbaa !9
  %5969 = load i32, ptr @test_count, align 4, !tbaa !5
  %5970 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5968, ptr noundef @.str.73, i32 noundef %5969) #10
  br label %5974

5971:                                             ; preds = %5964
  %5972 = load ptr, ptr @stdout, align 8, !tbaa !9
  %5973 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5972, ptr noundef @.str.74) #10
  br label %5974

5974:                                             ; preds = %5971, %5967
  br label %5986

5975:                                             ; preds = %5959, %5956
  %5976 = load i32, ptr @test_count, align 4, !tbaa !5
  %5977 = icmp ne i32 %5976, 0
  br i1 %5977, label %5978, label %5982

5978:                                             ; preds = %5975
  %5979 = load ptr, ptr @stdout, align 8, !tbaa !9
  %5980 = load i32, ptr @test_count, align 4, !tbaa !5
  %5981 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5979, ptr noundef @.str.75, i32 noundef %5980) #10
  br label %5985

5982:                                             ; preds = %5975
  %5983 = load ptr, ptr @stdout, align 8, !tbaa !9
  %5984 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5983, ptr noundef @.str.76) #10
  br label %5985

5985:                                             ; preds = %5982, %5978
  br label %5986

5986:                                             ; preds = %5985, %5974
  store i32 0, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %5991

5987:                                             ; No predecessors!
  br label %5988

5988:                                             ; preds = %5987
  br label %5989

5989:                                             ; preds = %5988
  br label %5990

5990:                                             ; preds = %5989
  store i32 0, ptr %14, align 4
  br label %5991

5991:                                             ; preds = %5990, %5986, %5833, %4404
  call void @llvm.lifetime.end.p0(i64 48, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #10
  %5992 = load i32, ptr %14, align 4
  switch i32 %5992, label %5995 [
    i32 0, label %5993
    i32 1, label %5993
  ]

5993:                                             ; preds = %5991, %5991
  %5994 = load i32, ptr %3, align 4
  ret i32 %5994

5995:                                             ; preds = %5991
  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

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

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

declare i32 @s2n_free(ptr noundef) #2

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

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

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

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

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

declare ptr @EVP_PKEY_new_raw_private_key(i32 noundef, ptr noundef, ptr noundef, i64 noundef) #2

declare ptr @EVP_PKEY_new_raw_public_key(i32 noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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

declare i32 @s2n_derive_resumption_master_secret(ptr noundef) #2

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

declare ptr @s2n_test_psk_new(ptr noundef) #2

declare i32 @s2n_psk_free(ptr noundef) #2

declare i32 @s2n_psk_set_secret(ptr noundef, ptr noundef, i16 noundef zeroext) #2

declare i32 @s2n_extract_early_secret(ptr noundef) #2

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

declare i32 @s2n_cleanup() #2

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


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

%struct.s2n_blob = type { ptr, i32, i32, i8 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@cipher_suite = external dso_local local_unnamed_addr global ptr, align 8
@curve = external dso_local local_unnamed_addr global ptr, align 8
@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 [89 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 [85 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [115 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [118 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [25 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_blob, align 8
  %4 = alloca [48 x i8], align 16
  %5 = alloca %struct.s2n_blob, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %struct.s2n_blob, align 8
  %8 = alloca %struct.s2n_blob, align 8
  %9 = alloca %struct.s2n_blob, align 8
  %10 = alloca %struct.s2n_blob, align 8
  %11 = alloca %struct.s2n_blob, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %struct.s2n_blob, align 8
  %15 = alloca %struct.s2n_blob, align 8
  %16 = alloca %struct.s2n_blob, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %struct.s2n_blob, align 8
  %19 = alloca %struct.s2n_blob, align 8
  %20 = alloca %struct.s2n_blob, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %struct.s2n_blob, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %struct.s2n_blob, align 8
  %25 = alloca %struct.s2n_blob, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %struct.s2n_blob, align 8
  %28 = alloca %struct.s2n_blob, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %struct.s2n_blob, align 8
  %31 = alloca %struct.s2n_blob, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %struct.s2n_blob, align 8
  %34 = alloca %struct.s2n_blob, align 8
  %35 = alloca ptr, align 8
  %36 = alloca %struct.s2n_blob, align 8
  %37 = alloca %struct.s2n_blob, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca %struct.s2n_blob, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %struct.s2n_blob, align 8
  %44 = alloca %struct.s2n_blob, align 8
  %45 = alloca ptr, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %46 = load ptr, ptr @stdout, align 8, !tbaa !9
  %47 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %46, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #11
  %48 = load ptr, ptr @stdout, align 8, !tbaa !9
  %49 = tail call i32 @fflush(ptr noundef %48)
  %50 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #11
  %51 = icmp eq i32 %50, -1
  br i1 %51, label %52, label %76

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

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

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

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

76:                                               ; preds = %2
  %77 = load i32, ptr @test_count, align 4, !tbaa !5
  %78 = add nsw i32 %77, 1
  store i32 %78, ptr @test_count, align 4, !tbaa !5
  %79 = tail call i32 @s2n_enable_atexit() #11
  %80 = icmp eq i32 %79, -1
  br i1 %80, label %81, label %105

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

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

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

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

105:                                              ; preds = %76
  %106 = tail call i32 @s2n_init() #11
  %107 = icmp eq i32 %106, -1
  br i1 %107, label %108, label %132

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

115:                                              ; preds = %108
  %116 = load ptr, ptr @stderr, align 8, !tbaa !9
  %117 = tail call i32 @fileno(ptr noundef %116) #11
  %118 = tail call i32 @isatty(i32 noundef %117) #11
  %.not434 = icmp eq i32 %118, 0
  br i1 %.not434, label %119, label %120

119:                                              ; preds = %115, %108
  br label %120

120:                                              ; preds = %115, %119
  %.str.5.sink534 = phi ptr [ @.str.5, %119 ], [ @.str.2, %115 ]
  store i32 %110, ptr %109, align 4, !tbaa !5
  %121 = load ptr, ptr @stderr, align 8, !tbaa !9
  %122 = load i32, ptr @test_count, align 4, !tbaa !5
  %123 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %124 = load i32, ptr %123, align 4, !tbaa !5
  %125 = tail call ptr @s2n_strerror(i32 noundef %124, ptr noundef nonnull @.str.4) #11
  %126 = load i32, ptr %123, align 4, !tbaa !5
  %127 = tail call ptr @s2n_strerror_debug(i32 noundef %126, ptr noundef nonnull @.str.4) #11
  %128 = load i32, ptr %109, align 4, !tbaa !5
  %129 = tail call ptr @strerror(i32 noundef %128) #11
  %130 = load i32, ptr %109, align 4, !tbaa !5
  %131 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %121, ptr noundef nonnull %.str.5.sink534, i32 noundef %122, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 41, ptr noundef %125, ptr noundef %127, ptr noundef %129, i32 noundef %130) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

132:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %4, i8 0, i64 48, i1 false)
  %133 = load i32, ptr @test_count, align 4, !tbaa !5
  %134 = add nsw i32 %133, 1
  store i32 %134, ptr @test_count, align 4, !tbaa !5
  %135 = call i32 @s2n_blob_init(ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 48) #11
  %136 = icmp eq i32 %135, -1
  br i1 %136, label %137, label %161

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

144:                                              ; preds = %137
  %145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %146 = call i32 @fileno(ptr noundef %145) #11
  %147 = call i32 @isatty(i32 noundef %146) #11
  %.not433 = icmp eq i32 %147, 0
  br i1 %.not433, label %148, label %149

148:                                              ; preds = %144, %137
  br label %149

149:                                              ; preds = %144, %148
  %.str.5.sink545 = phi ptr [ @.str.5, %148 ], [ @.str.2, %144 ]
  store i32 %139, ptr %138, align 4, !tbaa !5
  %150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %151 = load i32, ptr @test_count, align 4, !tbaa !5
  %152 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %153 = load i32, ptr %152, align 4, !tbaa !5
  %154 = call ptr @s2n_strerror(i32 noundef %153, ptr noundef nonnull @.str.4) #11
  %155 = load i32, ptr %152, align 4, !tbaa !5
  %156 = call ptr @s2n_strerror_debug(i32 noundef %155, ptr noundef nonnull @.str.4) #11
  %157 = load i32, ptr %138, align 4, !tbaa !5
  %158 = call ptr @strerror(i32 noundef %157) #11
  %159 = load i32, ptr %138, align 4, !tbaa !5
  %160 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %150, ptr noundef nonnull %.str.5.sink545, i32 noundef %151, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 46, ptr noundef %154, ptr noundef %156, ptr noundef %158, i32 noundef %159) #13
  call void @exit(i32 noundef 1) #14
  unreachable

161:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false)
  %162 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %5, ptr noundef nonnull @.str.9) #11
  %163 = call zeroext i1 @s2n_result_is_ok(i32 %162)
  br i1 %163, label %.preheader484, label %.thread460

.preheader484:                                    ; preds = %161
  %164 = getelementptr inbounds i8, ptr %5, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #11
  %165 = load i32, ptr @modes, align 4, !tbaa !5
  %166 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %166, ptr %6, align 8, !tbaa !9
  %167 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %168 = getelementptr inbounds i8, ptr %166, i64 232
  %169 = load ptr, ptr %168, align 8, !tbaa !15
  store ptr %167, ptr %169, align 8, !tbaa !42
  %170 = load i32, ptr @test_count, align 4, !tbaa !5
  %171 = add nsw i32 %170, 1
  store i32 %171, ptr @test_count, align 4, !tbaa !5
  %172 = load ptr, ptr %6, align 8, !tbaa !9
  %173 = call i32 @s2n_tls13_extract_secret(ptr noundef %172, i32 noundef 1) #11
  %174 = call zeroext i1 @s2n_result_is_ok(i32 %173)
  br i1 %174, label %200, label %176

.thread460:                                       ; preds = %161
  %175 = call i32 @s2n_free(ptr noundef nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #11
  br label %3047

176:                                              ; preds = %262, %.preheader484
  %177 = tail call ptr @__errno_location() #12
  %178 = load i32, ptr %177, align 4, !tbaa !5
  %179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %180 = call i32 @s2n_print_stacktrace(ptr noundef %179) #11
  %181 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %182 = trunc nuw i8 %181 to i1
  br i1 %182, label %183, label %187

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

187:                                              ; preds = %183, %176
  br label %188

188:                                              ; preds = %183, %187
  %.str.5.sink556 = phi ptr [ @.str.5, %187 ], [ @.str.2, %183 ]
  store i32 %178, ptr %177, align 4, !tbaa !5
  %189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %190 = load i32, ptr @test_count, align 4, !tbaa !5
  %191 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %192 = load i32, ptr %191, align 4, !tbaa !5
  %193 = call ptr @s2n_strerror(i32 noundef %192, ptr noundef nonnull @.str.4) #11
  %194 = load i32, ptr %191, align 4, !tbaa !5
  %195 = call ptr @s2n_strerror_debug(i32 noundef %194, ptr noundef nonnull @.str.4) #11
  %196 = load i32, ptr %177, align 4, !tbaa !5
  %197 = call ptr @strerror(i32 noundef %196) #11
  %198 = load i32, ptr %177, align 4, !tbaa !5
  %199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %189, ptr noundef nonnull %.str.5.sink556, i32 noundef %190, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 78, ptr noundef %193, ptr noundef %195, ptr noundef %197, i32 noundef %198) #13
  call void @exit(i32 noundef 1) #14
  unreachable

200:                                              ; preds = %.preheader484
  %201 = load i32, ptr %164, align 8, !tbaa !47
  %.not429 = icmp eq i32 %201, 0
  %.pre = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre496 = load ptr, ptr %6, align 8, !tbaa !9
  br i1 %.not429, label %232, label %202

202:                                              ; preds = %200
  %203 = add nsw i32 %.pre, 1
  store i32 %203, ptr @test_count, align 4, !tbaa !5
  %204 = getelementptr inbounds i8, ptr %.pre496, i64 240
  %205 = load ptr, ptr %5, align 8, !tbaa !48
  %206 = zext i32 %201 to i64
  %bcmp430 = call i32 @bcmp(ptr nonnull %204, ptr %205, i64 %206)
  %207 = icmp eq i32 %bcmp430, 0
  br i1 %207, label %232, label %208

208:                                              ; preds = %276, %202
  %209 = tail call ptr @__errno_location() #12
  %210 = load i32, ptr %209, align 4, !tbaa !5
  %211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %212 = call i32 @s2n_print_stacktrace(ptr noundef %211) #11
  %213 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %214 = trunc nuw i8 %213 to i1
  br i1 %214, label %215, label %219

215:                                              ; preds = %208
  %216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %217 = call i32 @fileno(ptr noundef %216) #11
  %218 = call i32 @isatty(i32 noundef %217) #11
  %.not431 = icmp eq i32 %218, 0
  br i1 %.not431, label %219, label %220

219:                                              ; preds = %215, %208
  br label %220

220:                                              ; preds = %215, %219
  %.str.5.sink567 = phi ptr [ @.str.5, %219 ], [ @.str.2, %215 ]
  store i32 %210, ptr %209, align 4, !tbaa !5
  %221 = load ptr, ptr @stderr, align 8, !tbaa !9
  %222 = load i32, ptr @test_count, align 4, !tbaa !5
  %223 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = call ptr @s2n_strerror(i32 noundef %224, ptr noundef nonnull @.str.4) #11
  %226 = load i32, ptr %223, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror_debug(i32 noundef %226, ptr noundef nonnull @.str.4) #11
  %228 = load i32, ptr %209, align 4, !tbaa !5
  %229 = call ptr @strerror(i32 noundef %228) #11
  %230 = load i32, ptr %209, align 4, !tbaa !5
  %231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %221, ptr noundef nonnull %.str.5.sink567, i32 noundef %222, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 80, ptr noundef %225, ptr noundef %227, ptr noundef %229, i32 noundef %230) #13
  call void @exit(i32 noundef 1) #14
  unreachable

232:                                              ; preds = %200, %202
  %233 = phi i32 [ %.pre, %200 ], [ %203, %202 ]
  %234 = add nsw i32 %233, 1
  store i32 %234, ptr @test_count, align 4, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %.pre496, i64 628
  %236 = load i32, ptr %235, align 4, !tbaa !49
  %237 = icmp eq i32 %236, 1
  br i1 %237, label %262, label %238

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

245:                                              ; preds = %238
  %246 = load ptr, ptr @stderr, align 8, !tbaa !9
  %247 = call i32 @fileno(ptr noundef %246) #11
  %248 = call i32 @isatty(i32 noundef %247) #11
  %.not432 = icmp eq i32 %248, 0
  br i1 %.not432, label %249, label %250

249:                                              ; preds = %245, %238
  br label %250

250:                                              ; preds = %245, %249
  %.str.5.sink578 = phi ptr [ @.str.5, %249 ], [ @.str.2, %245 ]
  store i32 %240, ptr %239, align 4, !tbaa !5
  %251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %252 = load i32, ptr @test_count, align 4, !tbaa !5
  %253 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %254 = load i32, ptr %253, align 4, !tbaa !5
  %255 = call ptr @s2n_strerror(i32 noundef %254, ptr noundef nonnull @.str.4) #11
  %256 = load i32, ptr %253, align 4, !tbaa !5
  %257 = call ptr @s2n_strerror_debug(i32 noundef %256, ptr noundef nonnull @.str.4) #11
  %258 = load i32, ptr %239, align 4, !tbaa !5
  %259 = call ptr @strerror(i32 noundef %258) #11
  %260 = load i32, ptr %239, align 4, !tbaa !5
  %261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %251, ptr noundef nonnull %.str.5.sink578, i32 noundef %252, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 81, ptr noundef %255, ptr noundef %257, ptr noundef %259, i32 noundef %260) #13
  call void @exit(i32 noundef 1) #14
  unreachable

262:                                              ; preds = %232
  %263 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #11
  %264 = load i32, ptr getelementptr inbounds (i8, ptr @modes, i64 4), align 4, !tbaa !5
  %265 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %265, ptr %6, align 8, !tbaa !9
  %266 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %267 = getelementptr inbounds i8, ptr %265, i64 232
  %268 = load ptr, ptr %267, align 8, !tbaa !15
  store ptr %266, ptr %268, align 8, !tbaa !42
  %269 = load i32, ptr @test_count, align 4, !tbaa !5
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr @test_count, align 4, !tbaa !5
  %271 = load ptr, ptr %6, align 8, !tbaa !9
  %272 = call i32 @s2n_tls13_extract_secret(ptr noundef %271, i32 noundef 1) #11
  %273 = call zeroext i1 @s2n_result_is_ok(i32 %272)
  br i1 %273, label %274, label %176

274:                                              ; preds = %262
  %275 = load i32, ptr %164, align 8, !tbaa !47
  %.not429.1 = icmp eq i32 %275, 0
  %.pre497 = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre498 = load ptr, ptr %6, align 8, !tbaa !9
  br i1 %.not429.1, label %282, label %276

276:                                              ; preds = %274
  %277 = add nsw i32 %.pre497, 1
  store i32 %277, ptr @test_count, align 4, !tbaa !5
  %278 = getelementptr inbounds i8, ptr %.pre498, i64 240
  %279 = load ptr, ptr %5, align 8, !tbaa !48
  %280 = zext i32 %275 to i64
  %bcmp430.1 = call i32 @bcmp(ptr nonnull %278, ptr %279, i64 %280)
  %281 = icmp eq i32 %bcmp430.1, 0
  br i1 %281, label %282, label %208

282:                                              ; preds = %276, %274
  %283 = phi i32 [ %277, %276 ], [ %.pre497, %274 ]
  %284 = add nsw i32 %283, 1
  store i32 %284, ptr @test_count, align 4, !tbaa !5
  %285 = getelementptr inbounds i8, ptr %.pre498, i64 628
  %286 = load i32, ptr %285, align 4, !tbaa !49
  %287 = icmp eq i32 %286, 1
  br i1 %287, label %288, label %238

288:                                              ; preds = %282
  %289 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, i8 0, i64 24, i1 false)
  %290 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %7, ptr noundef nonnull @.str.13) #11
  %291 = call zeroext i1 @s2n_result_is_ok(i32 %290)
  br i1 %291, label %292, label %2191

292:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, i8 0, i64 24, i1 false)
  %293 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %8, ptr noundef nonnull @.str.14) #11
  %294 = call zeroext i1 @s2n_result_is_ok(i32 %293)
  br i1 %294, label %296, label %.thread

.thread:                                          ; preds = %292
  %295 = call i32 @s2n_free(ptr noundef nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #11
  br label %2191

296:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %9, i8 0, i64 24, i1 false)
  %297 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %9, ptr noundef nonnull @.str.15) #11
  %298 = call zeroext i1 @s2n_result_is_ok(i32 %297)
  br i1 %298, label %299, label %711

299:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false)
  %300 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %10, ptr noundef nonnull @.str.16) #11
  %301 = call zeroext i1 @s2n_result_is_ok(i32 %300)
  br i1 %301, label %302, label %709

302:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, i8 0, i64 24, i1 false)
  %303 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %11, ptr noundef nonnull @.str.17) #11
  %304 = call zeroext i1 @s2n_result_is_ok(i32 %303)
  br i1 %304, label %305, label %707

305:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  %306 = call ptr @s2n_connection_new(i32 noundef 0) #11
  store ptr %306, ptr %12, align 8, !tbaa !9
  %307 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %308 = getelementptr inbounds i8, ptr %306, i64 232
  %309 = load ptr, ptr %308, align 8, !tbaa !15
  store ptr %307, ptr %309, align 8, !tbaa !42
  %310 = load i32, ptr @test_count, align 4, !tbaa !5
  %311 = add nsw i32 %310, 1
  store i32 %311, ptr @test_count, align 4, !tbaa !5
  %312 = load ptr, ptr %12, align 8, !tbaa !9
  %313 = call i32 @s2n_connection_set_test_early_secret(ptr noundef %312, ptr noundef nonnull %5) #11
  %314 = call zeroext i1 @s2n_result_is_ok(i32 %313)
  br i1 %314, label %339, label %315

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

322:                                              ; preds = %315
  %323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %324 = call i32 @fileno(ptr noundef %323) #11
  %325 = call i32 @isatty(i32 noundef %324) #11
  %.not = icmp eq i32 %325, 0
  br i1 %.not, label %326, label %327

326:                                              ; preds = %322, %315
  br label %327

327:                                              ; preds = %322, %326
  %.str.5.sink589 = phi ptr [ @.str.5, %326 ], [ @.str.2, %322 ]
  store i32 %317, ptr %316, align 4, !tbaa !5
  %328 = load ptr, ptr @stderr, align 8, !tbaa !9
  %329 = load i32, ptr @test_count, align 4, !tbaa !5
  %330 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %331 = load i32, ptr %330, align 4, !tbaa !5
  %332 = call ptr @s2n_strerror(i32 noundef %331, ptr noundef nonnull @.str.4) #11
  %333 = load i32, ptr %330, align 4, !tbaa !5
  %334 = call ptr @s2n_strerror_debug(i32 noundef %333, ptr noundef nonnull @.str.4) #11
  %335 = load i32, ptr %316, align 4, !tbaa !5
  %336 = call ptr @strerror(i32 noundef %335) #11
  %337 = load i32, ptr %316, align 4, !tbaa !5
  %338 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %328, ptr noundef nonnull %.str.5.sink589, i32 noundef %329, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 152, ptr noundef %332, ptr noundef %334, ptr noundef %336, i32 noundef %337) #13
  call void @exit(i32 noundef 1) #14
  unreachable

339:                                              ; preds = %305
  %340 = load ptr, ptr @curve, align 8, !tbaa !9
  %341 = load ptr, ptr %12, align 8, !tbaa !9
  %342 = getelementptr inbounds i8, ptr %341, i64 656
  store ptr %340, ptr %342, align 8, !tbaa !50
  %343 = load ptr, ptr %10, align 8, !tbaa !48
  %344 = getelementptr inbounds i8, ptr %10, i64 8
  %345 = load i32, ptr %344, align 8, !tbaa !47
  %346 = zext i32 %345 to i64
  %347 = call ptr @EVP_PKEY_new_raw_private_key(i32 noundef 1034, ptr noundef null, ptr noundef %343, i64 noundef %346) #11
  %348 = load ptr, ptr %12, align 8, !tbaa !9
  %349 = getelementptr inbounds i8, ptr %348, i64 664
  store ptr %347, ptr %349, align 8, !tbaa !51
  %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 = icmp eq ptr %347, null
  br i1 %352, label %353, label %377

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

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

364:                                              ; preds = %360, %353
  br label %365

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

377:                                              ; preds = %339
  %378 = load ptr, ptr @curve, align 8, !tbaa !9
  %379 = getelementptr inbounds i8, ptr %348, i64 704
  store ptr %378, ptr %379, align 8, !tbaa !52
  %380 = load ptr, ptr %9, align 8, !tbaa !48
  %381 = getelementptr inbounds i8, ptr %9, i64 8
  %382 = load i32, ptr %381, align 8, !tbaa !47
  %383 = zext i32 %382 to i64
  %384 = call ptr @EVP_PKEY_new_raw_public_key(i32 noundef 1034, ptr noundef null, ptr noundef %380, i64 noundef %383) #11
  %385 = load ptr, ptr %12, align 8, !tbaa !9
  %386 = getelementptr inbounds i8, ptr %385, i64 712
  store ptr %384, ptr %386, align 8, !tbaa !53
  %387 = load i32, ptr @test_count, align 4, !tbaa !5
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr @test_count, align 4, !tbaa !5
  %389 = icmp eq ptr %384, null
  br i1 %389, label %390, label %414

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

397:                                              ; preds = %390
  %398 = load ptr, ptr @stderr, align 8, !tbaa !9
  %399 = call i32 @fileno(ptr noundef %398) #11
  %400 = call i32 @isatty(i32 noundef %399) #11
  %.not426 = icmp eq i32 %400, 0
  br i1 %.not426, label %401, label %402

401:                                              ; preds = %397, %390
  br label %402

402:                                              ; preds = %397, %401
  %.str.5.sink611 = phi ptr [ @.str.5, %401 ], [ @.str.2, %397 ]
  store i32 %392, ptr %391, align 4, !tbaa !5
  %403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %404 = load i32, ptr @test_count, align 4, !tbaa !5
  %405 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %406 = load i32, ptr %405, align 4, !tbaa !5
  %407 = call ptr @s2n_strerror(i32 noundef %406, ptr noundef nonnull @.str.4) #11
  %408 = load i32, ptr %405, align 4, !tbaa !5
  %409 = call ptr @s2n_strerror_debug(i32 noundef %408, ptr noundef nonnull @.str.4) #11
  %410 = load i32, ptr %391, align 4, !tbaa !5
  %411 = call ptr @strerror(i32 noundef %410) #11
  %412 = load i32, ptr %391, align 4, !tbaa !5
  %413 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %403, ptr noundef nonnull %.str.5.sink611, i32 noundef %404, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 162, ptr noundef %407, ptr noundef %409, ptr noundef %411, i32 noundef %412) #13
  call void @exit(i32 noundef 1) #14
  unreachable

414:                                              ; preds = %377
  %415 = add nsw i32 %387, 2
  store i32 %415, ptr @test_count, align 4, !tbaa !5
  %416 = call i32 @s2n_tls13_extract_secret(ptr noundef nonnull %385, i32 noundef 2) #11
  %417 = call zeroext i1 @s2n_result_is_ok(i32 %416)
  br i1 %417, label %442, label %418

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

425:                                              ; preds = %418
  %426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %427 = call i32 @fileno(ptr noundef %426) #11
  %428 = call i32 @isatty(i32 noundef %427) #11
  %.not326 = icmp eq i32 %428, 0
  br i1 %.not326, label %429, label %430

429:                                              ; preds = %425, %418
  br label %430

430:                                              ; preds = %425, %429
  %.str.5.sink622 = phi ptr [ @.str.5, %429 ], [ @.str.2, %425 ]
  store i32 %420, ptr %419, align 4, !tbaa !5
  %431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %432 = load i32, ptr @test_count, align 4, !tbaa !5
  %433 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %434 = load i32, ptr %433, align 4, !tbaa !5
  %435 = call ptr @s2n_strerror(i32 noundef %434, ptr noundef nonnull @.str.4) #11
  %436 = load i32, ptr %433, align 4, !tbaa !5
  %437 = call ptr @s2n_strerror_debug(i32 noundef %436, ptr noundef nonnull @.str.4) #11
  %438 = load i32, ptr %419, align 4, !tbaa !5
  %439 = call ptr @strerror(i32 noundef %438) #11
  %440 = load i32, ptr %419, align 4, !tbaa !5
  %441 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %431, ptr noundef nonnull %.str.5.sink622, i32 noundef %432, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 164, ptr noundef %435, ptr noundef %437, ptr noundef %439, i32 noundef %440) #13
  call void @exit(i32 noundef 1) #14
  unreachable

442:                                              ; preds = %414
  %443 = getelementptr inbounds i8, ptr %7, i64 8
  %444 = load i32, ptr %443, align 8, !tbaa !47
  %.not327 = icmp eq i32 %444, 0
  %.pre499 = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre500 = load ptr, ptr %12, align 8, !tbaa !9
  br i1 %.not327, label %475, label %445

445:                                              ; preds = %442
  %446 = add nsw i32 %.pre499, 1
  store i32 %446, ptr @test_count, align 4, !tbaa !5
  %447 = getelementptr inbounds i8, ptr %.pre500, i64 240
  %448 = load ptr, ptr %7, align 8, !tbaa !48
  %449 = zext i32 %444 to i64
  %bcmp = call i32 @bcmp(ptr nonnull %447, ptr %448, i64 %449)
  %450 = icmp eq i32 %bcmp, 0
  br i1 %450, label %475, label %451

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

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

462:                                              ; preds = %458, %451
  br label %463

463:                                              ; preds = %458, %462
  %.str.5.sink633 = phi ptr [ @.str.5, %462 ], [ @.str.2, %458 ]
  store i32 %453, ptr %452, align 4, !tbaa !5
  %464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %465 = load i32, ptr @test_count, align 4, !tbaa !5
  %466 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %467 = load i32, ptr %466, align 4, !tbaa !5
  %468 = call ptr @s2n_strerror(i32 noundef %467, ptr noundef nonnull @.str.4) #11
  %469 = load i32, ptr %466, align 4, !tbaa !5
  %470 = call ptr @s2n_strerror_debug(i32 noundef %469, ptr noundef nonnull @.str.4) #11
  %471 = load i32, ptr %452, align 4, !tbaa !5
  %472 = call ptr @strerror(i32 noundef %471) #11
  %473 = load i32, ptr %452, align 4, !tbaa !5
  %474 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %464, ptr noundef nonnull %.str.5.sink633, i32 noundef %465, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 166, ptr noundef %468, ptr noundef %470, ptr noundef %472, i32 noundef %473) #13
  call void @exit(i32 noundef 1) #14
  unreachable

475:                                              ; preds = %442, %445
  %476 = phi i32 [ %.pre499, %442 ], [ %446, %445 ]
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr @test_count, align 4, !tbaa !5
  %478 = getelementptr inbounds i8, ptr %.pre500, i64 628
  %479 = load i32, ptr %478, align 4, !tbaa !49
  %480 = icmp eq i32 %479, 2
  br i1 %480, label %505, label %481

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

488:                                              ; preds = %481
  %489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %490 = call i32 @fileno(ptr noundef %489) #11
  %491 = call i32 @isatty(i32 noundef %490) #11
  %.not329 = icmp eq i32 %491, 0
  br i1 %.not329, label %492, label %493

492:                                              ; preds = %488, %481
  br label %493

493:                                              ; preds = %488, %492
  %.str.5.sink644 = phi ptr [ @.str.5, %492 ], [ @.str.2, %488 ]
  store i32 %483, ptr %482, align 4, !tbaa !5
  %494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %495 = load i32, ptr @test_count, align 4, !tbaa !5
  %496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %497 = load i32, ptr %496, align 4, !tbaa !5
  %498 = call ptr @s2n_strerror(i32 noundef %497, ptr noundef nonnull @.str.4) #11
  %499 = load i32, ptr %496, align 4, !tbaa !5
  %500 = call ptr @s2n_strerror_debug(i32 noundef %499, ptr noundef nonnull @.str.4) #11
  %501 = load i32, ptr %482, align 4, !tbaa !5
  %502 = call ptr @strerror(i32 noundef %501) #11
  %503 = load i32, ptr %482, align 4, !tbaa !5
  %504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %494, ptr noundef nonnull %.str.5.sink644, i32 noundef %495, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 167, ptr noundef %498, ptr noundef %500, ptr noundef %502, i32 noundef %503) #13
  call void @exit(i32 noundef 1) #14
  unreachable

505:                                              ; preds = %475
  %506 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  %507 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %507, ptr %13, align 8, !tbaa !9
  %508 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %509 = getelementptr inbounds i8, ptr %507, i64 232
  %510 = load ptr, ptr %509, align 8, !tbaa !15
  store ptr %508, ptr %510, align 8, !tbaa !42
  %511 = load i32, ptr @test_count, align 4, !tbaa !5
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr @test_count, align 4, !tbaa !5
  %513 = load ptr, ptr %13, align 8, !tbaa !9
  %514 = call i32 @s2n_connection_set_test_early_secret(ptr noundef %513, ptr noundef nonnull %5) #11
  %515 = call zeroext i1 @s2n_result_is_ok(i32 %514)
  br i1 %515, label %540, label %516

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

523:                                              ; preds = %516
  %524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %525 = call i32 @fileno(ptr noundef %524) #11
  %526 = call i32 @isatty(i32 noundef %525) #11
  %.not330 = icmp eq i32 %526, 0
  br i1 %.not330, label %527, label %528

527:                                              ; preds = %523, %516
  br label %528

528:                                              ; preds = %523, %527
  %.str.5.sink655 = phi ptr [ @.str.5, %527 ], [ @.str.2, %523 ]
  store i32 %518, ptr %517, align 4, !tbaa !5
  %529 = load ptr, ptr @stderr, align 8, !tbaa !9
  %530 = load i32, ptr @test_count, align 4, !tbaa !5
  %531 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %532 = load i32, ptr %531, align 4, !tbaa !5
  %533 = call ptr @s2n_strerror(i32 noundef %532, ptr noundef nonnull @.str.4) #11
  %534 = load i32, ptr %531, align 4, !tbaa !5
  %535 = call ptr @s2n_strerror_debug(i32 noundef %534, ptr noundef nonnull @.str.4) #11
  %536 = load i32, ptr %517, align 4, !tbaa !5
  %537 = call ptr @strerror(i32 noundef %536) #11
  %538 = load i32, ptr %517, align 4, !tbaa !5
  %539 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %529, ptr noundef nonnull %.str.5.sink655, i32 noundef %530, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 174, ptr noundef %533, ptr noundef %535, ptr noundef %537, i32 noundef %538) #13
  call void @exit(i32 noundef 1) #14
  unreachable

540:                                              ; preds = %505
  %541 = load ptr, ptr @curve, align 8, !tbaa !9
  %542 = load ptr, ptr %13, align 8, !tbaa !9
  %543 = getelementptr inbounds i8, ptr %542, i64 656
  store ptr %541, ptr %543, align 8, !tbaa !50
  %544 = load ptr, ptr %11, align 8, !tbaa !48
  %545 = getelementptr inbounds i8, ptr %11, i64 8
  %546 = load i32, ptr %545, align 8, !tbaa !47
  %547 = zext i32 %546 to i64
  %548 = call ptr @EVP_PKEY_new_raw_public_key(i32 noundef 1034, ptr noundef null, ptr noundef %544, i64 noundef %547) #11
  %549 = load ptr, ptr %13, align 8, !tbaa !9
  %550 = getelementptr inbounds i8, ptr %549, i64 664
  store ptr %548, ptr %550, align 8, !tbaa !51
  %551 = load i32, ptr @test_count, align 4, !tbaa !5
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr @test_count, align 4, !tbaa !5
  %553 = icmp eq ptr %548, null
  br i1 %553, label %554, label %578

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

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

565:                                              ; preds = %561, %554
  br label %566

566:                                              ; preds = %561, %565
  %.str.5.sink666 = phi ptr [ @.str.5, %565 ], [ @.str.2, %561 ]
  store i32 %556, ptr %555, align 4, !tbaa !5
  %567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %568 = load i32, ptr @test_count, align 4, !tbaa !5
  %569 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %570 = load i32, ptr %569, align 4, !tbaa !5
  %571 = call ptr @s2n_strerror(i32 noundef %570, ptr noundef nonnull @.str.4) #11
  %572 = load i32, ptr %569, align 4, !tbaa !5
  %573 = call ptr @s2n_strerror_debug(i32 noundef %572, ptr noundef nonnull @.str.4) #11
  %574 = load i32, ptr %555, align 4, !tbaa !5
  %575 = call ptr @strerror(i32 noundef %574) #11
  %576 = load i32, ptr %555, align 4, !tbaa !5
  %577 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %567, ptr noundef nonnull %.str.5.sink666, i32 noundef %568, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 179, ptr noundef %571, ptr noundef %573, ptr noundef %575, i32 noundef %576) #13
  call void @exit(i32 noundef 1) #14
  unreachable

578:                                              ; preds = %540
  %579 = load ptr, ptr @curve, align 8, !tbaa !9
  %580 = getelementptr inbounds i8, ptr %549, i64 704
  store ptr %579, ptr %580, align 8, !tbaa !52
  %581 = load ptr, ptr %8, align 8, !tbaa !48
  %582 = getelementptr inbounds i8, ptr %8, i64 8
  %583 = load i32, ptr %582, align 8, !tbaa !47
  %584 = zext i32 %583 to i64
  %585 = call ptr @EVP_PKEY_new_raw_private_key(i32 noundef 1034, ptr noundef null, ptr noundef %581, i64 noundef %584) #11
  %586 = load ptr, ptr %13, align 8, !tbaa !9
  %587 = getelementptr inbounds i8, ptr %586, i64 712
  store ptr %585, ptr %587, align 8, !tbaa !53
  %588 = load i32, ptr @test_count, align 4, !tbaa !5
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr @test_count, align 4, !tbaa !5
  %590 = icmp eq ptr %585, null
  br i1 %590, label %591, label %615

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

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

602:                                              ; preds = %598, %591
  br label %603

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

615:                                              ; preds = %578
  %616 = add nsw i32 %588, 2
  store i32 %616, ptr @test_count, align 4, !tbaa !5
  %617 = call i32 @s2n_tls13_extract_secret(ptr noundef nonnull %586, i32 noundef 2) #11
  %618 = call zeroext i1 @s2n_result_is_ok(i32 %617)
  br i1 %618, label %643, label %619

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

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

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

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

643:                                              ; preds = %615
  %644 = load i32, ptr %443, align 8, !tbaa !47
  %.not332 = icmp eq i32 %644, 0
  %.pre501 = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre502 = load ptr, ptr %13, align 8, !tbaa !9
  br i1 %.not332, label %675, label %645

645:                                              ; preds = %643
  %646 = add nsw i32 %.pre501, 1
  store i32 %646, ptr @test_count, align 4, !tbaa !5
  %647 = getelementptr inbounds i8, ptr %.pre502, i64 240
  %648 = load ptr, ptr %7, align 8, !tbaa !48
  %649 = zext i32 %644 to i64
  %bcmp333 = call i32 @bcmp(ptr nonnull %647, ptr %648, i64 %649)
  %650 = icmp eq i32 %bcmp333, 0
  br i1 %650, label %675, label %651

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

658:                                              ; preds = %651
  %659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %660 = call i32 @fileno(ptr noundef %659) #11
  %661 = call i32 @isatty(i32 noundef %660) #11
  %.not334 = icmp eq i32 %661, 0
  br i1 %.not334, label %662, label %663

662:                                              ; preds = %658, %651
  br label %663

663:                                              ; preds = %658, %662
  %.str.5.sink699 = phi ptr [ @.str.5, %662 ], [ @.str.2, %658 ]
  store i32 %653, ptr %652, align 4, !tbaa !5
  %664 = load ptr, ptr @stderr, align 8, !tbaa !9
  %665 = load i32, ptr @test_count, align 4, !tbaa !5
  %666 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %667 = load i32, ptr %666, align 4, !tbaa !5
  %668 = call ptr @s2n_strerror(i32 noundef %667, ptr noundef nonnull @.str.4) #11
  %669 = load i32, ptr %666, align 4, !tbaa !5
  %670 = call ptr @s2n_strerror_debug(i32 noundef %669, ptr noundef nonnull @.str.4) #11
  %671 = load i32, ptr %652, align 4, !tbaa !5
  %672 = call ptr @strerror(i32 noundef %671) #11
  %673 = load i32, ptr %652, align 4, !tbaa !5
  %674 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %664, ptr noundef nonnull %.str.5.sink699, i32 noundef %665, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 188, ptr noundef %668, ptr noundef %670, ptr noundef %672, i32 noundef %673) #13
  call void @exit(i32 noundef 1) #14
  unreachable

675:                                              ; preds = %643, %645
  %676 = phi i32 [ %.pre501, %643 ], [ %646, %645 ]
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr @test_count, align 4, !tbaa !5
  %678 = getelementptr inbounds i8, ptr %.pre502, i64 628
  %679 = load i32, ptr %678, align 4, !tbaa !49
  %680 = icmp eq i32 %679, 2
  br i1 %680, label %705, label %681

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

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

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

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

705:                                              ; preds = %675
  %706 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  br label %707

707:                                              ; preds = %302, %705
  %.0277 = phi i32 [ 0, %705 ], [ 1, %302 ]
  %.0 = phi i32 [ 0, %705 ], [ -1, %302 ]
  %708 = call i32 @s2n_free(ptr noundef nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #11
  br label %709

709:                                              ; preds = %299, %707
  %.1278 = phi i32 [ %.0277, %707 ], [ 1, %299 ]
  %.1 = phi i32 [ %.0, %707 ], [ -1, %299 ]
  %710 = call i32 @s2n_free(ptr noundef nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #11
  br label %711

711:                                              ; preds = %709, %296
  %.2279 = phi i32 [ %.1278, %709 ], [ 1, %296 ]
  %.2 = phi i32 [ %.1, %709 ], [ -1, %296 ]
  %712 = call i32 @s2n_free(ptr noundef nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  %713 = call i32 @s2n_free(ptr noundef nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #11
  %cond4 = icmp eq i32 %.2279, 0
  br i1 %cond4, label %714, label %2191

714:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %14, i8 0, i64 24, i1 false)
  %715 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %14, ptr noundef nonnull @.str.24) #11
  %716 = call zeroext i1 @s2n_result_is_ok(i32 %715)
  br i1 %716, label %718, label %.thread440

.thread440:                                       ; preds = %714
  %717 = call i32 @s2n_free(ptr noundef nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #11
  br label %2191

718:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %15, i8 0, i64 24, i1 false)
  %719 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %15, ptr noundef nonnull @.str.25) #11
  %720 = call zeroext i1 @s2n_result_is_ok(i32 %719)
  br i1 %720, label %721, label %963

721:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %16, i8 0, i64 24, i1 false)
  %722 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %16, ptr noundef nonnull @.str.26) #11
  %723 = call zeroext i1 @s2n_result_is_ok(i32 %722)
  br i1 %723, label %.preheader482, label %.loopexit483

.preheader482:                                    ; preds = %721
  %724 = getelementptr inbounds i8, ptr %3, i64 8
  %725 = getelementptr inbounds i8, ptr %15, i64 8
  %726 = getelementptr inbounds i8, ptr %16, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  %727 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %727, ptr %17, align 8, !tbaa !9
  %728 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %729 = getelementptr inbounds i8, ptr %727, i64 232
  %730 = load ptr, ptr %729, align 8, !tbaa !15
  store ptr %728, ptr %730, align 8, !tbaa !42
  %731 = load i32, ptr @test_count, align 4, !tbaa !5
  %732 = add nsw i32 %731, 1
  store i32 %732, ptr @test_count, align 4, !tbaa !5
  %733 = load ptr, ptr %17, align 8, !tbaa !9
  %734 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %733, ptr noundef nonnull %7) #11
  %735 = call zeroext i1 @s2n_result_is_ok(i32 %734)
  br i1 %735, label %760, label %736

736:                                              ; preds = %915, %.preheader482
  %737 = tail call ptr @__errno_location() #12
  %738 = load i32, ptr %737, align 4, !tbaa !5
  %739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %740 = call i32 @s2n_print_stacktrace(ptr noundef %739) #11
  %741 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %742 = trunc nuw i8 %741 to i1
  br i1 %742, label %743, label %747

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

747:                                              ; preds = %743, %736
  br label %748

748:                                              ; preds = %743, %747
  %.str.5.sink721 = phi ptr [ @.str.5, %747 ], [ @.str.2, %743 ]
  store i32 %738, ptr %737, align 4, !tbaa !5
  %749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %750 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %752, ptr noundef nonnull @.str.4) #11
  %754 = load i32, ptr %751, align 4, !tbaa !5
  %755 = call ptr @s2n_strerror_debug(i32 noundef %754, ptr noundef nonnull @.str.4) #11
  %756 = load i32, ptr %737, align 4, !tbaa !5
  %757 = call ptr @strerror(i32 noundef %756) #11
  %758 = load i32, ptr %737, align 4, !tbaa !5
  %759 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %749, ptr noundef nonnull %.str.5.sink721, i32 noundef %750, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 253, ptr noundef %753, ptr noundef %755, ptr noundef %757, i32 noundef %758) #13
  call void @exit(i32 noundef 1) #14
  unreachable

760:                                              ; preds = %.preheader482
  %761 = load i32, ptr @test_count, align 4, !tbaa !5
  %762 = add nsw i32 %761, 1
  store i32 %762, ptr @test_count, align 4, !tbaa !5
  %763 = load ptr, ptr %17, align 8, !tbaa !9
  %764 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %763, i32 noundef 1, ptr noundef nonnull %14) #11
  %765 = call zeroext i1 @s2n_result_is_ok(i32 %764)
  br i1 %765, label %790, label %766

766:                                              ; preds = %926, %760
  %767 = tail call ptr @__errno_location() #12
  %768 = load i32, ptr %767, align 4, !tbaa !5
  %769 = load ptr, ptr @stderr, align 8, !tbaa !9
  %770 = call i32 @s2n_print_stacktrace(ptr noundef %769) #11
  %771 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %772 = trunc nuw i8 %771 to i1
  br i1 %772, label %773, label %777

773:                                              ; preds = %766
  %774 = load ptr, ptr @stderr, align 8, !tbaa !9
  %775 = call i32 @fileno(ptr noundef %774) #11
  %776 = call i32 @isatty(i32 noundef %775) #11
  %.not415 = icmp eq i32 %776, 0
  br i1 %.not415, label %777, label %778

777:                                              ; preds = %773, %766
  br label %778

778:                                              ; preds = %773, %777
  %.str.5.sink732 = phi ptr [ @.str.5, %777 ], [ @.str.2, %773 ]
  store i32 %768, ptr %767, align 4, !tbaa !5
  %779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %780 = load i32, ptr @test_count, align 4, !tbaa !5
  %781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %782 = load i32, ptr %781, align 4, !tbaa !5
  %783 = call ptr @s2n_strerror(i32 noundef %782, ptr noundef nonnull @.str.4) #11
  %784 = load i32, ptr %781, align 4, !tbaa !5
  %785 = call ptr @s2n_strerror_debug(i32 noundef %784, ptr noundef nonnull @.str.4) #11
  %786 = load i32, ptr %767, align 4, !tbaa !5
  %787 = call ptr @strerror(i32 noundef %786) #11
  %788 = load i32, ptr %767, align 4, !tbaa !5
  %789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %779, ptr noundef nonnull %.str.5.sink732, i32 noundef %780, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 254, ptr noundef %783, ptr noundef %785, ptr noundef %787, i32 noundef %788) #13
  call void @exit(i32 noundef 1) #14
  unreachable

790:                                              ; preds = %760
  %791 = load i32, ptr @test_count, align 4, !tbaa !5
  %792 = add nsw i32 %791, 1
  store i32 %792, ptr @test_count, align 4, !tbaa !5
  %793 = load ptr, ptr %17, align 8, !tbaa !9
  %794 = call i32 @s2n_tls13_derive_secret(ptr noundef %793, i32 noundef 2, i32 noundef 1, ptr noundef nonnull %3) #11
  %795 = call zeroext i1 @s2n_result_is_ok(i32 %794)
  br i1 %795, label %820, label %796

796:                                              ; preds = %932, %790
  %797 = tail call ptr @__errno_location() #12
  %798 = load i32, ptr %797, align 4, !tbaa !5
  %799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %800 = call i32 @s2n_print_stacktrace(ptr noundef %799) #11
  %801 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %802 = trunc nuw i8 %801 to i1
  br i1 %802, label %803, label %807

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

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

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

820:                                              ; preds = %790
  %821 = load i32, ptr @test_count, align 4, !tbaa !5
  %822 = add nsw i32 %821, 1
  store i32 %822, ptr @test_count, align 4, !tbaa !5
  %823 = load i32, ptr %724, align 8, !tbaa !47
  %824 = load i32, ptr %725, align 8, !tbaa !47
  %825 = icmp eq i32 %823, %824
  br i1 %825, label %850, label %826

826:                                              ; preds = %938, %820
  %827 = tail call ptr @__errno_location() #12
  %828 = load i32, ptr %827, align 4, !tbaa !5
  %829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %830 = call i32 @s2n_print_stacktrace(ptr noundef %829) #11
  %831 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %832 = trunc nuw i8 %831 to i1
  br i1 %832, label %833, label %837

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

837:                                              ; preds = %833, %826
  br label %838

838:                                              ; preds = %833, %837
  %.str.5.sink754 = phi ptr [ @.str.5, %837 ], [ @.str.2, %833 ]
  store i32 %828, ptr %827, align 4, !tbaa !5
  %839 = load ptr, ptr @stderr, align 8, !tbaa !9
  %840 = load i32, ptr @test_count, align 4, !tbaa !5
  %841 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %842 = load i32, ptr %841, align 4, !tbaa !5
  %843 = call ptr @s2n_strerror(i32 noundef %842, ptr noundef nonnull @.str.4) #11
  %844 = load i32, ptr %841, align 4, !tbaa !5
  %845 = call ptr @s2n_strerror_debug(i32 noundef %844, ptr noundef nonnull @.str.4) #11
  %846 = load i32, ptr %827, align 4, !tbaa !5
  %847 = call ptr @strerror(i32 noundef %846) #11
  %848 = load i32, ptr %827, align 4, !tbaa !5
  %849 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %839, ptr noundef nonnull %.str.5.sink754, i32 noundef %840, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 259, ptr noundef %843, ptr noundef %845, ptr noundef %847, i32 noundef %848) #13
  call void @exit(i32 noundef 1) #14
  unreachable

850:                                              ; preds = %820
  %.not418 = icmp eq i32 %823, 0
  br i1 %.not418, label %881, label %851

851:                                              ; preds = %850
  %852 = add nsw i32 %821, 2
  store i32 %852, ptr @test_count, align 4, !tbaa !5
  %853 = load ptr, ptr %3, align 8, !tbaa !48
  %854 = load ptr, ptr %15, align 8, !tbaa !48
  %855 = zext i32 %823 to i64
  %bcmp419 = call i32 @bcmp(ptr %853, ptr %854, i64 %855)
  %856 = icmp eq i32 %bcmp419, 0
  br i1 %856, label %881, label %857

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

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

868:                                              ; preds = %864, %857
  br label %869

869:                                              ; preds = %864, %868
  %.str.5.sink765 = phi ptr [ @.str.5, %868 ], [ @.str.2, %864 ]
  store i32 %859, ptr %858, align 4, !tbaa !5
  %870 = load ptr, ptr @stderr, align 8, !tbaa !9
  %871 = load i32, ptr @test_count, align 4, !tbaa !5
  %872 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %873 = load i32, ptr %872, align 4, !tbaa !5
  %874 = call ptr @s2n_strerror(i32 noundef %873, ptr noundef nonnull @.str.4) #11
  %875 = load i32, ptr %872, align 4, !tbaa !5
  %876 = call ptr @s2n_strerror_debug(i32 noundef %875, ptr noundef nonnull @.str.4) #11
  %877 = load i32, ptr %858, align 4, !tbaa !5
  %878 = call ptr @strerror(i32 noundef %877) #11
  %879 = load i32, ptr %858, align 4, !tbaa !5
  %880 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %870, ptr noundef nonnull %.str.5.sink765, i32 noundef %871, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 260, ptr noundef %874, ptr noundef %876, ptr noundef %878, i32 noundef %879) #13
  call void @exit(i32 noundef 1) #14
  unreachable

881:                                              ; preds = %850, %851
  %882 = phi i32 [ %822, %850 ], [ %852, %851 ]
  %883 = load i32, ptr %726, align 8, !tbaa !47
  %.not421 = icmp eq i32 %883, 0
  br i1 %.not421, label %915, label %884

884:                                              ; preds = %881
  %885 = add nsw i32 %882, 1
  store i32 %885, ptr @test_count, align 4, !tbaa !5
  %886 = load ptr, ptr %17, align 8, !tbaa !9
  %887 = getelementptr inbounds i8, ptr %886, i64 2120
  %888 = load ptr, ptr %16, align 8, !tbaa !48
  %889 = zext i32 %883 to i64
  %bcmp422 = call i32 @bcmp(ptr nonnull %887, ptr %888, i64 %889)
  %890 = icmp eq i32 %bcmp422, 0
  br i1 %890, label %915, label %891

891:                                              ; preds = %954, %884
  %892 = tail call ptr @__errno_location() #12
  %893 = load i32, ptr %892, align 4, !tbaa !5
  %894 = load ptr, ptr @stderr, align 8, !tbaa !9
  %895 = call i32 @s2n_print_stacktrace(ptr noundef %894) #11
  %896 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %897 = trunc nuw i8 %896 to i1
  br i1 %897, label %898, label %902

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

902:                                              ; preds = %898, %891
  br label %903

903:                                              ; preds = %898, %902
  %.str.5.sink776 = phi ptr [ @.str.5, %902 ], [ @.str.2, %898 ]
  store i32 %893, ptr %892, align 4, !tbaa !5
  %904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %905 = load i32, ptr @test_count, align 4, !tbaa !5
  %906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %907 = load i32, ptr %906, align 4, !tbaa !5
  %908 = call ptr @s2n_strerror(i32 noundef %907, ptr noundef nonnull @.str.4) #11
  %909 = load i32, ptr %906, align 4, !tbaa !5
  %910 = call ptr @s2n_strerror_debug(i32 noundef %909, ptr noundef nonnull @.str.4) #11
  %911 = load i32, ptr %892, align 4, !tbaa !5
  %912 = call ptr @strerror(i32 noundef %911) #11
  %913 = load i32, ptr %892, align 4, !tbaa !5
  %914 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %904, ptr noundef nonnull %.str.5.sink776, i32 noundef %905, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 262, ptr noundef %908, ptr noundef %910, ptr noundef %912, i32 noundef %913) #13
  call void @exit(i32 noundef 1) #14
  unreachable

915:                                              ; preds = %884, %881
  %916 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  %917 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %917, ptr %17, align 8, !tbaa !9
  %918 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %919 = getelementptr inbounds i8, ptr %917, i64 232
  %920 = load ptr, ptr %919, align 8, !tbaa !15
  store ptr %918, ptr %920, align 8, !tbaa !42
  %921 = load i32, ptr @test_count, align 4, !tbaa !5
  %922 = add nsw i32 %921, 1
  store i32 %922, ptr @test_count, align 4, !tbaa !5
  %923 = load ptr, ptr %17, align 8, !tbaa !9
  %924 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %923, ptr noundef nonnull %7) #11
  %925 = call zeroext i1 @s2n_result_is_ok(i32 %924)
  br i1 %925, label %926, label %736

926:                                              ; preds = %915
  %927 = load i32, ptr @test_count, align 4, !tbaa !5
  %928 = add nsw i32 %927, 1
  store i32 %928, ptr @test_count, align 4, !tbaa !5
  %929 = load ptr, ptr %17, align 8, !tbaa !9
  %930 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %929, i32 noundef 1, ptr noundef nonnull %14) #11
  %931 = call zeroext i1 @s2n_result_is_ok(i32 %930)
  br i1 %931, label %932, label %766

932:                                              ; preds = %926
  %933 = load i32, ptr @test_count, align 4, !tbaa !5
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr @test_count, align 4, !tbaa !5
  %935 = load ptr, ptr %17, align 8, !tbaa !9
  %936 = call i32 @s2n_tls13_derive_secret(ptr noundef %935, i32 noundef 2, i32 noundef 1, ptr noundef nonnull %3) #11
  %937 = call zeroext i1 @s2n_result_is_ok(i32 %936)
  br i1 %937, label %938, label %796

938:                                              ; preds = %932
  %939 = load i32, ptr @test_count, align 4, !tbaa !5
  %940 = add nsw i32 %939, 1
  store i32 %940, ptr @test_count, align 4, !tbaa !5
  %941 = load i32, ptr %724, align 8, !tbaa !47
  %942 = load i32, ptr %725, align 8, !tbaa !47
  %943 = icmp eq i32 %941, %942
  br i1 %943, label %944, label %826

944:                                              ; preds = %938
  %.not418.1 = icmp eq i32 %941, 0
  br i1 %.not418.1, label %951, label %945

945:                                              ; preds = %944
  %946 = add nsw i32 %939, 2
  store i32 %946, ptr @test_count, align 4, !tbaa !5
  %947 = load ptr, ptr %3, align 8, !tbaa !48
  %948 = load ptr, ptr %15, align 8, !tbaa !48
  %949 = zext i32 %941 to i64
  %bcmp419.1 = call i32 @bcmp(ptr %947, ptr %948, i64 %949)
  %950 = icmp eq i32 %bcmp419.1, 0
  br i1 %950, label %951, label %857

951:                                              ; preds = %945, %944
  %952 = phi i32 [ %946, %945 ], [ %940, %944 ]
  %953 = load i32, ptr %726, align 8, !tbaa !47
  %.not421.1 = icmp eq i32 %953, 0
  br i1 %.not421.1, label %.loopexit483.loopexit, label %954

954:                                              ; preds = %951
  %955 = add nsw i32 %952, 1
  store i32 %955, ptr @test_count, align 4, !tbaa !5
  %956 = load ptr, ptr %17, align 8, !tbaa !9
  %957 = getelementptr inbounds i8, ptr %956, i64 2120
  %958 = load ptr, ptr %16, align 8, !tbaa !48
  %959 = zext i32 %953 to i64
  %bcmp422.1 = call i32 @bcmp(ptr nonnull %957, ptr %958, i64 %959)
  %960 = icmp eq i32 %bcmp422.1, 0
  br i1 %960, label %.loopexit483.loopexit, label %891

.loopexit483.loopexit:                            ; preds = %954, %951
  %961 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  br label %.loopexit483

.loopexit483:                                     ; preds = %.loopexit483.loopexit, %721
  %.4281 = phi i32 [ 1, %721 ], [ 0, %.loopexit483.loopexit ]
  %.4 = phi i32 [ -1, %721 ], [ %.2, %.loopexit483.loopexit ]
  %962 = call i32 @s2n_free(ptr noundef nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #11
  br label %963

963:                                              ; preds = %.loopexit483, %718
  %.5282 = phi i32 [ %.4281, %.loopexit483 ], [ 1, %718 ]
  %.5 = phi i32 [ %.4, %.loopexit483 ], [ -1, %718 ]
  %964 = call i32 @s2n_free(ptr noundef nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #11
  %965 = call i32 @s2n_free(ptr noundef nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #11
  %cond5 = icmp eq i32 %.5282, 0
  br i1 %cond5, label %966, label %2191

966:                                              ; preds = %963
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %18, i8 0, i64 24, i1 false)
  %967 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %18, ptr noundef nonnull @.str.24) #11
  %968 = call zeroext i1 @s2n_result_is_ok(i32 %967)
  br i1 %968, label %970, label %.thread444

.thread444:                                       ; preds = %966
  %969 = call i32 @s2n_free(ptr noundef nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #11
  br label %2191

970:                                              ; preds = %966
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, i8 0, i64 24, i1 false)
  %971 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %19, ptr noundef nonnull @.str.33) #11
  %972 = call zeroext i1 @s2n_result_is_ok(i32 %971)
  br i1 %972, label %973, label %1215

973:                                              ; preds = %970
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %20, i8 0, i64 24, i1 false)
  %974 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %20, ptr noundef nonnull @.str.34) #11
  %975 = call zeroext i1 @s2n_result_is_ok(i32 %974)
  br i1 %975, label %.preheader480, label %.loopexit481

.preheader480:                                    ; preds = %973
  %976 = getelementptr inbounds i8, ptr %3, i64 8
  %977 = getelementptr inbounds i8, ptr %19, i64 8
  %978 = getelementptr inbounds i8, ptr %20, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #11
  %979 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %979, ptr %21, align 8, !tbaa !9
  %980 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %981 = getelementptr inbounds i8, ptr %979, i64 232
  %982 = load ptr, ptr %981, align 8, !tbaa !15
  store ptr %980, ptr %982, align 8, !tbaa !42
  %983 = load i32, ptr @test_count, align 4, !tbaa !5
  %984 = add nsw i32 %983, 1
  store i32 %984, ptr @test_count, align 4, !tbaa !5
  %985 = load ptr, ptr %21, align 8, !tbaa !9
  %986 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %985, ptr noundef nonnull %7) #11
  %987 = call zeroext i1 @s2n_result_is_ok(i32 %986)
  br i1 %987, label %1012, label %988

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

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

999:                                              ; preds = %995, %988
  br label %1000

1000:                                             ; preds = %995, %999
  %.str.5.sink787 = phi ptr [ @.str.5, %999 ], [ @.str.2, %995 ]
  store i32 %990, ptr %989, align 4, !tbaa !5
  %1001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1002 = load i32, ptr @test_count, align 4, !tbaa !5
  %1003 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1004 = load i32, ptr %1003, align 4, !tbaa !5
  %1005 = call ptr @s2n_strerror(i32 noundef %1004, ptr noundef nonnull @.str.4) #11
  %1006 = load i32, ptr %1003, align 4, !tbaa !5
  %1007 = call ptr @s2n_strerror_debug(i32 noundef %1006, ptr noundef nonnull @.str.4) #11
  %1008 = load i32, ptr %989, align 4, !tbaa !5
  %1009 = call ptr @strerror(i32 noundef %1008) #11
  %1010 = load i32, ptr %989, align 4, !tbaa !5
  %1011 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1001, ptr noundef nonnull %.str.5.sink787, i32 noundef %1002, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 321, ptr noundef %1005, ptr noundef %1007, ptr noundef %1009, i32 noundef %1010) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1012:                                             ; preds = %.preheader480
  %1013 = load i32, ptr @test_count, align 4, !tbaa !5
  %1014 = add nsw i32 %1013, 1
  store i32 %1014, ptr @test_count, align 4, !tbaa !5
  %1015 = load ptr, ptr %21, align 8, !tbaa !9
  %1016 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1015, i32 noundef 1, ptr noundef nonnull %18) #11
  %1017 = call zeroext i1 @s2n_result_is_ok(i32 %1016)
  br i1 %1017, label %1042, label %1018

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

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

1029:                                             ; preds = %1025, %1018
  br label %1030

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

1042:                                             ; preds = %1012
  %1043 = load i32, ptr @test_count, align 4, !tbaa !5
  %1044 = add nsw i32 %1043, 1
  store i32 %1044, ptr @test_count, align 4, !tbaa !5
  %1045 = load ptr, ptr %21, align 8, !tbaa !9
  %1046 = call i32 @s2n_tls13_derive_secret(ptr noundef %1045, i32 noundef 2, i32 noundef 0, ptr noundef nonnull %3) #11
  %1047 = call zeroext i1 @s2n_result_is_ok(i32 %1046)
  br i1 %1047, label %1072, label %1048

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

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

1059:                                             ; preds = %1055, %1048
  br label %1060

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

1072:                                             ; preds = %1042
  %1073 = load i32, ptr @test_count, align 4, !tbaa !5
  %1074 = add nsw i32 %1073, 1
  store i32 %1074, ptr @test_count, align 4, !tbaa !5
  %1075 = load i32, ptr %976, align 8, !tbaa !47
  %1076 = load i32, ptr %977, align 8, !tbaa !47
  %1077 = icmp eq i32 %1075, %1076
  br i1 %1077, label %1102, label %1078

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

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

1089:                                             ; preds = %1085, %1078
  br label %1090

1090:                                             ; preds = %1085, %1089
  %.str.5.sink820 = phi ptr [ @.str.5, %1089 ], [ @.str.2, %1085 ]
  store i32 %1080, ptr %1079, align 4, !tbaa !5
  %1091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1092 = load i32, ptr @test_count, align 4, !tbaa !5
  %1093 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1094 = load i32, ptr %1093, align 4, !tbaa !5
  %1095 = call ptr @s2n_strerror(i32 noundef %1094, ptr noundef nonnull @.str.4) #11
  %1096 = load i32, ptr %1093, align 4, !tbaa !5
  %1097 = call ptr @s2n_strerror_debug(i32 noundef %1096, ptr noundef nonnull @.str.4) #11
  %1098 = load i32, ptr %1079, align 4, !tbaa !5
  %1099 = call ptr @strerror(i32 noundef %1098) #11
  %1100 = load i32, ptr %1079, align 4, !tbaa !5
  %1101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1091, ptr noundef nonnull %.str.5.sink820, i32 noundef %1092, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 326, ptr noundef %1095, ptr noundef %1097, ptr noundef %1099, i32 noundef %1100) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1102:                                             ; preds = %1072
  %.not408 = icmp eq i32 %1075, 0
  br i1 %.not408, label %1133, label %1103

1103:                                             ; preds = %1102
  %1104 = add nsw i32 %1073, 2
  store i32 %1104, ptr @test_count, align 4, !tbaa !5
  %1105 = load ptr, ptr %3, align 8, !tbaa !48
  %1106 = load ptr, ptr %19, align 8, !tbaa !48
  %1107 = zext i32 %1075 to i64
  %bcmp409 = call i32 @bcmp(ptr %1105, ptr %1106, i64 %1107)
  %1108 = icmp eq i32 %bcmp409, 0
  br i1 %1108, label %1133, label %1109

1109:                                             ; preds = %1197, %1103
  %1110 = tail call ptr @__errno_location() #12
  %1111 = load i32, ptr %1110, align 4, !tbaa !5
  %1112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1113 = call i32 @s2n_print_stacktrace(ptr noundef %1112) #11
  %1114 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1115 = trunc nuw i8 %1114 to i1
  br i1 %1115, label %1116, label %1120

1116:                                             ; preds = %1109
  %1117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1118 = call i32 @fileno(ptr noundef %1117) #11
  %1119 = call i32 @isatty(i32 noundef %1118) #11
  %.not410 = icmp eq i32 %1119, 0
  br i1 %.not410, label %1120, label %1121

1120:                                             ; preds = %1116, %1109
  br label %1121

1121:                                             ; preds = %1116, %1120
  %.str.5.sink831 = phi ptr [ @.str.5, %1120 ], [ @.str.2, %1116 ]
  store i32 %1111, ptr %1110, align 4, !tbaa !5
  %1122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1123 = load i32, ptr @test_count, align 4, !tbaa !5
  %1124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1125 = load i32, ptr %1124, align 4, !tbaa !5
  %1126 = call ptr @s2n_strerror(i32 noundef %1125, ptr noundef nonnull @.str.4) #11
  %1127 = load i32, ptr %1124, align 4, !tbaa !5
  %1128 = call ptr @s2n_strerror_debug(i32 noundef %1127, ptr noundef nonnull @.str.4) #11
  %1129 = load i32, ptr %1110, align 4, !tbaa !5
  %1130 = call ptr @strerror(i32 noundef %1129) #11
  %1131 = load i32, ptr %1110, align 4, !tbaa !5
  %1132 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1122, ptr noundef nonnull %.str.5.sink831, i32 noundef %1123, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 327, ptr noundef %1126, ptr noundef %1128, ptr noundef %1130, i32 noundef %1131) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1133:                                             ; preds = %1102, %1103
  %1134 = phi i32 [ %1074, %1102 ], [ %1104, %1103 ]
  %1135 = load i32, ptr %978, align 8, !tbaa !47
  %.not411 = icmp eq i32 %1135, 0
  br i1 %.not411, label %1167, label %1136

1136:                                             ; preds = %1133
  %1137 = add nsw i32 %1134, 1
  store i32 %1137, ptr @test_count, align 4, !tbaa !5
  %1138 = load ptr, ptr %21, align 8, !tbaa !9
  %1139 = getelementptr inbounds i8, ptr %1138, i64 2072
  %1140 = load ptr, ptr %20, align 8, !tbaa !48
  %1141 = zext i32 %1135 to i64
  %bcmp412 = call i32 @bcmp(ptr nonnull %1139, ptr %1140, i64 %1141)
  %1142 = icmp eq i32 %bcmp412, 0
  br i1 %1142, label %1167, label %1143

1143:                                             ; preds = %1206, %1136
  %1144 = tail call ptr @__errno_location() #12
  %1145 = load i32, ptr %1144, align 4, !tbaa !5
  %1146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1147 = call i32 @s2n_print_stacktrace(ptr noundef %1146) #11
  %1148 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1149 = trunc nuw i8 %1148 to i1
  br i1 %1149, label %1150, label %1154

1150:                                             ; preds = %1143
  %1151 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1152 = call i32 @fileno(ptr noundef %1151) #11
  %1153 = call i32 @isatty(i32 noundef %1152) #11
  %.not413 = icmp eq i32 %1153, 0
  br i1 %.not413, label %1154, label %1155

1154:                                             ; preds = %1150, %1143
  br label %1155

1155:                                             ; preds = %1150, %1154
  %.str.5.sink842 = phi ptr [ @.str.5, %1154 ], [ @.str.2, %1150 ]
  store i32 %1145, ptr %1144, align 4, !tbaa !5
  %1156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1157 = load i32, ptr @test_count, align 4, !tbaa !5
  %1158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1159 = load i32, ptr %1158, align 4, !tbaa !5
  %1160 = call ptr @s2n_strerror(i32 noundef %1159, ptr noundef nonnull @.str.4) #11
  %1161 = load i32, ptr %1158, align 4, !tbaa !5
  %1162 = call ptr @s2n_strerror_debug(i32 noundef %1161, ptr noundef nonnull @.str.4) #11
  %1163 = load i32, ptr %1144, align 4, !tbaa !5
  %1164 = call ptr @strerror(i32 noundef %1163) #11
  %1165 = load i32, ptr %1144, align 4, !tbaa !5
  %1166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1156, ptr noundef nonnull %.str.5.sink842, i32 noundef %1157, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.1, i32 noundef 329, ptr noundef %1160, ptr noundef %1162, ptr noundef %1164, i32 noundef %1165) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1167:                                             ; preds = %1136, %1133
  %1168 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #11
  %1169 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %1169, ptr %21, align 8, !tbaa !9
  %1170 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1171 = getelementptr inbounds i8, ptr %1169, i64 232
  %1172 = load ptr, ptr %1171, align 8, !tbaa !15
  store ptr %1170, ptr %1172, align 8, !tbaa !42
  %1173 = load i32, ptr @test_count, align 4, !tbaa !5
  %1174 = add nsw i32 %1173, 1
  store i32 %1174, ptr @test_count, align 4, !tbaa !5
  %1175 = load ptr, ptr %21, align 8, !tbaa !9
  %1176 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %1175, ptr noundef nonnull %7) #11
  %1177 = call zeroext i1 @s2n_result_is_ok(i32 %1176)
  br i1 %1177, label %1178, label %988

1178:                                             ; preds = %1167
  %1179 = load i32, ptr @test_count, align 4, !tbaa !5
  %1180 = add nsw i32 %1179, 1
  store i32 %1180, ptr @test_count, align 4, !tbaa !5
  %1181 = load ptr, ptr %21, align 8, !tbaa !9
  %1182 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1181, i32 noundef 1, ptr noundef nonnull %18) #11
  %1183 = call zeroext i1 @s2n_result_is_ok(i32 %1182)
  br i1 %1183, label %1184, label %1018

1184:                                             ; preds = %1178
  %1185 = load i32, ptr @test_count, align 4, !tbaa !5
  %1186 = add nsw i32 %1185, 1
  store i32 %1186, ptr @test_count, align 4, !tbaa !5
  %1187 = load ptr, ptr %21, align 8, !tbaa !9
  %1188 = call i32 @s2n_tls13_derive_secret(ptr noundef %1187, i32 noundef 2, i32 noundef 0, ptr noundef nonnull %3) #11
  %1189 = call zeroext i1 @s2n_result_is_ok(i32 %1188)
  br i1 %1189, label %1190, label %1048

1190:                                             ; preds = %1184
  %1191 = load i32, ptr @test_count, align 4, !tbaa !5
  %1192 = add nsw i32 %1191, 1
  store i32 %1192, ptr @test_count, align 4, !tbaa !5
  %1193 = load i32, ptr %976, align 8, !tbaa !47
  %1194 = load i32, ptr %977, align 8, !tbaa !47
  %1195 = icmp eq i32 %1193, %1194
  br i1 %1195, label %1196, label %1078

1196:                                             ; preds = %1190
  %.not408.1 = icmp eq i32 %1193, 0
  br i1 %.not408.1, label %1203, label %1197

1197:                                             ; preds = %1196
  %1198 = add nsw i32 %1191, 2
  store i32 %1198, ptr @test_count, align 4, !tbaa !5
  %1199 = load ptr, ptr %3, align 8, !tbaa !48
  %1200 = load ptr, ptr %19, align 8, !tbaa !48
  %1201 = zext i32 %1193 to i64
  %bcmp409.1 = call i32 @bcmp(ptr %1199, ptr %1200, i64 %1201)
  %1202 = icmp eq i32 %bcmp409.1, 0
  br i1 %1202, label %1203, label %1109

1203:                                             ; preds = %1197, %1196
  %1204 = phi i32 [ %1198, %1197 ], [ %1192, %1196 ]
  %1205 = load i32, ptr %978, align 8, !tbaa !47
  %.not411.1 = icmp eq i32 %1205, 0
  br i1 %.not411.1, label %.loopexit481.loopexit, label %1206

1206:                                             ; preds = %1203
  %1207 = add nsw i32 %1204, 1
  store i32 %1207, ptr @test_count, align 4, !tbaa !5
  %1208 = load ptr, ptr %21, align 8, !tbaa !9
  %1209 = getelementptr inbounds i8, ptr %1208, i64 2072
  %1210 = load ptr, ptr %20, align 8, !tbaa !48
  %1211 = zext i32 %1205 to i64
  %bcmp412.1 = call i32 @bcmp(ptr nonnull %1209, ptr %1210, i64 %1211)
  %1212 = icmp eq i32 %bcmp412.1, 0
  br i1 %1212, label %.loopexit481.loopexit, label %1143

.loopexit481.loopexit:                            ; preds = %1206, %1203
  %1213 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  br label %.loopexit481

.loopexit481:                                     ; preds = %.loopexit481.loopexit, %973
  %.7284 = phi i32 [ 1, %973 ], [ 0, %.loopexit481.loopexit ]
  %.7 = phi i32 [ -1, %973 ], [ %.5, %.loopexit481.loopexit ]
  %1214 = call i32 @s2n_free(ptr noundef nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #11
  br label %1215

1215:                                             ; preds = %.loopexit481, %970
  %.8285 = phi i32 [ %.7284, %.loopexit481 ], [ 1, %970 ]
  %.8 = phi i32 [ %.7, %.loopexit481 ], [ -1, %970 ]
  %1216 = call i32 @s2n_free(ptr noundef nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #11
  %1217 = call i32 @s2n_free(ptr noundef nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #11
  %cond6 = icmp eq i32 %.8285, 0
  br i1 %cond6, label %1218, label %2191

1218:                                             ; preds = %1215
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %22, i8 0, i64 24, i1 false)
  %1219 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %22, ptr noundef nonnull @.str.37) #11
  %1220 = call zeroext i1 @s2n_result_is_ok(i32 %1219)
  br i1 %1220, label %.preheader479, label %2189

.preheader479:                                    ; preds = %1218
  %1221 = getelementptr inbounds i8, ptr %22, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  %1222 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %1222, ptr %23, align 8, !tbaa !9
  %1223 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1224 = getelementptr inbounds i8, ptr %1222, i64 232
  %1225 = load ptr, ptr %1224, align 8, !tbaa !15
  store ptr %1223, ptr %1225, align 8, !tbaa !42
  %1226 = load i32, ptr @test_count, align 4, !tbaa !5
  %1227 = add nsw i32 %1226, 1
  store i32 %1227, ptr @test_count, align 4, !tbaa !5
  %1228 = load ptr, ptr %23, align 8, !tbaa !9
  %1229 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %1228, ptr noundef nonnull %7) #11
  %1230 = call zeroext i1 @s2n_result_is_ok(i32 %1229)
  br i1 %1230, label %1256, label %1232

.thread448:                                       ; preds = %1379
  %1231 = call i32 @s2n_free(ptr noundef nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #11
  br label %2189

1232:                                             ; preds = %1348, %.preheader479
  %1233 = tail call ptr @__errno_location() #12
  %1234 = load i32, ptr %1233, align 4, !tbaa !5
  %1235 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1236 = call i32 @s2n_print_stacktrace(ptr noundef %1235) #11
  %1237 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1238 = trunc nuw i8 %1237 to i1
  br i1 %1238, label %1239, label %1243

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

1243:                                             ; preds = %1239, %1232
  br label %1244

1244:                                             ; preds = %1239, %1243
  %.str.5.sink853 = phi ptr [ @.str.5, %1243 ], [ @.str.2, %1239 ]
  store i32 %1234, ptr %1233, align 4, !tbaa !5
  %1245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1246 = load i32, ptr @test_count, align 4, !tbaa !5
  %1247 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1248 = load i32, ptr %1247, align 4, !tbaa !5
  %1249 = call ptr @s2n_strerror(i32 noundef %1248, ptr noundef nonnull @.str.4) #11
  %1250 = load i32, ptr %1247, align 4, !tbaa !5
  %1251 = call ptr @s2n_strerror_debug(i32 noundef %1250, ptr noundef nonnull @.str.4) #11
  %1252 = load i32, ptr %1233, align 4, !tbaa !5
  %1253 = call ptr @strerror(i32 noundef %1252) #11
  %1254 = load i32, ptr %1233, align 4, !tbaa !5
  %1255 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1245, ptr noundef nonnull %.str.5.sink853, i32 noundef %1246, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 363, ptr noundef %1249, ptr noundef %1251, ptr noundef %1253, i32 noundef %1254) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1256:                                             ; preds = %.preheader479
  %1257 = load i32, ptr @test_count, align 4, !tbaa !5
  %1258 = add nsw i32 %1257, 1
  store i32 %1258, ptr @test_count, align 4, !tbaa !5
  %1259 = load ptr, ptr %23, align 8, !tbaa !9
  %1260 = call i32 @s2n_tls13_extract_secret(ptr noundef %1259, i32 noundef 3) #11
  %1261 = call zeroext i1 @s2n_result_is_ok(i32 %1260)
  br i1 %1261, label %1286, label %1262

1262:                                             ; preds = %1359, %1256
  %1263 = tail call ptr @__errno_location() #12
  %1264 = load i32, ptr %1263, align 4, !tbaa !5
  %1265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1266 = call i32 @s2n_print_stacktrace(ptr noundef %1265) #11
  %1267 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1268 = trunc nuw i8 %1267 to i1
  br i1 %1268, label %1269, label %1273

1269:                                             ; preds = %1262
  %1270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1271 = call i32 @fileno(ptr noundef %1270) #11
  %1272 = call i32 @isatty(i32 noundef %1271) #11
  %.not399 = icmp eq i32 %1272, 0
  br i1 %.not399, label %1273, label %1274

1273:                                             ; preds = %1269, %1262
  br label %1274

1274:                                             ; preds = %1269, %1273
  %.str.5.sink864 = phi ptr [ @.str.5, %1273 ], [ @.str.2, %1269 ]
  store i32 %1264, ptr %1263, align 4, !tbaa !5
  %1275 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1276 = load i32, ptr @test_count, align 4, !tbaa !5
  %1277 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1278 = load i32, ptr %1277, align 4, !tbaa !5
  %1279 = call ptr @s2n_strerror(i32 noundef %1278, ptr noundef nonnull @.str.4) #11
  %1280 = load i32, ptr %1277, align 4, !tbaa !5
  %1281 = call ptr @s2n_strerror_debug(i32 noundef %1280, ptr noundef nonnull @.str.4) #11
  %1282 = load i32, ptr %1263, align 4, !tbaa !5
  %1283 = call ptr @strerror(i32 noundef %1282) #11
  %1284 = load i32, ptr %1263, align 4, !tbaa !5
  %1285 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1275, ptr noundef nonnull %.str.5.sink864, i32 noundef %1276, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 365, ptr noundef %1279, ptr noundef %1281, ptr noundef %1283, i32 noundef %1284) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1286:                                             ; preds = %1256
  %1287 = load i32, ptr %1221, align 8, !tbaa !47
  %.not400 = icmp eq i32 %1287, 0
  %.pre503 = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre504 = load ptr, ptr %23, align 8, !tbaa !9
  br i1 %.not400, label %1318, label %1288

1288:                                             ; preds = %1286
  %1289 = add nsw i32 %.pre503, 1
  store i32 %1289, ptr @test_count, align 4, !tbaa !5
  %1290 = getelementptr inbounds i8, ptr %.pre504, i64 240
  %1291 = load ptr, ptr %22, align 8, !tbaa !48
  %1292 = zext i32 %1287 to i64
  %bcmp401 = call i32 @bcmp(ptr nonnull %1290, ptr %1291, i64 %1292)
  %1293 = icmp eq i32 %bcmp401, 0
  br i1 %1293, label %1318, label %1294

1294:                                             ; preds = %1367, %1288
  %1295 = tail call ptr @__errno_location() #12
  %1296 = load i32, ptr %1295, align 4, !tbaa !5
  %1297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1298 = call i32 @s2n_print_stacktrace(ptr noundef %1297) #11
  %1299 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1300 = trunc nuw i8 %1299 to i1
  br i1 %1300, label %1301, label %1305

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

1305:                                             ; preds = %1301, %1294
  br label %1306

1306:                                             ; preds = %1301, %1305
  %.str.5.sink875 = phi ptr [ @.str.5, %1305 ], [ @.str.2, %1301 ]
  store i32 %1296, ptr %1295, align 4, !tbaa !5
  %1307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1308 = load i32, ptr @test_count, align 4, !tbaa !5
  %1309 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1310 = load i32, ptr %1309, align 4, !tbaa !5
  %1311 = call ptr @s2n_strerror(i32 noundef %1310, ptr noundef nonnull @.str.4) #11
  %1312 = load i32, ptr %1309, align 4, !tbaa !5
  %1313 = call ptr @s2n_strerror_debug(i32 noundef %1312, ptr noundef nonnull @.str.4) #11
  %1314 = load i32, ptr %1295, align 4, !tbaa !5
  %1315 = call ptr @strerror(i32 noundef %1314) #11
  %1316 = load i32, ptr %1295, align 4, !tbaa !5
  %1317 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1307, ptr noundef nonnull %.str.5.sink875, i32 noundef %1308, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 367, ptr noundef %1311, ptr noundef %1313, ptr noundef %1315, i32 noundef %1316) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1318:                                             ; preds = %1286, %1288
  %1319 = phi i32 [ %.pre503, %1286 ], [ %1289, %1288 ]
  %1320 = add nsw i32 %1319, 1
  store i32 %1320, ptr @test_count, align 4, !tbaa !5
  %1321 = getelementptr inbounds i8, ptr %.pre504, i64 628
  %1322 = load i32, ptr %1321, align 4, !tbaa !49
  %1323 = icmp eq i32 %1322, 3
  br i1 %1323, label %1348, label %1324

1324:                                             ; preds = %1373, %1318
  %1325 = tail call ptr @__errno_location() #12
  %1326 = load i32, ptr %1325, align 4, !tbaa !5
  %1327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1328 = call i32 @s2n_print_stacktrace(ptr noundef %1327) #11
  %1329 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1330 = trunc nuw i8 %1329 to i1
  br i1 %1330, label %1331, label %1335

1331:                                             ; preds = %1324
  %1332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1333 = call i32 @fileno(ptr noundef %1332) #11
  %1334 = call i32 @isatty(i32 noundef %1333) #11
  %.not403 = icmp eq i32 %1334, 0
  br i1 %.not403, label %1335, label %1336

1335:                                             ; preds = %1331, %1324
  br label %1336

1336:                                             ; preds = %1331, %1335
  %.str.5.sink886 = phi ptr [ @.str.5, %1335 ], [ @.str.2, %1331 ]
  store i32 %1326, ptr %1325, align 4, !tbaa !5
  %1337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1338 = load i32, ptr @test_count, align 4, !tbaa !5
  %1339 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1340 = load i32, ptr %1339, align 4, !tbaa !5
  %1341 = call ptr @s2n_strerror(i32 noundef %1340, ptr noundef nonnull @.str.4) #11
  %1342 = load i32, ptr %1339, align 4, !tbaa !5
  %1343 = call ptr @s2n_strerror_debug(i32 noundef %1342, ptr noundef nonnull @.str.4) #11
  %1344 = load i32, ptr %1325, align 4, !tbaa !5
  %1345 = call ptr @strerror(i32 noundef %1344) #11
  %1346 = load i32, ptr %1325, align 4, !tbaa !5
  %1347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1337, ptr noundef nonnull %.str.5.sink886, i32 noundef %1338, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 368, ptr noundef %1341, ptr noundef %1343, ptr noundef %1345, i32 noundef %1346) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1348:                                             ; preds = %1318
  %1349 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  %1350 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %1350, ptr %23, align 8, !tbaa !9
  %1351 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1352 = getelementptr inbounds i8, ptr %1350, i64 232
  %1353 = load ptr, ptr %1352, align 8, !tbaa !15
  store ptr %1351, ptr %1353, align 8, !tbaa !42
  %1354 = load i32, ptr @test_count, align 4, !tbaa !5
  %1355 = add nsw i32 %1354, 1
  store i32 %1355, ptr @test_count, align 4, !tbaa !5
  %1356 = load ptr, ptr %23, align 8, !tbaa !9
  %1357 = call i32 @s2n_connection_set_test_handshake_secret(ptr noundef %1356, ptr noundef nonnull %7) #11
  %1358 = call zeroext i1 @s2n_result_is_ok(i32 %1357)
  br i1 %1358, label %1359, label %1232

1359:                                             ; preds = %1348
  %1360 = load i32, ptr @test_count, align 4, !tbaa !5
  %1361 = add nsw i32 %1360, 1
  store i32 %1361, ptr @test_count, align 4, !tbaa !5
  %1362 = load ptr, ptr %23, align 8, !tbaa !9
  %1363 = call i32 @s2n_tls13_extract_secret(ptr noundef %1362, i32 noundef 3) #11
  %1364 = call zeroext i1 @s2n_result_is_ok(i32 %1363)
  br i1 %1364, label %1365, label %1262

1365:                                             ; preds = %1359
  %1366 = load i32, ptr %1221, align 8, !tbaa !47
  %.not400.1 = icmp eq i32 %1366, 0
  %.pre505 = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre506 = load ptr, ptr %23, align 8, !tbaa !9
  br i1 %.not400.1, label %1373, label %1367

1367:                                             ; preds = %1365
  %1368 = add nsw i32 %.pre505, 1
  store i32 %1368, ptr @test_count, align 4, !tbaa !5
  %1369 = getelementptr inbounds i8, ptr %.pre506, i64 240
  %1370 = load ptr, ptr %22, align 8, !tbaa !48
  %1371 = zext i32 %1366 to i64
  %bcmp401.1 = call i32 @bcmp(ptr nonnull %1369, ptr %1370, i64 %1371)
  %1372 = icmp eq i32 %bcmp401.1, 0
  br i1 %1372, label %1373, label %1294

1373:                                             ; preds = %1367, %1365
  %1374 = phi i32 [ %1368, %1367 ], [ %.pre505, %1365 ]
  %1375 = add nsw i32 %1374, 1
  store i32 %1375, ptr @test_count, align 4, !tbaa !5
  %1376 = getelementptr inbounds i8, ptr %.pre506, i64 628
  %1377 = load i32, ptr %1376, align 4, !tbaa !49
  %1378 = icmp eq i32 %1377, 3
  br i1 %1378, label %1379, label %1324

1379:                                             ; preds = %1373
  %1380 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %24, i8 0, i64 24, i1 false)
  %1381 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %24, ptr noundef nonnull @.str.41) #11
  %1382 = call zeroext i1 @s2n_result_is_ok(i32 %1381)
  br i1 %1382, label %1383, label %.thread448

1383:                                             ; preds = %1379
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %25, i8 0, i64 24, i1 false)
  %1384 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %25, ptr noundef nonnull @.str.42) #11
  %1385 = call zeroext i1 @s2n_result_is_ok(i32 %1384)
  br i1 %1385, label %.preheader477, label %.loopexit478

.preheader477:                                    ; preds = %1383
  %1386 = getelementptr inbounds i8, ptr %3, i64 8
  %1387 = getelementptr inbounds i8, ptr %25, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  %1388 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %1388, ptr %26, align 8, !tbaa !9
  %1389 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1390 = getelementptr inbounds i8, ptr %1388, i64 232
  %1391 = load ptr, ptr %1390, align 8, !tbaa !15
  store ptr %1389, ptr %1391, align 8, !tbaa !42
  %1392 = load i32, ptr @test_count, align 4, !tbaa !5
  %1393 = add nsw i32 %1392, 1
  store i32 %1393, ptr @test_count, align 4, !tbaa !5
  %1394 = load ptr, ptr %26, align 8, !tbaa !9
  %1395 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %1394, ptr noundef nonnull %22) #11
  %1396 = call zeroext i1 @s2n_result_is_ok(i32 %1395)
  br i1 %1396, label %1421, label %1397

1397:                                             ; preds = %1542, %.preheader477
  %1398 = tail call ptr @__errno_location() #12
  %1399 = load i32, ptr %1398, align 4, !tbaa !5
  %1400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1401 = call i32 @s2n_print_stacktrace(ptr noundef %1400) #11
  %1402 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1403 = trunc nuw i8 %1402 to i1
  br i1 %1403, label %1404, label %1408

1404:                                             ; preds = %1397
  %1405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1406 = call i32 @fileno(ptr noundef %1405) #11
  %1407 = call i32 @isatty(i32 noundef %1406) #11
  %.not391 = icmp eq i32 %1407, 0
  br i1 %.not391, label %1408, label %1409

1408:                                             ; preds = %1404, %1397
  br label %1409

1409:                                             ; preds = %1404, %1408
  %.str.5.sink897 = phi ptr [ @.str.5, %1408 ], [ @.str.2, %1404 ]
  store i32 %1399, ptr %1398, align 4, !tbaa !5
  %1410 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1411 = load i32, ptr @test_count, align 4, !tbaa !5
  %1412 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1413 = load i32, ptr %1412, align 4, !tbaa !5
  %1414 = call ptr @s2n_strerror(i32 noundef %1413, ptr noundef nonnull @.str.4) #11
  %1415 = load i32, ptr %1412, align 4, !tbaa !5
  %1416 = call ptr @s2n_strerror_debug(i32 noundef %1415, ptr noundef nonnull @.str.4) #11
  %1417 = load i32, ptr %1398, align 4, !tbaa !5
  %1418 = call ptr @strerror(i32 noundef %1417) #11
  %1419 = load i32, ptr %1398, align 4, !tbaa !5
  %1420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1410, ptr noundef nonnull %.str.5.sink897, i32 noundef %1411, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 404, ptr noundef %1414, ptr noundef %1416, ptr noundef %1418, i32 noundef %1419) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1421:                                             ; preds = %.preheader477
  %1422 = load i32, ptr @test_count, align 4, !tbaa !5
  %1423 = add nsw i32 %1422, 1
  store i32 %1423, ptr @test_count, align 4, !tbaa !5
  %1424 = load ptr, ptr %26, align 8, !tbaa !9
  %1425 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1424, i32 noundef 15, ptr noundef nonnull %24) #11
  %1426 = call zeroext i1 @s2n_result_is_ok(i32 %1425)
  br i1 %1426, label %1451, label %1427

1427:                                             ; preds = %1553, %1421
  %1428 = tail call ptr @__errno_location() #12
  %1429 = load i32, ptr %1428, align 4, !tbaa !5
  %1430 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1431 = call i32 @s2n_print_stacktrace(ptr noundef %1430) #11
  %1432 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1433 = trunc nuw i8 %1432 to i1
  br i1 %1433, label %1434, label %1438

1434:                                             ; preds = %1427
  %1435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1436 = call i32 @fileno(ptr noundef %1435) #11
  %1437 = call i32 @isatty(i32 noundef %1436) #11
  %.not392 = icmp eq i32 %1437, 0
  br i1 %.not392, label %1438, label %1439

1438:                                             ; preds = %1434, %1427
  br label %1439

1439:                                             ; preds = %1434, %1438
  %.str.5.sink908 = phi ptr [ @.str.5, %1438 ], [ @.str.2, %1434 ]
  store i32 %1429, ptr %1428, align 4, !tbaa !5
  %1440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1441 = load i32, ptr @test_count, align 4, !tbaa !5
  %1442 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1443 = load i32, ptr %1442, align 4, !tbaa !5
  %1444 = call ptr @s2n_strerror(i32 noundef %1443, ptr noundef nonnull @.str.4) #11
  %1445 = load i32, ptr %1442, align 4, !tbaa !5
  %1446 = call ptr @s2n_strerror_debug(i32 noundef %1445, ptr noundef nonnull @.str.4) #11
  %1447 = load i32, ptr %1428, align 4, !tbaa !5
  %1448 = call ptr @strerror(i32 noundef %1447) #11
  %1449 = load i32, ptr %1428, align 4, !tbaa !5
  %1450 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1440, ptr noundef nonnull %.str.5.sink908, i32 noundef %1441, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 405, ptr noundef %1444, ptr noundef %1446, ptr noundef %1448, i32 noundef %1449) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1451:                                             ; preds = %1421
  %1452 = load i32, ptr @test_count, align 4, !tbaa !5
  %1453 = add nsw i32 %1452, 1
  store i32 %1453, ptr @test_count, align 4, !tbaa !5
  %1454 = load ptr, ptr %26, align 8, !tbaa !9
  %1455 = call i32 @s2n_tls13_derive_secret(ptr noundef %1454, i32 noundef 3, i32 noundef 1, ptr noundef nonnull %3) #11
  %1456 = call zeroext i1 @s2n_result_is_ok(i32 %1455)
  br i1 %1456, label %1481, label %1457

1457:                                             ; preds = %1559, %1451
  %1458 = tail call ptr @__errno_location() #12
  %1459 = load i32, ptr %1458, align 4, !tbaa !5
  %1460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1461 = call i32 @s2n_print_stacktrace(ptr noundef %1460) #11
  %1462 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1463 = trunc nuw i8 %1462 to i1
  br i1 %1463, label %1464, label %1468

1464:                                             ; preds = %1457
  %1465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1466 = call i32 @fileno(ptr noundef %1465) #11
  %1467 = call i32 @isatty(i32 noundef %1466) #11
  %.not393 = icmp eq i32 %1467, 0
  br i1 %.not393, label %1468, label %1469

1468:                                             ; preds = %1464, %1457
  br label %1469

1469:                                             ; preds = %1464, %1468
  %.str.5.sink919 = phi ptr [ @.str.5, %1468 ], [ @.str.2, %1464 ]
  store i32 %1459, ptr %1458, align 4, !tbaa !5
  %1470 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1471 = load i32, ptr @test_count, align 4, !tbaa !5
  %1472 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1473 = load i32, ptr %1472, align 4, !tbaa !5
  %1474 = call ptr @s2n_strerror(i32 noundef %1473, ptr noundef nonnull @.str.4) #11
  %1475 = load i32, ptr %1472, align 4, !tbaa !5
  %1476 = call ptr @s2n_strerror_debug(i32 noundef %1475, ptr noundef nonnull @.str.4) #11
  %1477 = load i32, ptr %1458, align 4, !tbaa !5
  %1478 = call ptr @strerror(i32 noundef %1477) #11
  %1479 = load i32, ptr %1458, align 4, !tbaa !5
  %1480 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1470, ptr noundef nonnull %.str.5.sink919, i32 noundef %1471, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 408, ptr noundef %1474, ptr noundef %1476, ptr noundef %1478, i32 noundef %1479) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1481:                                             ; preds = %1451
  %1482 = load i32, ptr @test_count, align 4, !tbaa !5
  %1483 = add nsw i32 %1482, 1
  store i32 %1483, ptr @test_count, align 4, !tbaa !5
  %1484 = load i32, ptr %1386, align 8, !tbaa !47
  %1485 = load i32, ptr %1387, align 8, !tbaa !47
  %1486 = icmp eq i32 %1484, %1485
  br i1 %1486, label %1511, label %1487

1487:                                             ; preds = %1565, %1481
  %1488 = tail call ptr @__errno_location() #12
  %1489 = load i32, ptr %1488, align 4, !tbaa !5
  %1490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1491 = call i32 @s2n_print_stacktrace(ptr noundef %1490) #11
  %1492 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1493 = trunc nuw i8 %1492 to i1
  br i1 %1493, label %1494, label %1498

1494:                                             ; preds = %1487
  %1495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1496 = call i32 @fileno(ptr noundef %1495) #11
  %1497 = call i32 @isatty(i32 noundef %1496) #11
  %.not394 = icmp eq i32 %1497, 0
  br i1 %.not394, label %1498, label %1499

1498:                                             ; preds = %1494, %1487
  br label %1499

1499:                                             ; preds = %1494, %1498
  %.str.5.sink930 = phi ptr [ @.str.5, %1498 ], [ @.str.2, %1494 ]
  store i32 %1489, ptr %1488, align 4, !tbaa !5
  %1500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1501 = load i32, ptr @test_count, align 4, !tbaa !5
  %1502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1503 = load i32, ptr %1502, align 4, !tbaa !5
  %1504 = call ptr @s2n_strerror(i32 noundef %1503, ptr noundef nonnull @.str.4) #11
  %1505 = load i32, ptr %1502, align 4, !tbaa !5
  %1506 = call ptr @s2n_strerror_debug(i32 noundef %1505, ptr noundef nonnull @.str.4) #11
  %1507 = load i32, ptr %1488, align 4, !tbaa !5
  %1508 = call ptr @strerror(i32 noundef %1507) #11
  %1509 = load i32, ptr %1488, align 4, !tbaa !5
  %1510 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1500, ptr noundef nonnull %.str.5.sink930, i32 noundef %1501, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 409, ptr noundef %1504, ptr noundef %1506, ptr noundef %1508, i32 noundef %1509) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1511:                                             ; preds = %1481
  %.not395 = icmp eq i32 %1484, 0
  br i1 %.not395, label %1542, label %1512

1512:                                             ; preds = %1511
  %1513 = add nsw i32 %1482, 2
  store i32 %1513, ptr @test_count, align 4, !tbaa !5
  %1514 = load ptr, ptr %3, align 8, !tbaa !48
  %1515 = load ptr, ptr %25, align 8, !tbaa !48
  %1516 = zext i32 %1484 to i64
  %bcmp396 = call i32 @bcmp(ptr %1514, ptr %1515, i64 %1516)
  %1517 = icmp eq i32 %bcmp396, 0
  br i1 %1517, label %1542, label %1518

1518:                                             ; preds = %1572, %1512
  %1519 = tail call ptr @__errno_location() #12
  %1520 = load i32, ptr %1519, align 4, !tbaa !5
  %1521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1522 = call i32 @s2n_print_stacktrace(ptr noundef %1521) #11
  %1523 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1524 = trunc nuw i8 %1523 to i1
  br i1 %1524, label %1525, label %1529

1525:                                             ; preds = %1518
  %1526 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1527 = call i32 @fileno(ptr noundef %1526) #11
  %1528 = call i32 @isatty(i32 noundef %1527) #11
  %.not397 = icmp eq i32 %1528, 0
  br i1 %.not397, label %1529, label %1530

1529:                                             ; preds = %1525, %1518
  br label %1530

1530:                                             ; preds = %1525, %1529
  %.str.5.sink941 = phi ptr [ @.str.5, %1529 ], [ @.str.2, %1525 ]
  store i32 %1520, ptr %1519, align 4, !tbaa !5
  %1531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1532 = load i32, ptr @test_count, align 4, !tbaa !5
  %1533 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1534 = load i32, ptr %1533, align 4, !tbaa !5
  %1535 = call ptr @s2n_strerror(i32 noundef %1534, ptr noundef nonnull @.str.4) #11
  %1536 = load i32, ptr %1533, align 4, !tbaa !5
  %1537 = call ptr @s2n_strerror_debug(i32 noundef %1536, ptr noundef nonnull @.str.4) #11
  %1538 = load i32, ptr %1519, align 4, !tbaa !5
  %1539 = call ptr @strerror(i32 noundef %1538) #11
  %1540 = load i32, ptr %1519, align 4, !tbaa !5
  %1541 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1531, ptr noundef nonnull %.str.5.sink941, i32 noundef %1532, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 410, ptr noundef %1535, ptr noundef %1537, ptr noundef %1539, i32 noundef %1540) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1542:                                             ; preds = %1512, %1511
  %1543 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  %1544 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %1544, ptr %26, align 8, !tbaa !9
  %1545 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1546 = getelementptr inbounds i8, ptr %1544, i64 232
  %1547 = load ptr, ptr %1546, align 8, !tbaa !15
  store ptr %1545, ptr %1547, align 8, !tbaa !42
  %1548 = load i32, ptr @test_count, align 4, !tbaa !5
  %1549 = add nsw i32 %1548, 1
  store i32 %1549, ptr @test_count, align 4, !tbaa !5
  %1550 = load ptr, ptr %26, align 8, !tbaa !9
  %1551 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %1550, ptr noundef nonnull %22) #11
  %1552 = call zeroext i1 @s2n_result_is_ok(i32 %1551)
  br i1 %1552, label %1553, label %1397

1553:                                             ; preds = %1542
  %1554 = load i32, ptr @test_count, align 4, !tbaa !5
  %1555 = add nsw i32 %1554, 1
  store i32 %1555, ptr @test_count, align 4, !tbaa !5
  %1556 = load ptr, ptr %26, align 8, !tbaa !9
  %1557 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1556, i32 noundef 15, ptr noundef nonnull %24) #11
  %1558 = call zeroext i1 @s2n_result_is_ok(i32 %1557)
  br i1 %1558, label %1559, label %1427

1559:                                             ; preds = %1553
  %1560 = load i32, ptr @test_count, align 4, !tbaa !5
  %1561 = add nsw i32 %1560, 1
  store i32 %1561, ptr @test_count, align 4, !tbaa !5
  %1562 = load ptr, ptr %26, align 8, !tbaa !9
  %1563 = call i32 @s2n_tls13_derive_secret(ptr noundef %1562, i32 noundef 3, i32 noundef 1, ptr noundef nonnull %3) #11
  %1564 = call zeroext i1 @s2n_result_is_ok(i32 %1563)
  br i1 %1564, label %1565, label %1457

1565:                                             ; preds = %1559
  %1566 = load i32, ptr @test_count, align 4, !tbaa !5
  %1567 = add nsw i32 %1566, 1
  store i32 %1567, ptr @test_count, align 4, !tbaa !5
  %1568 = load i32, ptr %1386, align 8, !tbaa !47
  %1569 = load i32, ptr %1387, align 8, !tbaa !47
  %1570 = icmp eq i32 %1568, %1569
  br i1 %1570, label %1571, label %1487

1571:                                             ; preds = %1565
  %.not395.1 = icmp eq i32 %1568, 0
  br i1 %.not395.1, label %.loopexit478.loopexit, label %1572

1572:                                             ; preds = %1571
  %1573 = add nsw i32 %1566, 2
  store i32 %1573, ptr @test_count, align 4, !tbaa !5
  %1574 = load ptr, ptr %3, align 8, !tbaa !48
  %1575 = load ptr, ptr %25, align 8, !tbaa !48
  %1576 = zext i32 %1568 to i64
  %bcmp396.1 = call i32 @bcmp(ptr %1574, ptr %1575, i64 %1576)
  %1577 = icmp eq i32 %bcmp396.1, 0
  br i1 %1577, label %.loopexit478.loopexit, label %1518

.loopexit478.loopexit:                            ; preds = %1572, %1571
  %1578 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  br label %.loopexit478

.loopexit478:                                     ; preds = %.loopexit478.loopexit, %1383
  %.10 = phi i32 [ -1, %1383 ], [ %.8, %.loopexit478.loopexit ]
  %1579 = call i32 @s2n_free(ptr noundef nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #11
  %1580 = call i32 @s2n_free(ptr noundef nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #11
  br i1 %1385, label %1581, label %2189

1581:                                             ; preds = %.loopexit478
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %27, i8 0, i64 24, i1 false)
  %1582 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %27, ptr noundef nonnull @.str.41) #11
  %1583 = call zeroext i1 @s2n_result_is_ok(i32 %1582)
  br i1 %1583, label %1585, label %.thread452

.thread452:                                       ; preds = %1581
  %1584 = call i32 @s2n_free(ptr noundef nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #11
  br label %2189

1585:                                             ; preds = %1581
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %28, i8 0, i64 24, i1 false)
  %1586 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %28, ptr noundef nonnull @.str.46) #11
  %1587 = call zeroext i1 @s2n_result_is_ok(i32 %1586)
  br i1 %1587, label %.preheader475, label %.loopexit476

.preheader475:                                    ; preds = %1585
  %1588 = getelementptr inbounds i8, ptr %3, i64 8
  %1589 = getelementptr inbounds i8, ptr %28, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #11
  %1590 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %1590, ptr %29, align 8, !tbaa !9
  %1591 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1592 = getelementptr inbounds i8, ptr %1590, i64 232
  %1593 = load ptr, ptr %1592, align 8, !tbaa !15
  store ptr %1591, ptr %1593, align 8, !tbaa !42
  %1594 = load i32, ptr @test_count, align 4, !tbaa !5
  %1595 = add nsw i32 %1594, 1
  store i32 %1595, ptr @test_count, align 4, !tbaa !5
  %1596 = load ptr, ptr %29, align 8, !tbaa !9
  %1597 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %1596, ptr noundef nonnull %22) #11
  %1598 = call zeroext i1 @s2n_result_is_ok(i32 %1597)
  br i1 %1598, label %1623, label %1599

1599:                                             ; preds = %1744, %.preheader475
  %1600 = tail call ptr @__errno_location() #12
  %1601 = load i32, ptr %1600, align 4, !tbaa !5
  %1602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1603 = call i32 @s2n_print_stacktrace(ptr noundef %1602) #11
  %1604 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1605 = trunc nuw i8 %1604 to i1
  br i1 %1605, label %1606, label %1610

1606:                                             ; preds = %1599
  %1607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1608 = call i32 @fileno(ptr noundef %1607) #11
  %1609 = call i32 @isatty(i32 noundef %1608) #11
  %.not384 = icmp eq i32 %1609, 0
  br i1 %.not384, label %1610, label %1611

1610:                                             ; preds = %1606, %1599
  br label %1611

1611:                                             ; preds = %1606, %1610
  %.str.5.sink952 = phi ptr [ @.str.5, %1610 ], [ @.str.2, %1606 ]
  store i32 %1601, ptr %1600, align 4, !tbaa !5
  %1612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1613 = load i32, ptr @test_count, align 4, !tbaa !5
  %1614 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1615 = load i32, ptr %1614, align 4, !tbaa !5
  %1616 = call ptr @s2n_strerror(i32 noundef %1615, ptr noundef nonnull @.str.4) #11
  %1617 = load i32, ptr %1614, align 4, !tbaa !5
  %1618 = call ptr @s2n_strerror_debug(i32 noundef %1617, ptr noundef nonnull @.str.4) #11
  %1619 = load i32, ptr %1600, align 4, !tbaa !5
  %1620 = call ptr @strerror(i32 noundef %1619) #11
  %1621 = load i32, ptr %1600, align 4, !tbaa !5
  %1622 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1612, ptr noundef nonnull %.str.5.sink952, i32 noundef %1613, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 448, ptr noundef %1616, ptr noundef %1618, ptr noundef %1620, i32 noundef %1621) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1623:                                             ; preds = %.preheader475
  %1624 = load i32, ptr @test_count, align 4, !tbaa !5
  %1625 = add nsw i32 %1624, 1
  store i32 %1625, ptr @test_count, align 4, !tbaa !5
  %1626 = load ptr, ptr %29, align 8, !tbaa !9
  %1627 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1626, i32 noundef 15, ptr noundef nonnull %27) #11
  %1628 = call zeroext i1 @s2n_result_is_ok(i32 %1627)
  br i1 %1628, label %1653, label %1629

1629:                                             ; preds = %1755, %1623
  %1630 = tail call ptr @__errno_location() #12
  %1631 = load i32, ptr %1630, align 4, !tbaa !5
  %1632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1633 = call i32 @s2n_print_stacktrace(ptr noundef %1632) #11
  %1634 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1635 = trunc nuw i8 %1634 to i1
  br i1 %1635, label %1636, label %1640

1636:                                             ; preds = %1629
  %1637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1638 = call i32 @fileno(ptr noundef %1637) #11
  %1639 = call i32 @isatty(i32 noundef %1638) #11
  %.not385 = icmp eq i32 %1639, 0
  br i1 %.not385, label %1640, label %1641

1640:                                             ; preds = %1636, %1629
  br label %1641

1641:                                             ; preds = %1636, %1640
  %.str.5.sink963 = phi ptr [ @.str.5, %1640 ], [ @.str.2, %1636 ]
  store i32 %1631, ptr %1630, align 4, !tbaa !5
  %1642 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1643 = load i32, ptr @test_count, align 4, !tbaa !5
  %1644 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1645 = load i32, ptr %1644, align 4, !tbaa !5
  %1646 = call ptr @s2n_strerror(i32 noundef %1645, ptr noundef nonnull @.str.4) #11
  %1647 = load i32, ptr %1644, align 4, !tbaa !5
  %1648 = call ptr @s2n_strerror_debug(i32 noundef %1647, ptr noundef nonnull @.str.4) #11
  %1649 = load i32, ptr %1630, align 4, !tbaa !5
  %1650 = call ptr @strerror(i32 noundef %1649) #11
  %1651 = load i32, ptr %1630, align 4, !tbaa !5
  %1652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1642, ptr noundef nonnull %.str.5.sink963, i32 noundef %1643, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 449, ptr noundef %1646, ptr noundef %1648, ptr noundef %1650, i32 noundef %1651) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1653:                                             ; preds = %1623
  %1654 = load i32, ptr @test_count, align 4, !tbaa !5
  %1655 = add nsw i32 %1654, 1
  store i32 %1655, ptr @test_count, align 4, !tbaa !5
  %1656 = load ptr, ptr %29, align 8, !tbaa !9
  %1657 = call i32 @s2n_tls13_derive_secret(ptr noundef %1656, i32 noundef 3, i32 noundef 0, ptr noundef nonnull %3) #11
  %1658 = call zeroext i1 @s2n_result_is_ok(i32 %1657)
  br i1 %1658, label %1683, label %1659

1659:                                             ; preds = %1761, %1653
  %1660 = tail call ptr @__errno_location() #12
  %1661 = load i32, ptr %1660, align 4, !tbaa !5
  %1662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1663 = call i32 @s2n_print_stacktrace(ptr noundef %1662) #11
  %1664 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1665 = trunc nuw i8 %1664 to i1
  br i1 %1665, label %1666, label %1670

1666:                                             ; preds = %1659
  %1667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1668 = call i32 @fileno(ptr noundef %1667) #11
  %1669 = call i32 @isatty(i32 noundef %1668) #11
  %.not386 = icmp eq i32 %1669, 0
  br i1 %.not386, label %1670, label %1671

1670:                                             ; preds = %1666, %1659
  br label %1671

1671:                                             ; preds = %1666, %1670
  %.str.5.sink974 = phi ptr [ @.str.5, %1670 ], [ @.str.2, %1666 ]
  store i32 %1661, ptr %1660, align 4, !tbaa !5
  %1672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1673 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1675, ptr noundef nonnull @.str.4) #11
  %1677 = load i32, ptr %1674, align 4, !tbaa !5
  %1678 = call ptr @s2n_strerror_debug(i32 noundef %1677, ptr noundef nonnull @.str.4) #11
  %1679 = load i32, ptr %1660, align 4, !tbaa !5
  %1680 = call ptr @strerror(i32 noundef %1679) #11
  %1681 = load i32, ptr %1660, align 4, !tbaa !5
  %1682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1672, ptr noundef nonnull %.str.5.sink974, i32 noundef %1673, ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.1, i32 noundef 452, ptr noundef %1676, ptr noundef %1678, ptr noundef %1680, i32 noundef %1681) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1683:                                             ; preds = %1653
  %1684 = load i32, ptr @test_count, align 4, !tbaa !5
  %1685 = add nsw i32 %1684, 1
  store i32 %1685, ptr @test_count, align 4, !tbaa !5
  %1686 = load i32, ptr %1588, align 8, !tbaa !47
  %1687 = load i32, ptr %1589, align 8, !tbaa !47
  %1688 = icmp eq i32 %1686, %1687
  br i1 %1688, label %1713, label %1689

1689:                                             ; preds = %1767, %1683
  %1690 = tail call ptr @__errno_location() #12
  %1691 = load i32, ptr %1690, align 4, !tbaa !5
  %1692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1693 = call i32 @s2n_print_stacktrace(ptr noundef %1692) #11
  %1694 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1695 = trunc nuw i8 %1694 to i1
  br i1 %1695, label %1696, label %1700

1696:                                             ; preds = %1689
  %1697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1698 = call i32 @fileno(ptr noundef %1697) #11
  %1699 = call i32 @isatty(i32 noundef %1698) #11
  %.not387 = icmp eq i32 %1699, 0
  br i1 %.not387, label %1700, label %1701

1700:                                             ; preds = %1696, %1689
  br label %1701

1701:                                             ; preds = %1696, %1700
  %.str.5.sink985 = phi ptr [ @.str.5, %1700 ], [ @.str.2, %1696 ]
  store i32 %1691, ptr %1690, align 4, !tbaa !5
  %1702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1703 = load i32, ptr @test_count, align 4, !tbaa !5
  %1704 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1705 = load i32, ptr %1704, align 4, !tbaa !5
  %1706 = call ptr @s2n_strerror(i32 noundef %1705, ptr noundef nonnull @.str.4) #11
  %1707 = load i32, ptr %1704, align 4, !tbaa !5
  %1708 = call ptr @s2n_strerror_debug(i32 noundef %1707, ptr noundef nonnull @.str.4) #11
  %1709 = load i32, ptr %1690, align 4, !tbaa !5
  %1710 = call ptr @strerror(i32 noundef %1709) #11
  %1711 = load i32, ptr %1690, align 4, !tbaa !5
  %1712 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1702, ptr noundef nonnull %.str.5.sink985, i32 noundef %1703, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 454, ptr noundef %1706, ptr noundef %1708, ptr noundef %1710, i32 noundef %1711) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1713:                                             ; preds = %1683
  %.not388 = icmp eq i32 %1686, 0
  br i1 %.not388, label %1744, label %1714

1714:                                             ; preds = %1713
  %1715 = add nsw i32 %1684, 2
  store i32 %1715, ptr @test_count, align 4, !tbaa !5
  %1716 = load ptr, ptr %3, align 8, !tbaa !48
  %1717 = load ptr, ptr %28, align 8, !tbaa !48
  %1718 = zext i32 %1686 to i64
  %bcmp389 = call i32 @bcmp(ptr %1716, ptr %1717, i64 %1718)
  %1719 = icmp eq i32 %bcmp389, 0
  br i1 %1719, label %1744, label %1720

1720:                                             ; preds = %1774, %1714
  %1721 = tail call ptr @__errno_location() #12
  %1722 = load i32, ptr %1721, align 4, !tbaa !5
  %1723 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1724 = call i32 @s2n_print_stacktrace(ptr noundef %1723) #11
  %1725 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1726 = trunc nuw i8 %1725 to i1
  br i1 %1726, label %1727, label %1731

1727:                                             ; preds = %1720
  %1728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1729 = call i32 @fileno(ptr noundef %1728) #11
  %1730 = call i32 @isatty(i32 noundef %1729) #11
  %.not390 = icmp eq i32 %1730, 0
  br i1 %.not390, label %1731, label %1732

1731:                                             ; preds = %1727, %1720
  br label %1732

1732:                                             ; preds = %1727, %1731
  %.str.5.sink996 = phi ptr [ @.str.5, %1731 ], [ @.str.2, %1727 ]
  store i32 %1722, ptr %1721, align 4, !tbaa !5
  %1733 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1734 = load i32, ptr @test_count, align 4, !tbaa !5
  %1735 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1736 = load i32, ptr %1735, align 4, !tbaa !5
  %1737 = call ptr @s2n_strerror(i32 noundef %1736, ptr noundef nonnull @.str.4) #11
  %1738 = load i32, ptr %1735, align 4, !tbaa !5
  %1739 = call ptr @s2n_strerror_debug(i32 noundef %1738, ptr noundef nonnull @.str.4) #11
  %1740 = load i32, ptr %1721, align 4, !tbaa !5
  %1741 = call ptr @strerror(i32 noundef %1740) #11
  %1742 = load i32, ptr %1721, align 4, !tbaa !5
  %1743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1733, ptr noundef nonnull %.str.5.sink996, i32 noundef %1734, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 455, ptr noundef %1737, ptr noundef %1739, ptr noundef %1741, i32 noundef %1742) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1744:                                             ; preds = %1714, %1713
  %1745 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #11
  %1746 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %1746, ptr %29, align 8, !tbaa !9
  %1747 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1748 = getelementptr inbounds i8, ptr %1746, i64 232
  %1749 = load ptr, ptr %1748, align 8, !tbaa !15
  store ptr %1747, ptr %1749, align 8, !tbaa !42
  %1750 = load i32, ptr @test_count, align 4, !tbaa !5
  %1751 = add nsw i32 %1750, 1
  store i32 %1751, ptr @test_count, align 4, !tbaa !5
  %1752 = load ptr, ptr %29, align 8, !tbaa !9
  %1753 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %1752, ptr noundef nonnull %22) #11
  %1754 = call zeroext i1 @s2n_result_is_ok(i32 %1753)
  br i1 %1754, label %1755, label %1599

1755:                                             ; preds = %1744
  %1756 = load i32, ptr @test_count, align 4, !tbaa !5
  %1757 = add nsw i32 %1756, 1
  store i32 %1757, ptr @test_count, align 4, !tbaa !5
  %1758 = load ptr, ptr %29, align 8, !tbaa !9
  %1759 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1758, i32 noundef 15, ptr noundef nonnull %27) #11
  %1760 = call zeroext i1 @s2n_result_is_ok(i32 %1759)
  br i1 %1760, label %1761, label %1629

1761:                                             ; preds = %1755
  %1762 = load i32, ptr @test_count, align 4, !tbaa !5
  %1763 = add nsw i32 %1762, 1
  store i32 %1763, ptr @test_count, align 4, !tbaa !5
  %1764 = load ptr, ptr %29, align 8, !tbaa !9
  %1765 = call i32 @s2n_tls13_derive_secret(ptr noundef %1764, i32 noundef 3, i32 noundef 0, ptr noundef nonnull %3) #11
  %1766 = call zeroext i1 @s2n_result_is_ok(i32 %1765)
  br i1 %1766, label %1767, label %1659

1767:                                             ; preds = %1761
  %1768 = load i32, ptr @test_count, align 4, !tbaa !5
  %1769 = add nsw i32 %1768, 1
  store i32 %1769, ptr @test_count, align 4, !tbaa !5
  %1770 = load i32, ptr %1588, align 8, !tbaa !47
  %1771 = load i32, ptr %1589, align 8, !tbaa !47
  %1772 = icmp eq i32 %1770, %1771
  br i1 %1772, label %1773, label %1689

1773:                                             ; preds = %1767
  %.not388.1 = icmp eq i32 %1770, 0
  br i1 %.not388.1, label %.loopexit476.loopexit, label %1774

1774:                                             ; preds = %1773
  %1775 = add nsw i32 %1768, 2
  store i32 %1775, ptr @test_count, align 4, !tbaa !5
  %1776 = load ptr, ptr %3, align 8, !tbaa !48
  %1777 = load ptr, ptr %28, align 8, !tbaa !48
  %1778 = zext i32 %1770 to i64
  %bcmp389.1 = call i32 @bcmp(ptr %1776, ptr %1777, i64 %1778)
  %1779 = icmp eq i32 %bcmp389.1, 0
  br i1 %1779, label %.loopexit476.loopexit, label %1720

.loopexit476.loopexit:                            ; preds = %1774, %1773
  %1780 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #11
  br label %.loopexit476

.loopexit476:                                     ; preds = %.loopexit476.loopexit, %1585
  %.12 = phi i32 [ -1, %1585 ], [ %.10, %.loopexit476.loopexit ]
  %1781 = call i32 @s2n_free(ptr noundef nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #11
  %1782 = call i32 @s2n_free(ptr noundef nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #11
  br i1 %1587, label %1783, label %2189

1783:                                             ; preds = %.loopexit476
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %30, i8 0, i64 24, i1 false)
  %1784 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %30, ptr noundef nonnull @.str.48) #11
  %1785 = call zeroext i1 @s2n_result_is_ok(i32 %1784)
  br i1 %1785, label %1787, label %.thread456

.thread456:                                       ; preds = %1783
  %1786 = call i32 @s2n_free(ptr noundef nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #11
  br label %2189

1787:                                             ; preds = %1783
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %31, i8 0, i64 24, i1 false)
  %1788 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %31, ptr noundef nonnull @.str.49) #11
  %1789 = call zeroext i1 @s2n_result_is_ok(i32 %1788)
  br i1 %1789, label %.preheader473, label %.loopexit474

.preheader473:                                    ; preds = %1787
  %1790 = getelementptr inbounds i8, ptr %3, i64 8
  %1791 = getelementptr inbounds i8, ptr %31, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #11
  %1792 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %1792, ptr %32, align 8, !tbaa !9
  %1793 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1794 = getelementptr inbounds i8, ptr %1792, i64 232
  %1795 = load ptr, ptr %1794, align 8, !tbaa !15
  store ptr %1793, ptr %1795, align 8, !tbaa !42
  %1796 = load i32, ptr @test_count, align 4, !tbaa !5
  %1797 = add nsw i32 %1796, 1
  store i32 %1797, ptr @test_count, align 4, !tbaa !5
  %1798 = load ptr, ptr %32, align 8, !tbaa !9
  %1799 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %1798, ptr noundef nonnull %22) #11
  %1800 = call zeroext i1 @s2n_result_is_ok(i32 %1799)
  br i1 %1800, label %1825, label %1801

1801:                                             ; preds = %1947, %.preheader473
  %1802 = tail call ptr @__errno_location() #12
  %1803 = load i32, ptr %1802, align 4, !tbaa !5
  %1804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1805 = call i32 @s2n_print_stacktrace(ptr noundef %1804) #11
  %1806 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1807 = trunc nuw i8 %1806 to i1
  br i1 %1807, label %1808, label %1812

1808:                                             ; preds = %1801
  %1809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1810 = call i32 @fileno(ptr noundef %1809) #11
  %1811 = call i32 @isatty(i32 noundef %1810) #11
  %.not377 = icmp eq i32 %1811, 0
  br i1 %.not377, label %1812, label %1813

1812:                                             ; preds = %1808, %1801
  br label %1813

1813:                                             ; preds = %1808, %1812
  %.str.5.sink1007 = phi ptr [ @.str.5, %1812 ], [ @.str.2, %1808 ]
  store i32 %1803, ptr %1802, align 4, !tbaa !5
  %1814 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1815 = load i32, ptr @test_count, align 4, !tbaa !5
  %1816 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1817 = load i32, ptr %1816, align 4, !tbaa !5
  %1818 = call ptr @s2n_strerror(i32 noundef %1817, ptr noundef nonnull @.str.4) #11
  %1819 = load i32, ptr %1816, align 4, !tbaa !5
  %1820 = call ptr @s2n_strerror_debug(i32 noundef %1819, ptr noundef nonnull @.str.4) #11
  %1821 = load i32, ptr %1802, align 4, !tbaa !5
  %1822 = call ptr @strerror(i32 noundef %1821) #11
  %1823 = load i32, ptr %1802, align 4, !tbaa !5
  %1824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1814, ptr noundef nonnull %.str.5.sink1007, i32 noundef %1815, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 493, ptr noundef %1818, ptr noundef %1820, ptr noundef %1822, i32 noundef %1823) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1825:                                             ; preds = %.preheader473
  %1826 = load i32, ptr @test_count, align 4, !tbaa !5
  %1827 = add nsw i32 %1826, 1
  store i32 %1827, ptr @test_count, align 4, !tbaa !5
  %1828 = load ptr, ptr %32, align 8, !tbaa !9
  %1829 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1828, i32 noundef 13, ptr noundef nonnull %30) #11
  %1830 = call zeroext i1 @s2n_result_is_ok(i32 %1829)
  br i1 %1830, label %1855, label %1831

1831:                                             ; preds = %1958, %1825
  %1832 = tail call ptr @__errno_location() #12
  %1833 = load i32, ptr %1832, align 4, !tbaa !5
  %1834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1835 = call i32 @s2n_print_stacktrace(ptr noundef %1834) #11
  %1836 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1837 = trunc nuw i8 %1836 to i1
  br i1 %1837, label %1838, label %1842

1838:                                             ; preds = %1831
  %1839 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1840 = call i32 @fileno(ptr noundef %1839) #11
  %1841 = call i32 @isatty(i32 noundef %1840) #11
  %.not378 = icmp eq i32 %1841, 0
  br i1 %.not378, label %1842, label %1843

1842:                                             ; preds = %1838, %1831
  br label %1843

1843:                                             ; preds = %1838, %1842
  %.str.5.sink1018 = phi ptr [ @.str.5, %1842 ], [ @.str.2, %1838 ]
  store i32 %1833, ptr %1832, align 4, !tbaa !5
  %1844 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1845 = load i32, ptr @test_count, align 4, !tbaa !5
  %1846 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1847 = load i32, ptr %1846, align 4, !tbaa !5
  %1848 = call ptr @s2n_strerror(i32 noundef %1847, ptr noundef nonnull @.str.4) #11
  %1849 = load i32, ptr %1846, align 4, !tbaa !5
  %1850 = call ptr @s2n_strerror_debug(i32 noundef %1849, ptr noundef nonnull @.str.4) #11
  %1851 = load i32, ptr %1832, align 4, !tbaa !5
  %1852 = call ptr @strerror(i32 noundef %1851) #11
  %1853 = load i32, ptr %1832, align 4, !tbaa !5
  %1854 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1844, ptr noundef nonnull %.str.5.sink1018, i32 noundef %1845, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.1, i32 noundef 494, ptr noundef %1848, ptr noundef %1850, ptr noundef %1852, i32 noundef %1853) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1855:                                             ; preds = %1825
  %1856 = load i32, ptr @test_count, align 4, !tbaa !5
  %1857 = add nsw i32 %1856, 1
  store i32 %1857, ptr @test_count, align 4, !tbaa !5
  %1858 = load ptr, ptr %32, align 8, !tbaa !9
  %1859 = call i32 @s2n_derive_resumption_master_secret(ptr noundef %1858) #11
  %1860 = call zeroext i1 @s2n_result_is_ok(i32 %1859)
  br i1 %1860, label %1885, label %1861

1861:                                             ; preds = %1964, %1855
  %1862 = tail call ptr @__errno_location() #12
  %1863 = load i32, ptr %1862, align 4, !tbaa !5
  %1864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1865 = call i32 @s2n_print_stacktrace(ptr noundef %1864) #11
  %1866 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1867 = trunc nuw i8 %1866 to i1
  br i1 %1867, label %1868, label %1872

1868:                                             ; preds = %1861
  %1869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1870 = call i32 @fileno(ptr noundef %1869) #11
  %1871 = call i32 @isatty(i32 noundef %1870) #11
  %.not379 = icmp eq i32 %1871, 0
  br i1 %.not379, label %1872, label %1873

1872:                                             ; preds = %1868, %1861
  br label %1873

1873:                                             ; preds = %1868, %1872
  %.str.5.sink1029 = phi ptr [ @.str.5, %1872 ], [ @.str.2, %1868 ]
  store i32 %1863, ptr %1862, align 4, !tbaa !5
  %1874 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1875 = load i32, ptr @test_count, align 4, !tbaa !5
  %1876 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1877 = load i32, ptr %1876, align 4, !tbaa !5
  %1878 = call ptr @s2n_strerror(i32 noundef %1877, ptr noundef nonnull @.str.4) #11
  %1879 = load i32, ptr %1876, align 4, !tbaa !5
  %1880 = call ptr @s2n_strerror_debug(i32 noundef %1879, ptr noundef nonnull @.str.4) #11
  %1881 = load i32, ptr %1862, align 4, !tbaa !5
  %1882 = call ptr @strerror(i32 noundef %1881) #11
  %1883 = load i32, ptr %1862, align 4, !tbaa !5
  %1884 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1874, ptr noundef nonnull %.str.5.sink1029, i32 noundef %1875, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.1, i32 noundef 496, ptr noundef %1878, ptr noundef %1880, ptr noundef %1882, i32 noundef %1883) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1885:                                             ; preds = %1855
  %1886 = load i32, ptr @test_count, align 4, !tbaa !5
  %1887 = add nsw i32 %1886, 1
  store i32 %1887, ptr @test_count, align 4, !tbaa !5
  %1888 = load i32, ptr %1790, align 8, !tbaa !47
  %1889 = load i32, ptr %1791, align 8, !tbaa !47
  %1890 = icmp eq i32 %1888, %1889
  br i1 %1890, label %1915, label %1891

1891:                                             ; preds = %1970, %1885
  %1892 = tail call ptr @__errno_location() #12
  %1893 = load i32, ptr %1892, align 4, !tbaa !5
  %1894 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1895 = call i32 @s2n_print_stacktrace(ptr noundef %1894) #11
  %1896 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1897 = trunc nuw i8 %1896 to i1
  br i1 %1897, label %1898, label %1902

1898:                                             ; preds = %1891
  %1899 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1900 = call i32 @fileno(ptr noundef %1899) #11
  %1901 = call i32 @isatty(i32 noundef %1900) #11
  %.not380 = icmp eq i32 %1901, 0
  br i1 %.not380, label %1902, label %1903

1902:                                             ; preds = %1898, %1891
  br label %1903

1903:                                             ; preds = %1898, %1902
  %.str.5.sink1040 = phi ptr [ @.str.5, %1902 ], [ @.str.2, %1898 ]
  store i32 %1893, ptr %1892, align 4, !tbaa !5
  %1904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1905 = load i32, ptr @test_count, align 4, !tbaa !5
  %1906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1907 = load i32, ptr %1906, align 4, !tbaa !5
  %1908 = call ptr @s2n_strerror(i32 noundef %1907, ptr noundef nonnull @.str.4) #11
  %1909 = load i32, ptr %1906, align 4, !tbaa !5
  %1910 = call ptr @s2n_strerror_debug(i32 noundef %1909, ptr noundef nonnull @.str.4) #11
  %1911 = load i32, ptr %1892, align 4, !tbaa !5
  %1912 = call ptr @strerror(i32 noundef %1911) #11
  %1913 = load i32, ptr %1892, align 4, !tbaa !5
  %1914 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1904, ptr noundef nonnull %.str.5.sink1040, i32 noundef %1905, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 497, ptr noundef %1908, ptr noundef %1910, ptr noundef %1912, i32 noundef %1913) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1915:                                             ; preds = %1885
  %.not381 = icmp eq i32 %1888, 0
  br i1 %.not381, label %1947, label %1916

1916:                                             ; preds = %1915
  %1917 = add nsw i32 %1886, 2
  store i32 %1917, ptr @test_count, align 4, !tbaa !5
  %1918 = load ptr, ptr %32, align 8, !tbaa !9
  %1919 = getelementptr inbounds i8, ptr %1918, i64 528
  %1920 = load ptr, ptr %31, align 8, !tbaa !48
  %1921 = zext i32 %1888 to i64
  %bcmp382 = call i32 @bcmp(ptr nonnull %1919, ptr %1920, i64 %1921)
  %1922 = icmp eq i32 %bcmp382, 0
  br i1 %1922, label %1947, label %1923

1923:                                             ; preds = %1977, %1916
  %1924 = tail call ptr @__errno_location() #12
  %1925 = load i32, ptr %1924, align 4, !tbaa !5
  %1926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1927 = call i32 @s2n_print_stacktrace(ptr noundef %1926) #11
  %1928 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1929 = trunc nuw i8 %1928 to i1
  br i1 %1929, label %1930, label %1934

1930:                                             ; preds = %1923
  %1931 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1932 = call i32 @fileno(ptr noundef %1931) #11
  %1933 = call i32 @isatty(i32 noundef %1932) #11
  %.not383 = icmp eq i32 %1933, 0
  br i1 %.not383, label %1934, label %1935

1934:                                             ; preds = %1930, %1923
  br label %1935

1935:                                             ; preds = %1930, %1934
  %.str.5.sink1051 = phi ptr [ @.str.5, %1934 ], [ @.str.2, %1930 ]
  store i32 %1925, ptr %1924, align 4, !tbaa !5
  %1936 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1937 = load i32, ptr @test_count, align 4, !tbaa !5
  %1938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1939 = load i32, ptr %1938, align 4, !tbaa !5
  %1940 = call ptr @s2n_strerror(i32 noundef %1939, ptr noundef nonnull @.str.4) #11
  %1941 = load i32, ptr %1938, align 4, !tbaa !5
  %1942 = call ptr @s2n_strerror_debug(i32 noundef %1941, ptr noundef nonnull @.str.4) #11
  %1943 = load i32, ptr %1924, align 4, !tbaa !5
  %1944 = call ptr @strerror(i32 noundef %1943) #11
  %1945 = load i32, ptr %1924, align 4, !tbaa !5
  %1946 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1936, ptr noundef nonnull %.str.5.sink1051, i32 noundef %1937, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 499, ptr noundef %1940, ptr noundef %1942, ptr noundef %1944, i32 noundef %1945) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1947:                                             ; preds = %1916, %1915
  %1948 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #11
  %1949 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %1949, ptr %32, align 8, !tbaa !9
  %1950 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1951 = getelementptr inbounds i8, ptr %1949, i64 232
  %1952 = load ptr, ptr %1951, align 8, !tbaa !15
  store ptr %1950, ptr %1952, align 8, !tbaa !42
  %1953 = load i32, ptr @test_count, align 4, !tbaa !5
  %1954 = add nsw i32 %1953, 1
  store i32 %1954, ptr @test_count, align 4, !tbaa !5
  %1955 = load ptr, ptr %32, align 8, !tbaa !9
  %1956 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %1955, ptr noundef nonnull %22) #11
  %1957 = call zeroext i1 @s2n_result_is_ok(i32 %1956)
  br i1 %1957, label %1958, label %1801

1958:                                             ; preds = %1947
  %1959 = load i32, ptr @test_count, align 4, !tbaa !5
  %1960 = add nsw i32 %1959, 1
  store i32 %1960, ptr @test_count, align 4, !tbaa !5
  %1961 = load ptr, ptr %32, align 8, !tbaa !9
  %1962 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %1961, i32 noundef 13, ptr noundef nonnull %30) #11
  %1963 = call zeroext i1 @s2n_result_is_ok(i32 %1962)
  br i1 %1963, label %1964, label %1831

1964:                                             ; preds = %1958
  %1965 = load i32, ptr @test_count, align 4, !tbaa !5
  %1966 = add nsw i32 %1965, 1
  store i32 %1966, ptr @test_count, align 4, !tbaa !5
  %1967 = load ptr, ptr %32, align 8, !tbaa !9
  %1968 = call i32 @s2n_derive_resumption_master_secret(ptr noundef %1967) #11
  %1969 = call zeroext i1 @s2n_result_is_ok(i32 %1968)
  br i1 %1969, label %1970, label %1861

1970:                                             ; preds = %1964
  %1971 = load i32, ptr @test_count, align 4, !tbaa !5
  %1972 = add nsw i32 %1971, 1
  store i32 %1972, ptr @test_count, align 4, !tbaa !5
  %1973 = load i32, ptr %1790, align 8, !tbaa !47
  %1974 = load i32, ptr %1791, align 8, !tbaa !47
  %1975 = icmp eq i32 %1973, %1974
  br i1 %1975, label %1976, label %1891

1976:                                             ; preds = %1970
  %.not381.1 = icmp eq i32 %1973, 0
  br i1 %.not381.1, label %.loopexit474.loopexit, label %1977

1977:                                             ; preds = %1976
  %1978 = add nsw i32 %1971, 2
  store i32 %1978, ptr @test_count, align 4, !tbaa !5
  %1979 = load ptr, ptr %32, align 8, !tbaa !9
  %1980 = getelementptr inbounds i8, ptr %1979, i64 528
  %1981 = load ptr, ptr %31, align 8, !tbaa !48
  %1982 = zext i32 %1973 to i64
  %bcmp382.1 = call i32 @bcmp(ptr nonnull %1980, ptr %1981, i64 %1982)
  %1983 = icmp eq i32 %bcmp382.1, 0
  br i1 %1983, label %.loopexit474.loopexit, label %1923

.loopexit474.loopexit:                            ; preds = %1977, %1976
  %1984 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #11
  br label %.loopexit474

.loopexit474:                                     ; preds = %.loopexit474.loopexit, %1787
  %.14 = phi i32 [ -1, %1787 ], [ %.12, %.loopexit474.loopexit ]
  %1985 = call i32 @s2n_free(ptr noundef nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #11
  %1986 = call i32 @s2n_free(ptr noundef nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #11
  br i1 %1789, label %1987, label %2189

1987:                                             ; preds = %.loopexit474
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %33, i8 0, i64 24, i1 false)
  %1988 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %33, ptr noundef nonnull @.str.53) #11
  %1989 = call zeroext i1 @s2n_result_is_ok(i32 %1988)
  br i1 %1989, label %1990, label %2187

1990:                                             ; preds = %1987
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %34, i8 0, i64 24, i1 false)
  %1991 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %34, ptr noundef nonnull @.str.54) #11
  %1992 = call zeroext i1 @s2n_result_is_ok(i32 %1991)
  br i1 %1992, label %.preheader471, label %.loopexit472

.preheader471:                                    ; preds = %1990
  %1993 = getelementptr inbounds i8, ptr %3, i64 8
  %1994 = getelementptr inbounds i8, ptr %34, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #11
  %1995 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %1995, ptr %35, align 8, !tbaa !9
  %1996 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %1997 = getelementptr inbounds i8, ptr %1995, i64 232
  %1998 = load ptr, ptr %1997, align 8, !tbaa !15
  store ptr %1996, ptr %1998, align 8, !tbaa !42
  %1999 = load i32, ptr @test_count, align 4, !tbaa !5
  %2000 = add nsw i32 %1999, 1
  store i32 %2000, ptr @test_count, align 4, !tbaa !5
  %2001 = load ptr, ptr %35, align 8, !tbaa !9
  %2002 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %2001, ptr noundef nonnull %22) #11
  %2003 = call zeroext i1 @s2n_result_is_ok(i32 %2002)
  br i1 %2003, label %2028, label %2004

2004:                                             ; preds = %2149, %.preheader471
  %2005 = tail call ptr @__errno_location() #12
  %2006 = load i32, ptr %2005, align 4, !tbaa !5
  %2007 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2008 = call i32 @s2n_print_stacktrace(ptr noundef %2007) #11
  %2009 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2010 = trunc nuw i8 %2009 to i1
  br i1 %2010, label %2011, label %2015

2011:                                             ; preds = %2004
  %2012 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2013 = call i32 @fileno(ptr noundef %2012) #11
  %2014 = call i32 @isatty(i32 noundef %2013) #11
  %.not370 = icmp eq i32 %2014, 0
  br i1 %.not370, label %2015, label %2016

2015:                                             ; preds = %2011, %2004
  br label %2016

2016:                                             ; preds = %2011, %2015
  %.str.5.sink1062 = phi ptr [ @.str.5, %2015 ], [ @.str.2, %2011 ]
  store i32 %2006, ptr %2005, align 4, !tbaa !5
  %2017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2018 = load i32, ptr @test_count, align 4, !tbaa !5
  %2019 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2020 = load i32, ptr %2019, align 4, !tbaa !5
  %2021 = call ptr @s2n_strerror(i32 noundef %2020, ptr noundef nonnull @.str.4) #11
  %2022 = load i32, ptr %2019, align 4, !tbaa !5
  %2023 = call ptr @s2n_strerror_debug(i32 noundef %2022, ptr noundef nonnull @.str.4) #11
  %2024 = load i32, ptr %2005, align 4, !tbaa !5
  %2025 = call ptr @strerror(i32 noundef %2024) #11
  %2026 = load i32, ptr %2005, align 4, !tbaa !5
  %2027 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2017, ptr noundef nonnull %.str.5.sink1062, i32 noundef %2018, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 538, ptr noundef %2021, ptr noundef %2023, ptr noundef %2025, i32 noundef %2026) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2028:                                             ; preds = %.preheader471
  %2029 = load i32, ptr @test_count, align 4, !tbaa !5
  %2030 = add nsw i32 %2029, 1
  store i32 %2030, ptr @test_count, align 4, !tbaa !5
  %2031 = load ptr, ptr %35, align 8, !tbaa !9
  %2032 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %2031, i32 noundef 15, ptr noundef nonnull %33) #11
  %2033 = call zeroext i1 @s2n_result_is_ok(i32 %2032)
  br i1 %2033, label %2058, label %2034

2034:                                             ; preds = %2160, %2028
  %2035 = tail call ptr @__errno_location() #12
  %2036 = load i32, ptr %2035, align 4, !tbaa !5
  %2037 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2038 = call i32 @s2n_print_stacktrace(ptr noundef %2037) #11
  %2039 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2040 = trunc nuw i8 %2039 to i1
  br i1 %2040, label %2041, label %2045

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

2045:                                             ; preds = %2041, %2034
  br label %2046

2046:                                             ; preds = %2041, %2045
  %.str.5.sink1073 = phi ptr [ @.str.5, %2045 ], [ @.str.2, %2041 ]
  store i32 %2036, ptr %2035, align 4, !tbaa !5
  %2047 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2048 = load i32, ptr @test_count, align 4, !tbaa !5
  %2049 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2050 = load i32, ptr %2049, align 4, !tbaa !5
  %2051 = call ptr @s2n_strerror(i32 noundef %2050, ptr noundef nonnull @.str.4) #11
  %2052 = load i32, ptr %2049, align 4, !tbaa !5
  %2053 = call ptr @s2n_strerror_debug(i32 noundef %2052, ptr noundef nonnull @.str.4) #11
  %2054 = load i32, ptr %2035, align 4, !tbaa !5
  %2055 = call ptr @strerror(i32 noundef %2054) #11
  %2056 = load i32, ptr %2035, align 4, !tbaa !5
  %2057 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2047, ptr noundef nonnull %.str.5.sink1073, i32 noundef %2048, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 539, ptr noundef %2051, ptr noundef %2053, ptr noundef %2055, i32 noundef %2056) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2058:                                             ; preds = %2028
  %2059 = load i32, ptr @test_count, align 4, !tbaa !5
  %2060 = add nsw i32 %2059, 1
  store i32 %2060, ptr @test_count, align 4, !tbaa !5
  %2061 = load ptr, ptr %35, align 8, !tbaa !9
  %2062 = call i32 @s2n_derive_exporter_master_secret(ptr noundef %2061, ptr noundef nonnull %3) #11
  %2063 = call zeroext i1 @s2n_result_is_ok(i32 %2062)
  br i1 %2063, label %2088, label %2064

2064:                                             ; preds = %2166, %2058
  %2065 = tail call ptr @__errno_location() #12
  %2066 = load i32, ptr %2065, align 4, !tbaa !5
  %2067 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2068 = call i32 @s2n_print_stacktrace(ptr noundef %2067) #11
  %2069 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2070 = trunc nuw i8 %2069 to i1
  br i1 %2070, label %2071, label %2075

2071:                                             ; preds = %2064
  %2072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2073 = call i32 @fileno(ptr noundef %2072) #11
  %2074 = call i32 @isatty(i32 noundef %2073) #11
  %.not372 = icmp eq i32 %2074, 0
  br i1 %.not372, label %2075, label %2076

2075:                                             ; preds = %2071, %2064
  br label %2076

2076:                                             ; preds = %2071, %2075
  %.str.5.sink1084 = phi ptr [ @.str.5, %2075 ], [ @.str.2, %2071 ]
  store i32 %2066, ptr %2065, align 4, !tbaa !5
  %2077 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2078 = load i32, ptr @test_count, align 4, !tbaa !5
  %2079 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2080 = load i32, ptr %2079, align 4, !tbaa !5
  %2081 = call ptr @s2n_strerror(i32 noundef %2080, ptr noundef nonnull @.str.4) #11
  %2082 = load i32, ptr %2079, align 4, !tbaa !5
  %2083 = call ptr @s2n_strerror_debug(i32 noundef %2082, ptr noundef nonnull @.str.4) #11
  %2084 = load i32, ptr %2065, align 4, !tbaa !5
  %2085 = call ptr @strerror(i32 noundef %2084) #11
  %2086 = load i32, ptr %2065, align 4, !tbaa !5
  %2087 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2077, ptr noundef nonnull %.str.5.sink1084, i32 noundef %2078, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 541, ptr noundef %2081, ptr noundef %2083, ptr noundef %2085, i32 noundef %2086) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2088:                                             ; preds = %2058
  %2089 = load i32, ptr @test_count, align 4, !tbaa !5
  %2090 = add nsw i32 %2089, 1
  store i32 %2090, ptr @test_count, align 4, !tbaa !5
  %2091 = load i32, ptr %1993, align 8, !tbaa !47
  %2092 = load i32, ptr %1994, align 8, !tbaa !47
  %2093 = icmp eq i32 %2091, %2092
  br i1 %2093, label %2118, label %2094

2094:                                             ; preds = %2172, %2088
  %2095 = tail call ptr @__errno_location() #12
  %2096 = load i32, ptr %2095, align 4, !tbaa !5
  %2097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2098 = call i32 @s2n_print_stacktrace(ptr noundef %2097) #11
  %2099 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2100 = trunc nuw i8 %2099 to i1
  br i1 %2100, label %2101, label %2105

2101:                                             ; preds = %2094
  %2102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2103 = call i32 @fileno(ptr noundef %2102) #11
  %2104 = call i32 @isatty(i32 noundef %2103) #11
  %.not373 = icmp eq i32 %2104, 0
  br i1 %.not373, label %2105, label %2106

2105:                                             ; preds = %2101, %2094
  br label %2106

2106:                                             ; preds = %2101, %2105
  %.str.5.sink1095 = phi ptr [ @.str.5, %2105 ], [ @.str.2, %2101 ]
  store i32 %2096, ptr %2095, align 4, !tbaa !5
  %2107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2108 = load i32, ptr @test_count, align 4, !tbaa !5
  %2109 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2110 = load i32, ptr %2109, align 4, !tbaa !5
  %2111 = call ptr @s2n_strerror(i32 noundef %2110, ptr noundef nonnull @.str.4) #11
  %2112 = load i32, ptr %2109, align 4, !tbaa !5
  %2113 = call ptr @s2n_strerror_debug(i32 noundef %2112, ptr noundef nonnull @.str.4) #11
  %2114 = load i32, ptr %2095, align 4, !tbaa !5
  %2115 = call ptr @strerror(i32 noundef %2114) #11
  %2116 = load i32, ptr %2095, align 4, !tbaa !5
  %2117 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2107, ptr noundef nonnull %.str.5.sink1095, i32 noundef %2108, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 542, ptr noundef %2111, ptr noundef %2113, ptr noundef %2115, i32 noundef %2116) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2118:                                             ; preds = %2088
  %.not374 = icmp eq i32 %2091, 0
  br i1 %.not374, label %2149, label %2119

2119:                                             ; preds = %2118
  %2120 = add nsw i32 %2089, 2
  store i32 %2120, ptr @test_count, align 4, !tbaa !5
  %2121 = load ptr, ptr %3, align 8, !tbaa !48
  %2122 = load ptr, ptr %34, align 8, !tbaa !48
  %2123 = zext i32 %2091 to i64
  %bcmp375 = call i32 @bcmp(ptr %2121, ptr %2122, i64 %2123)
  %2124 = icmp eq i32 %bcmp375, 0
  br i1 %2124, label %2149, label %2125

2125:                                             ; preds = %2179, %2119
  %2126 = tail call ptr @__errno_location() #12
  %2127 = load i32, ptr %2126, align 4, !tbaa !5
  %2128 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2129 = call i32 @s2n_print_stacktrace(ptr noundef %2128) #11
  %2130 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2131 = trunc nuw i8 %2130 to i1
  br i1 %2131, label %2132, label %2136

2132:                                             ; preds = %2125
  %2133 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2134 = call i32 @fileno(ptr noundef %2133) #11
  %2135 = call i32 @isatty(i32 noundef %2134) #11
  %.not376 = icmp eq i32 %2135, 0
  br i1 %.not376, label %2136, label %2137

2136:                                             ; preds = %2132, %2125
  br label %2137

2137:                                             ; preds = %2132, %2136
  %.str.5.sink1106 = phi ptr [ @.str.5, %2136 ], [ @.str.2, %2132 ]
  store i32 %2127, ptr %2126, align 4, !tbaa !5
  %2138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2139 = load i32, ptr @test_count, align 4, !tbaa !5
  %2140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2141 = load i32, ptr %2140, align 4, !tbaa !5
  %2142 = call ptr @s2n_strerror(i32 noundef %2141, ptr noundef nonnull @.str.4) #11
  %2143 = load i32, ptr %2140, align 4, !tbaa !5
  %2144 = call ptr @s2n_strerror_debug(i32 noundef %2143, ptr noundef nonnull @.str.4) #11
  %2145 = load i32, ptr %2126, align 4, !tbaa !5
  %2146 = call ptr @strerror(i32 noundef %2145) #11
  %2147 = load i32, ptr %2126, align 4, !tbaa !5
  %2148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2138, ptr noundef nonnull %.str.5.sink1106, i32 noundef %2139, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 543, ptr noundef %2142, ptr noundef %2144, ptr noundef %2146, i32 noundef %2147) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2149:                                             ; preds = %2119, %2118
  %2150 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #11
  %2151 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %2151, ptr %35, align 8, !tbaa !9
  %2152 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2153 = getelementptr inbounds i8, ptr %2151, i64 232
  %2154 = load ptr, ptr %2153, align 8, !tbaa !15
  store ptr %2152, ptr %2154, align 8, !tbaa !42
  %2155 = load i32, ptr @test_count, align 4, !tbaa !5
  %2156 = add nsw i32 %2155, 1
  store i32 %2156, ptr @test_count, align 4, !tbaa !5
  %2157 = load ptr, ptr %35, align 8, !tbaa !9
  %2158 = call i32 @s2n_connection_set_test_master_secret(ptr noundef %2157, ptr noundef nonnull %22) #11
  %2159 = call zeroext i1 @s2n_result_is_ok(i32 %2158)
  br i1 %2159, label %2160, label %2004

2160:                                             ; preds = %2149
  %2161 = load i32, ptr @test_count, align 4, !tbaa !5
  %2162 = add nsw i32 %2161, 1
  store i32 %2162, ptr @test_count, align 4, !tbaa !5
  %2163 = load ptr, ptr %35, align 8, !tbaa !9
  %2164 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %2163, i32 noundef 15, ptr noundef nonnull %33) #11
  %2165 = call zeroext i1 @s2n_result_is_ok(i32 %2164)
  br i1 %2165, label %2166, label %2034

2166:                                             ; preds = %2160
  %2167 = load i32, ptr @test_count, align 4, !tbaa !5
  %2168 = add nsw i32 %2167, 1
  store i32 %2168, ptr @test_count, align 4, !tbaa !5
  %2169 = load ptr, ptr %35, align 8, !tbaa !9
  %2170 = call i32 @s2n_derive_exporter_master_secret(ptr noundef %2169, ptr noundef nonnull %3) #11
  %2171 = call zeroext i1 @s2n_result_is_ok(i32 %2170)
  br i1 %2171, label %2172, label %2064

2172:                                             ; preds = %2166
  %2173 = load i32, ptr @test_count, align 4, !tbaa !5
  %2174 = add nsw i32 %2173, 1
  store i32 %2174, ptr @test_count, align 4, !tbaa !5
  %2175 = load i32, ptr %1993, align 8, !tbaa !47
  %2176 = load i32, ptr %1994, align 8, !tbaa !47
  %2177 = icmp eq i32 %2175, %2176
  br i1 %2177, label %2178, label %2094

2178:                                             ; preds = %2172
  %.not374.1 = icmp eq i32 %2175, 0
  br i1 %.not374.1, label %.loopexit472.loopexit, label %2179

2179:                                             ; preds = %2178
  %2180 = add nsw i32 %2173, 2
  store i32 %2180, ptr @test_count, align 4, !tbaa !5
  %2181 = load ptr, ptr %3, align 8, !tbaa !48
  %2182 = load ptr, ptr %34, align 8, !tbaa !48
  %2183 = zext i32 %2175 to i64
  %bcmp375.1 = call i32 @bcmp(ptr %2181, ptr %2182, i64 %2183)
  %2184 = icmp eq i32 %bcmp375.1, 0
  br i1 %2184, label %.loopexit472.loopexit, label %2125

.loopexit472.loopexit:                            ; preds = %2179, %2178
  %2185 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #11
  br label %.loopexit472

.loopexit472:                                     ; preds = %.loopexit472.loopexit, %1990
  %.16293 = phi i32 [ 1, %1990 ], [ 0, %.loopexit472.loopexit ]
  %.16 = phi i32 [ -1, %1990 ], [ %.14, %.loopexit472.loopexit ]
  %2186 = call i32 @s2n_free(ptr noundef nonnull %34) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #11
  br label %2187

2187:                                             ; preds = %1987, %.loopexit472
  %.17294 = phi i32 [ %.16293, %.loopexit472 ], [ 1, %1987 ]
  %.17 = phi i32 [ %.16, %.loopexit472 ], [ -1, %1987 ]
  %2188 = call i32 @s2n_free(ptr noundef nonnull %33) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #11
  br label %2189

2189:                                             ; preds = %.thread456, %.thread452, %.thread448, %1218, %2187, %.loopexit474, %.loopexit476, %.loopexit478
  %.18295 = phi i32 [ %.17294, %2187 ], [ 1, %.loopexit474 ], [ 1, %.loopexit476 ], [ 1, %.loopexit478 ], [ 1, %1218 ], [ 1, %.thread448 ], [ 1, %.thread452 ], [ 1, %.thread456 ]
  %.18 = phi i32 [ %.17, %2187 ], [ %.14, %.loopexit474 ], [ %.12, %.loopexit476 ], [ %.10, %.loopexit478 ], [ -1, %1218 ], [ -1, %.thread448 ], [ -1, %.thread452 ], [ -1, %.thread456 ]
  %2190 = call i32 @s2n_free(ptr noundef nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #11
  br label %2191

2191:                                             ; preds = %2189, %711, %963, %1215, %288, %.thread, %.thread440, %.thread444
  %.19296 = phi i32 [ %.18295, %2189 ], [ 1, %1215 ], [ 1, %963 ], [ 1, %711 ], [ 1, %288 ], [ 1, %.thread ], [ 1, %.thread440 ], [ 1, %.thread444 ]
  %.19 = phi i32 [ %.18, %2189 ], [ %.8, %1215 ], [ %.5, %963 ], [ %.2, %711 ], [ -1, %288 ], [ -1, %.thread ], [ -1, %.thread440 ], [ -1, %.thread444 ]
  %2192 = call i32 @s2n_free(ptr noundef nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #11
  %2193 = call i32 @s2n_free(ptr noundef nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #11
  %cond = icmp eq i32 %.19296, 0
  br i1 %cond, label %2194, label %3047

2194:                                             ; preds = %2191
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %36) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %36, i8 0, i64 24, i1 false)
  %2195 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %36, ptr noundef nonnull @.str.56) #11
  %2196 = call zeroext i1 @s2n_result_is_ok(i32 %2195)
  br i1 %2196, label %2198, label %.thread466

.thread466:                                       ; preds = %2194
  %2197 = call i32 @s2n_free(ptr noundef nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #11
  br label %3047

2198:                                             ; preds = %2194
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %37, i8 0, i64 24, i1 false)
  %2199 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %37, ptr noundef nonnull @.str.57) #11
  %2200 = call zeroext i1 @s2n_result_is_ok(i32 %2199)
  br i1 %2200, label %.preheader470, label %2969

.preheader470:                                    ; preds = %2198
  %2201 = getelementptr inbounds i8, ptr %36, i64 8
  %2202 = getelementptr inbounds i8, ptr %37, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #11
  %2203 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %2203, ptr %38, align 8, !tbaa !9
  %2204 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2205 = getelementptr inbounds i8, ptr %2203, i64 232
  %2206 = load ptr, ptr %2205, align 8, !tbaa !15
  store ptr %2204, ptr %2206, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #11
  %2207 = load ptr, ptr %38, align 8, !tbaa !9
  %2208 = call ptr @s2n_test_psk_new(ptr noundef %2207) #11
  store ptr %2208, ptr %39, align 8, !tbaa !9
  %2209 = load i32, ptr @test_count, align 4, !tbaa !5
  %2210 = add nsw i32 %2209, 1
  store i32 %2210, ptr @test_count, align 4, !tbaa !5
  %2211 = icmp eq ptr %2208, null
  br i1 %2211, label %2224, label %2248

.preheader469:                                    ; preds = %2528
  %2212 = getelementptr inbounds i8, ptr %3, i64 8
  %2213 = getelementptr inbounds i8, ptr %40, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #11
  %2214 = call ptr @s2n_connection_new(i32 noundef %165) #11
  store ptr %2214, ptr %41, align 8, !tbaa !9
  %2215 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2216 = getelementptr inbounds i8, ptr %2214, i64 232
  %2217 = load ptr, ptr %2216, align 8, !tbaa !15
  store ptr %2215, ptr %2217, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #11
  %2218 = load ptr, ptr %41, align 8, !tbaa !9
  %2219 = call ptr @s2n_test_psk_new(ptr noundef %2218) #11
  store ptr %2219, ptr %42, align 8, !tbaa !9
  %2220 = load i32, ptr @test_count, align 4, !tbaa !5
  %2221 = add nsw i32 %2220, 1
  store i32 %2221, ptr @test_count, align 4, !tbaa !5
  %2222 = icmp eq ptr %2219, null
  br i1 %2222, label %2533, label %2557

.thread464:                                       ; preds = %2528
  %2223 = call i32 @s2n_free(ptr noundef nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %40) #11
  br label %2969

2224:                                             ; preds = %2466, %.preheader470
  %2225 = tail call ptr @__errno_location() #12
  %2226 = load i32, ptr %2225, align 4, !tbaa !5
  %2227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2228 = call i32 @s2n_print_stacktrace(ptr noundef %2227) #11
  %2229 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2230 = trunc nuw i8 %2229 to i1
  br i1 %2230, label %2231, label %2235

2231:                                             ; preds = %2224
  %2232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2233 = call i32 @fileno(ptr noundef %2232) #11
  %2234 = call i32 @isatty(i32 noundef %2233) #11
  %.not369 = icmp eq i32 %2234, 0
  br i1 %.not369, label %2235, label %2236

2235:                                             ; preds = %2231, %2224
  br label %2236

2236:                                             ; preds = %2231, %2235
  %.str.5.sink1117 = phi ptr [ @.str.5, %2235 ], [ @.str.2, %2231 ]
  store i32 %2226, ptr %2225, align 4, !tbaa !5
  %2237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2238 = load i32, ptr @test_count, align 4, !tbaa !5
  %2239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2240 = load i32, ptr %2239, align 4, !tbaa !5
  %2241 = call ptr @s2n_strerror(i32 noundef %2240, ptr noundef nonnull @.str.4) #11
  %2242 = load i32, ptr %2239, align 4, !tbaa !5
  %2243 = call ptr @s2n_strerror_debug(i32 noundef %2242, ptr noundef nonnull @.str.4) #11
  %2244 = load i32, ptr %2225, align 4, !tbaa !5
  %2245 = call ptr @strerror(i32 noundef %2244) #11
  %2246 = load i32, ptr %2225, align 4, !tbaa !5
  %2247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2237, ptr noundef nonnull %.str.5.sink1117, i32 noundef %2238, ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.1, i32 noundef 579, ptr noundef %2241, ptr noundef %2243, ptr noundef %2245, i32 noundef %2246) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2248:                                             ; preds = %.preheader470
  %2249 = add nsw i32 %2209, 2
  store i32 %2249, ptr @test_count, align 4, !tbaa !5
  %2250 = load ptr, ptr %36, align 8, !tbaa !48
  %2251 = load i32, ptr %2201, align 8, !tbaa !47
  %2252 = trunc i32 %2251 to i16
  %2253 = call i32 @s2n_psk_set_secret(ptr noundef nonnull %2208, ptr noundef %2250, i16 noundef zeroext %2252) #11
  %2254 = icmp eq i32 %2253, -1
  br i1 %2254, label %2255, label %2279

2255:                                             ; preds = %2478, %2248
  %2256 = tail call ptr @__errno_location() #12
  %2257 = load i32, ptr %2256, align 4, !tbaa !5
  %2258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2259 = call i32 @s2n_print_stacktrace(ptr noundef %2258) #11
  %2260 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2261 = trunc nuw i8 %2260 to i1
  br i1 %2261, label %2262, label %2266

2262:                                             ; preds = %2255
  %2263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2264 = call i32 @fileno(ptr noundef %2263) #11
  %2265 = call i32 @isatty(i32 noundef %2264) #11
  %.not368 = icmp eq i32 %2265, 0
  br i1 %.not368, label %2266, label %2267

2266:                                             ; preds = %2262, %2255
  br label %2267

2267:                                             ; preds = %2262, %2266
  %.str.5.sink1128 = phi ptr [ @.str.5, %2266 ], [ @.str.2, %2262 ]
  store i32 %2257, ptr %2256, align 4, !tbaa !5
  %2268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2269 = load i32, ptr @test_count, align 4, !tbaa !5
  %2270 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2271 = load i32, ptr %2270, align 4, !tbaa !5
  %2272 = call ptr @s2n_strerror(i32 noundef %2271, ptr noundef nonnull @.str.4) #11
  %2273 = load i32, ptr %2270, align 4, !tbaa !5
  %2274 = call ptr @s2n_strerror_debug(i32 noundef %2273, ptr noundef nonnull @.str.4) #11
  %2275 = load i32, ptr %2256, align 4, !tbaa !5
  %2276 = call ptr @strerror(i32 noundef %2275) #11
  %2277 = load i32, ptr %2256, align 4, !tbaa !5
  %2278 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2268, ptr noundef nonnull %.str.5.sink1128, i32 noundef %2269, ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.1, i32 noundef 580, ptr noundef %2272, ptr noundef %2274, ptr noundef %2276, i32 noundef %2277) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2279:                                             ; preds = %2248
  %2280 = load i32, ptr @test_count, align 4, !tbaa !5
  %2281 = add nsw i32 %2280, 1
  store i32 %2281, ptr @test_count, align 4, !tbaa !5
  %2282 = load ptr, ptr %39, align 8, !tbaa !9
  %2283 = call i32 @s2n_extract_early_secret(ptr noundef %2282) #11
  %2284 = call zeroext i1 @s2n_result_is_ok(i32 %2283)
  br i1 %2284, label %2309, label %2285

2285:                                             ; preds = %2485, %2279
  %2286 = tail call ptr @__errno_location() #12
  %2287 = load i32, ptr %2286, align 4, !tbaa !5
  %2288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2289 = call i32 @s2n_print_stacktrace(ptr noundef %2288) #11
  %2290 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2291 = trunc nuw i8 %2290 to i1
  br i1 %2291, label %2292, label %2296

2292:                                             ; preds = %2285
  %2293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2294 = call i32 @fileno(ptr noundef %2293) #11
  %2295 = call i32 @isatty(i32 noundef %2294) #11
  %.not358 = icmp eq i32 %2295, 0
  br i1 %.not358, label %2296, label %2297

2296:                                             ; preds = %2292, %2285
  br label %2297

2297:                                             ; preds = %2292, %2296
  %.str.5.sink1139 = phi ptr [ @.str.5, %2296 ], [ @.str.2, %2292 ]
  store i32 %2287, ptr %2286, align 4, !tbaa !5
  %2298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2299 = load i32, ptr @test_count, align 4, !tbaa !5
  %2300 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2301 = load i32, ptr %2300, align 4, !tbaa !5
  %2302 = call ptr @s2n_strerror(i32 noundef %2301, ptr noundef nonnull @.str.4) #11
  %2303 = load i32, ptr %2300, align 4, !tbaa !5
  %2304 = call ptr @s2n_strerror_debug(i32 noundef %2303, ptr noundef nonnull @.str.4) #11
  %2305 = load i32, ptr %2286, align 4, !tbaa !5
  %2306 = call ptr @strerror(i32 noundef %2305) #11
  %2307 = load i32, ptr %2286, align 4, !tbaa !5
  %2308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2298, ptr noundef nonnull %.str.5.sink1139, i32 noundef %2299, ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.1, i32 noundef 583, ptr noundef %2302, ptr noundef %2304, ptr noundef %2306, i32 noundef %2307) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2309:                                             ; preds = %2279
  %2310 = load i32, ptr @test_count, align 4, !tbaa !5
  %2311 = add nsw i32 %2310, 1
  store i32 %2311, ptr @test_count, align 4, !tbaa !5
  %2312 = load ptr, ptr %39, align 8, !tbaa !9
  %2313 = getelementptr inbounds i8, ptr %2312, i64 80
  %2314 = load i32, ptr %2313, align 8, !tbaa !54
  %2315 = load i32, ptr %2202, align 8, !tbaa !47
  %2316 = icmp eq i32 %2314, %2315
  br i1 %2316, label %2341, label %2317

2317:                                             ; preds = %2491, %2309
  %2318 = tail call ptr @__errno_location() #12
  %2319 = load i32, ptr %2318, align 4, !tbaa !5
  %2320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2321 = call i32 @s2n_print_stacktrace(ptr noundef %2320) #11
  %2322 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2323 = trunc nuw i8 %2322 to i1
  br i1 %2323, label %2324, label %2328

2324:                                             ; preds = %2317
  %2325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2326 = call i32 @fileno(ptr noundef %2325) #11
  %2327 = call i32 @isatty(i32 noundef %2326) #11
  %.not359 = icmp eq i32 %2327, 0
  br i1 %.not359, label %2328, label %2329

2328:                                             ; preds = %2324, %2317
  br label %2329

2329:                                             ; preds = %2324, %2328
  %.str.5.sink1150 = phi ptr [ @.str.5, %2328 ], [ @.str.2, %2324 ]
  store i32 %2319, ptr %2318, align 4, !tbaa !5
  %2330 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2331 = load i32, ptr @test_count, align 4, !tbaa !5
  %2332 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2333 = load i32, ptr %2332, align 4, !tbaa !5
  %2334 = call ptr @s2n_strerror(i32 noundef %2333, ptr noundef nonnull @.str.4) #11
  %2335 = load i32, ptr %2332, align 4, !tbaa !5
  %2336 = call ptr @s2n_strerror_debug(i32 noundef %2335, ptr noundef nonnull @.str.4) #11
  %2337 = load i32, ptr %2318, align 4, !tbaa !5
  %2338 = call ptr @strerror(i32 noundef %2337) #11
  %2339 = load i32, ptr %2318, align 4, !tbaa !5
  %2340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2330, ptr noundef nonnull %.str.5.sink1150, i32 noundef %2331, ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.1, i32 noundef 584, ptr noundef %2334, ptr noundef %2336, ptr noundef %2338, i32 noundef %2339) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2341:                                             ; preds = %2309
  %.not360 = icmp eq i32 %2314, 0
  br i1 %.not360, label %2373, label %2342

2342:                                             ; preds = %2341
  %2343 = add nsw i32 %2310, 2
  store i32 %2343, ptr @test_count, align 4, !tbaa !5
  %2344 = getelementptr inbounds i8, ptr %2312, i64 72
  %2345 = load ptr, ptr %2344, align 8, !tbaa !57
  %2346 = load ptr, ptr %37, align 8, !tbaa !48
  %2347 = zext i32 %2314 to i64
  %bcmp361 = call i32 @bcmp(ptr %2345, ptr %2346, i64 %2347)
  %2348 = icmp eq i32 %bcmp361, 0
  br i1 %2348, label %2373, label %2349

2349:                                             ; preds = %2500, %2342
  %2350 = tail call ptr @__errno_location() #12
  %2351 = load i32, ptr %2350, align 4, !tbaa !5
  %2352 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2353 = call i32 @s2n_print_stacktrace(ptr noundef %2352) #11
  %2354 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2355 = trunc nuw i8 %2354 to i1
  br i1 %2355, label %2356, label %2360

2356:                                             ; preds = %2349
  %2357 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2358 = call i32 @fileno(ptr noundef %2357) #11
  %2359 = call i32 @isatty(i32 noundef %2358) #11
  %.not362 = icmp eq i32 %2359, 0
  br i1 %.not362, label %2360, label %2361

2360:                                             ; preds = %2356, %2349
  br label %2361

2361:                                             ; preds = %2356, %2360
  %.str.5.sink1161 = phi ptr [ @.str.5, %2360 ], [ @.str.2, %2356 ]
  store i32 %2351, ptr %2350, align 4, !tbaa !5
  %2362 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2363 = load i32, ptr @test_count, align 4, !tbaa !5
  %2364 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2365 = load i32, ptr %2364, align 4, !tbaa !5
  %2366 = call ptr @s2n_strerror(i32 noundef %2365, ptr noundef nonnull @.str.4) #11
  %2367 = load i32, ptr %2364, align 4, !tbaa !5
  %2368 = call ptr @s2n_strerror_debug(i32 noundef %2367, ptr noundef nonnull @.str.4) #11
  %2369 = load i32, ptr %2350, align 4, !tbaa !5
  %2370 = call ptr @strerror(i32 noundef %2369) #11
  %2371 = load i32, ptr %2350, align 4, !tbaa !5
  %2372 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2362, ptr noundef nonnull %.str.5.sink1161, i32 noundef %2363, ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.1, i32 noundef 585, ptr noundef %2366, ptr noundef %2368, ptr noundef %2370, i32 noundef %2371) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2373:                                             ; preds = %2342, %2341
  %2374 = phi i32 [ %2343, %2342 ], [ %2311, %2341 ]
  %2375 = load ptr, ptr %38, align 8, !tbaa !9
  %2376 = getelementptr inbounds i8, ptr %2375, i64 1736
  store ptr %2312, ptr %2376, align 8, !tbaa !58
  %2377 = add nsw i32 %2374, 1
  store i32 %2377, ptr @test_count, align 4, !tbaa !5
  %2378 = call i32 @s2n_tls13_extract_secret(ptr noundef %2375, i32 noundef 1) #11
  %2379 = call zeroext i1 @s2n_result_is_ok(i32 %2378)
  br i1 %2379, label %2404, label %2380

2380:                                             ; preds = %2507, %2373
  %2381 = tail call ptr @__errno_location() #12
  %2382 = load i32, ptr %2381, align 4, !tbaa !5
  %2383 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2384 = call i32 @s2n_print_stacktrace(ptr noundef %2383) #11
  %2385 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2386 = trunc nuw i8 %2385 to i1
  br i1 %2386, label %2387, label %2391

2387:                                             ; preds = %2380
  %2388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2389 = call i32 @fileno(ptr noundef %2388) #11
  %2390 = call i32 @isatty(i32 noundef %2389) #11
  %.not363 = icmp eq i32 %2390, 0
  br i1 %.not363, label %2391, label %2392

2391:                                             ; preds = %2387, %2380
  br label %2392

2392:                                             ; preds = %2387, %2391
  %.str.5.sink1172 = phi ptr [ @.str.5, %2391 ], [ @.str.2, %2387 ]
  store i32 %2382, ptr %2381, align 4, !tbaa !5
  %2393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2394 = load i32, ptr @test_count, align 4, !tbaa !5
  %2395 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2396 = load i32, ptr %2395, align 4, !tbaa !5
  %2397 = call ptr @s2n_strerror(i32 noundef %2396, ptr noundef nonnull @.str.4) #11
  %2398 = load i32, ptr %2395, align 4, !tbaa !5
  %2399 = call ptr @s2n_strerror_debug(i32 noundef %2398, ptr noundef nonnull @.str.4) #11
  %2400 = load i32, ptr %2381, align 4, !tbaa !5
  %2401 = call ptr @strerror(i32 noundef %2400) #11
  %2402 = load i32, ptr %2381, align 4, !tbaa !5
  %2403 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2393, ptr noundef nonnull %.str.5.sink1172, i32 noundef %2394, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 589, ptr noundef %2397, ptr noundef %2399, ptr noundef %2401, i32 noundef %2402) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2404:                                             ; preds = %2373
  %2405 = load i32, ptr %2202, align 8, !tbaa !47
  %.not364 = icmp eq i32 %2405, 0
  %.pre507 = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre508 = load ptr, ptr %38, align 8, !tbaa !9
  br i1 %.not364, label %2436, label %2406

2406:                                             ; preds = %2404
  %2407 = add nsw i32 %.pre507, 1
  store i32 %2407, ptr @test_count, align 4, !tbaa !5
  %2408 = getelementptr inbounds i8, ptr %.pre508, i64 240
  %2409 = load ptr, ptr %37, align 8, !tbaa !48
  %2410 = zext i32 %2405 to i64
  %bcmp365 = call i32 @bcmp(ptr nonnull %2408, ptr %2409, i64 %2410)
  %2411 = icmp eq i32 %bcmp365, 0
  br i1 %2411, label %2436, label %2412

2412:                                             ; preds = %2516, %2406
  %2413 = tail call ptr @__errno_location() #12
  %2414 = load i32, ptr %2413, align 4, !tbaa !5
  %2415 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2416 = call i32 @s2n_print_stacktrace(ptr noundef %2415) #11
  %2417 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2418 = trunc nuw i8 %2417 to i1
  br i1 %2418, label %2419, label %2423

2419:                                             ; preds = %2412
  %2420 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2421 = call i32 @fileno(ptr noundef %2420) #11
  %2422 = call i32 @isatty(i32 noundef %2421) #11
  %.not366 = icmp eq i32 %2422, 0
  br i1 %.not366, label %2423, label %2424

2423:                                             ; preds = %2419, %2412
  br label %2424

2424:                                             ; preds = %2419, %2423
  %.str.5.sink1183 = phi ptr [ @.str.5, %2423 ], [ @.str.2, %2419 ]
  store i32 %2414, ptr %2413, align 4, !tbaa !5
  %2425 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2426 = load i32, ptr @test_count, align 4, !tbaa !5
  %2427 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2428 = load i32, ptr %2427, align 4, !tbaa !5
  %2429 = call ptr @s2n_strerror(i32 noundef %2428, ptr noundef nonnull @.str.4) #11
  %2430 = load i32, ptr %2427, align 4, !tbaa !5
  %2431 = call ptr @s2n_strerror_debug(i32 noundef %2430, ptr noundef nonnull @.str.4) #11
  %2432 = load i32, ptr %2413, align 4, !tbaa !5
  %2433 = call ptr @strerror(i32 noundef %2432) #11
  %2434 = load i32, ptr %2413, align 4, !tbaa !5
  %2435 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2425, ptr noundef nonnull %.str.5.sink1183, i32 noundef %2426, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 591, ptr noundef %2429, ptr noundef %2431, ptr noundef %2433, i32 noundef %2434) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2436:                                             ; preds = %2404, %2406
  %2437 = phi i32 [ %.pre507, %2404 ], [ %2407, %2406 ]
  %2438 = add nsw i32 %2437, 1
  store i32 %2438, ptr @test_count, align 4, !tbaa !5
  %2439 = getelementptr inbounds i8, ptr %.pre508, i64 628
  %2440 = load i32, ptr %2439, align 4, !tbaa !49
  %2441 = icmp eq i32 %2440, 1
  br i1 %2441, label %2466, label %2442

2442:                                             ; preds = %2522, %2436
  %2443 = tail call ptr @__errno_location() #12
  %2444 = load i32, ptr %2443, align 4, !tbaa !5
  %2445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2446 = call i32 @s2n_print_stacktrace(ptr noundef %2445) #11
  %2447 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2448 = trunc nuw i8 %2447 to i1
  br i1 %2448, label %2449, label %2453

2449:                                             ; preds = %2442
  %2450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2451 = call i32 @fileno(ptr noundef %2450) #11
  %2452 = call i32 @isatty(i32 noundef %2451) #11
  %.not367 = icmp eq i32 %2452, 0
  br i1 %.not367, label %2453, label %2454

2453:                                             ; preds = %2449, %2442
  br label %2454

2454:                                             ; preds = %2449, %2453
  %.str.5.sink1194 = phi ptr [ @.str.5, %2453 ], [ @.str.2, %2449 ]
  store i32 %2444, ptr %2443, align 4, !tbaa !5
  %2455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2456 = load i32, ptr @test_count, align 4, !tbaa !5
  %2457 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2458 = load i32, ptr %2457, align 4, !tbaa !5
  %2459 = call ptr @s2n_strerror(i32 noundef %2458, ptr noundef nonnull @.str.4) #11
  %2460 = load i32, ptr %2457, align 4, !tbaa !5
  %2461 = call ptr @s2n_strerror_debug(i32 noundef %2460, ptr noundef nonnull @.str.4) #11
  %2462 = load i32, ptr %2443, align 4, !tbaa !5
  %2463 = call ptr @strerror(i32 noundef %2462) #11
  %2464 = load i32, ptr %2443, align 4, !tbaa !5
  %2465 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2455, ptr noundef nonnull %.str.5.sink1194, i32 noundef %2456, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 592, ptr noundef %2459, ptr noundef %2461, ptr noundef %2463, i32 noundef %2464) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2466:                                             ; preds = %2436
  %2467 = call i32 @s2n_psk_free(ptr noundef nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #11
  %2468 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #11
  %2469 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %2469, ptr %38, align 8, !tbaa !9
  %2470 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2471 = getelementptr inbounds i8, ptr %2469, i64 232
  %2472 = load ptr, ptr %2471, align 8, !tbaa !15
  store ptr %2470, ptr %2472, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #11
  %2473 = load ptr, ptr %38, align 8, !tbaa !9
  %2474 = call ptr @s2n_test_psk_new(ptr noundef %2473) #11
  store ptr %2474, ptr %39, align 8, !tbaa !9
  %2475 = load i32, ptr @test_count, align 4, !tbaa !5
  %2476 = add nsw i32 %2475, 1
  store i32 %2476, ptr @test_count, align 4, !tbaa !5
  %2477 = icmp eq ptr %2474, null
  br i1 %2477, label %2224, label %2478

2478:                                             ; preds = %2466
  %2479 = add nsw i32 %2475, 2
  store i32 %2479, ptr @test_count, align 4, !tbaa !5
  %2480 = load ptr, ptr %36, align 8, !tbaa !48
  %2481 = load i32, ptr %2201, align 8, !tbaa !47
  %2482 = trunc i32 %2481 to i16
  %2483 = call i32 @s2n_psk_set_secret(ptr noundef nonnull %2474, ptr noundef %2480, i16 noundef zeroext %2482) #11
  %2484 = icmp eq i32 %2483, -1
  br i1 %2484, label %2255, label %2485

2485:                                             ; preds = %2478
  %2486 = load i32, ptr @test_count, align 4, !tbaa !5
  %2487 = add nsw i32 %2486, 1
  store i32 %2487, ptr @test_count, align 4, !tbaa !5
  %2488 = load ptr, ptr %39, align 8, !tbaa !9
  %2489 = call i32 @s2n_extract_early_secret(ptr noundef %2488) #11
  %2490 = call zeroext i1 @s2n_result_is_ok(i32 %2489)
  br i1 %2490, label %2491, label %2285

2491:                                             ; preds = %2485
  %2492 = load i32, ptr @test_count, align 4, !tbaa !5
  %2493 = add nsw i32 %2492, 1
  store i32 %2493, ptr @test_count, align 4, !tbaa !5
  %2494 = load ptr, ptr %39, align 8, !tbaa !9
  %2495 = getelementptr inbounds i8, ptr %2494, i64 80
  %2496 = load i32, ptr %2495, align 8, !tbaa !54
  %2497 = load i32, ptr %2202, align 8, !tbaa !47
  %2498 = icmp eq i32 %2496, %2497
  br i1 %2498, label %2499, label %2317

2499:                                             ; preds = %2491
  %.not360.1 = icmp eq i32 %2496, 0
  br i1 %.not360.1, label %2507, label %2500

2500:                                             ; preds = %2499
  %2501 = add nsw i32 %2492, 2
  store i32 %2501, ptr @test_count, align 4, !tbaa !5
  %2502 = getelementptr inbounds i8, ptr %2494, i64 72
  %2503 = load ptr, ptr %2502, align 8, !tbaa !57
  %2504 = load ptr, ptr %37, align 8, !tbaa !48
  %2505 = zext i32 %2496 to i64
  %bcmp361.1 = call i32 @bcmp(ptr %2503, ptr %2504, i64 %2505)
  %2506 = icmp eq i32 %bcmp361.1, 0
  br i1 %2506, label %2507, label %2349

2507:                                             ; preds = %2500, %2499
  %2508 = phi i32 [ %2501, %2500 ], [ %2493, %2499 ]
  %2509 = load ptr, ptr %38, align 8, !tbaa !9
  %2510 = getelementptr inbounds i8, ptr %2509, i64 1736
  store ptr %2494, ptr %2510, align 8, !tbaa !58
  %2511 = add nsw i32 %2508, 1
  store i32 %2511, ptr @test_count, align 4, !tbaa !5
  %2512 = call i32 @s2n_tls13_extract_secret(ptr noundef %2509, i32 noundef 1) #11
  %2513 = call zeroext i1 @s2n_result_is_ok(i32 %2512)
  br i1 %2513, label %2514, label %2380

2514:                                             ; preds = %2507
  %2515 = load i32, ptr %2202, align 8, !tbaa !47
  %.not364.1 = icmp eq i32 %2515, 0
  %.pre509 = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre510 = load ptr, ptr %38, align 8, !tbaa !9
  br i1 %.not364.1, label %2522, label %2516

2516:                                             ; preds = %2514
  %2517 = add nsw i32 %.pre509, 1
  store i32 %2517, ptr @test_count, align 4, !tbaa !5
  %2518 = getelementptr inbounds i8, ptr %.pre510, i64 240
  %2519 = load ptr, ptr %37, align 8, !tbaa !48
  %2520 = zext i32 %2515 to i64
  %bcmp365.1 = call i32 @bcmp(ptr nonnull %2518, ptr %2519, i64 %2520)
  %2521 = icmp eq i32 %bcmp365.1, 0
  br i1 %2521, label %2522, label %2412

2522:                                             ; preds = %2516, %2514
  %2523 = phi i32 [ %2517, %2516 ], [ %.pre509, %2514 ]
  %2524 = add nsw i32 %2523, 1
  store i32 %2524, ptr @test_count, align 4, !tbaa !5
  %2525 = getelementptr inbounds i8, ptr %.pre510, i64 628
  %2526 = load i32, ptr %2525, align 4, !tbaa !49
  %2527 = icmp eq i32 %2526, 1
  br i1 %2527, label %2528, label %2442

2528:                                             ; preds = %2522
  %2529 = call i32 @s2n_psk_free(ptr noundef nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #11
  %2530 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %40) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %40, i8 0, i64 24, i1 false)
  %2531 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %40, ptr noundef nonnull @.str.63) #11
  %2532 = call zeroext i1 @s2n_result_is_ok(i32 %2531)
  br i1 %2532, label %.preheader469, label %.thread464

2533:                                             ; preds = %2714, %.preheader469
  %2534 = tail call ptr @__errno_location() #12
  %2535 = load i32, ptr %2534, align 4, !tbaa !5
  %2536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2537 = call i32 @s2n_print_stacktrace(ptr noundef %2536) #11
  %2538 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2539 = trunc nuw i8 %2538 to i1
  br i1 %2539, label %2540, label %2544

2540:                                             ; preds = %2533
  %2541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2542 = call i32 @fileno(ptr noundef %2541) #11
  %2543 = call i32 @isatty(i32 noundef %2542) #11
  %.not357 = icmp eq i32 %2543, 0
  br i1 %.not357, label %2544, label %2545

2544:                                             ; preds = %2540, %2533
  br label %2545

2545:                                             ; preds = %2540, %2544
  %.str.5.sink1205 = phi ptr [ @.str.5, %2544 ], [ @.str.2, %2540 ]
  store i32 %2535, ptr %2534, align 4, !tbaa !5
  %2546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2547 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %2549, ptr noundef nonnull @.str.4) #11
  %2551 = load i32, ptr %2548, align 4, !tbaa !5
  %2552 = call ptr @s2n_strerror_debug(i32 noundef %2551, ptr noundef nonnull @.str.4) #11
  %2553 = load i32, ptr %2534, align 4, !tbaa !5
  %2554 = call ptr @strerror(i32 noundef %2553) #11
  %2555 = load i32, ptr %2534, align 4, !tbaa !5
  %2556 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2546, ptr noundef nonnull %.str.5.sink1205, i32 noundef %2547, ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.1, i32 noundef 612, ptr noundef %2550, ptr noundef %2552, ptr noundef %2554, i32 noundef %2555) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2557:                                             ; preds = %.preheader469
  store i32 0, ptr %2219, align 8, !tbaa !59
  %2558 = load i32, ptr @test_count, align 4, !tbaa !5
  %2559 = add nsw i32 %2558, 1
  store i32 %2559, ptr @test_count, align 4, !tbaa !5
  %2560 = load ptr, ptr %36, align 8, !tbaa !48
  %2561 = load i32, ptr %2201, align 8, !tbaa !47
  %2562 = trunc i32 %2561 to i16
  %2563 = call i32 @s2n_psk_set_secret(ptr noundef nonnull %2219, ptr noundef %2560, i16 noundef zeroext %2562) #11
  %2564 = icmp eq i32 %2563, -1
  br i1 %2564, label %2565, label %2589

2565:                                             ; preds = %2726, %2557
  %2566 = tail call ptr @__errno_location() #12
  %2567 = load i32, ptr %2566, align 4, !tbaa !5
  %2568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2569 = call i32 @s2n_print_stacktrace(ptr noundef %2568) #11
  %2570 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2571 = trunc nuw i8 %2570 to i1
  br i1 %2571, label %2572, label %2576

2572:                                             ; preds = %2565
  %2573 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2574 = call i32 @fileno(ptr noundef %2573) #11
  %2575 = call i32 @isatty(i32 noundef %2574) #11
  %.not356 = icmp eq i32 %2575, 0
  br i1 %.not356, label %2576, label %2577

2576:                                             ; preds = %2572, %2565
  br label %2577

2577:                                             ; preds = %2572, %2576
  %.str.5.sink1216 = phi ptr [ @.str.5, %2576 ], [ @.str.2, %2572 ]
  store i32 %2567, ptr %2566, align 4, !tbaa !5
  %2578 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2579 = load i32, ptr @test_count, align 4, !tbaa !5
  %2580 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2581 = load i32, ptr %2580, align 4, !tbaa !5
  %2582 = call ptr @s2n_strerror(i32 noundef %2581, ptr noundef nonnull @.str.4) #11
  %2583 = load i32, ptr %2580, align 4, !tbaa !5
  %2584 = call ptr @s2n_strerror_debug(i32 noundef %2583, ptr noundef nonnull @.str.4) #11
  %2585 = load i32, ptr %2566, align 4, !tbaa !5
  %2586 = call ptr @strerror(i32 noundef %2585) #11
  %2587 = load i32, ptr %2566, align 4, !tbaa !5
  %2588 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2578, ptr noundef nonnull %.str.5.sink1216, i32 noundef %2579, ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.1, i32 noundef 614, ptr noundef %2582, ptr noundef %2584, ptr noundef %2586, i32 noundef %2587) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2589:                                             ; preds = %2557
  %2590 = load i32, ptr @test_count, align 4, !tbaa !5
  %2591 = add nsw i32 %2590, 1
  store i32 %2591, ptr @test_count, align 4, !tbaa !5
  %2592 = load ptr, ptr %42, align 8, !tbaa !9
  %2593 = call i32 @s2n_derive_binder_key(ptr noundef %2592, ptr noundef nonnull %3) #11
  %2594 = call zeroext i1 @s2n_result_is_ok(i32 %2593)
  br i1 %2594, label %2619, label %2595

2595:                                             ; preds = %2734, %2589
  %2596 = tail call ptr @__errno_location() #12
  %2597 = load i32, ptr %2596, align 4, !tbaa !5
  %2598 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2599 = call i32 @s2n_print_stacktrace(ptr noundef %2598) #11
  %2600 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2601 = trunc nuw i8 %2600 to i1
  br i1 %2601, label %2602, label %2606

2602:                                             ; preds = %2595
  %2603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2604 = call i32 @fileno(ptr noundef %2603) #11
  %2605 = call i32 @isatty(i32 noundef %2604) #11
  %.not348 = icmp eq i32 %2605, 0
  br i1 %.not348, label %2606, label %2607

2606:                                             ; preds = %2602, %2595
  br label %2607

2607:                                             ; preds = %2602, %2606
  %.str.5.sink1227 = phi ptr [ @.str.5, %2606 ], [ @.str.2, %2602 ]
  store i32 %2597, ptr %2596, align 4, !tbaa !5
  %2608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2609 = load i32, ptr @test_count, align 4, !tbaa !5
  %2610 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2611 = load i32, ptr %2610, align 4, !tbaa !5
  %2612 = call ptr @s2n_strerror(i32 noundef %2611, ptr noundef nonnull @.str.4) #11
  %2613 = load i32, ptr %2610, align 4, !tbaa !5
  %2614 = call ptr @s2n_strerror_debug(i32 noundef %2613, ptr noundef nonnull @.str.4) #11
  %2615 = load i32, ptr %2596, align 4, !tbaa !5
  %2616 = call ptr @strerror(i32 noundef %2615) #11
  %2617 = load i32, ptr %2596, align 4, !tbaa !5
  %2618 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2608, ptr noundef nonnull %.str.5.sink1227, i32 noundef %2609, ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.1, i32 noundef 616, ptr noundef %2612, ptr noundef %2614, ptr noundef %2616, i32 noundef %2617) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2619:                                             ; preds = %2589
  %2620 = load i32, ptr %2202, align 8, !tbaa !47
  %.not349 = icmp eq i32 %2620, 0
  %.pre511 = load i32, ptr @test_count, align 4, !tbaa !5
  br i1 %.not349, label %2653, label %2621

2621:                                             ; preds = %2619
  %2622 = add nsw i32 %.pre511, 1
  store i32 %2622, ptr @test_count, align 4, !tbaa !5
  %2623 = load ptr, ptr %42, align 8, !tbaa !9
  %2624 = getelementptr inbounds i8, ptr %2623, i64 72
  %2625 = load ptr, ptr %2624, align 8, !tbaa !57
  %2626 = load ptr, ptr %37, align 8, !tbaa !48
  %2627 = zext i32 %2620 to i64
  %bcmp350 = call i32 @bcmp(ptr %2625, ptr %2626, i64 %2627)
  %2628 = icmp eq i32 %bcmp350, 0
  br i1 %2628, label %2653, label %2629

2629:                                             ; preds = %2742, %2621
  %2630 = tail call ptr @__errno_location() #12
  %2631 = load i32, ptr %2630, align 4, !tbaa !5
  %2632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2633 = call i32 @s2n_print_stacktrace(ptr noundef %2632) #11
  %2634 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2635 = trunc nuw i8 %2634 to i1
  br i1 %2635, label %2636, label %2640

2636:                                             ; preds = %2629
  %2637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2638 = call i32 @fileno(ptr noundef %2637) #11
  %2639 = call i32 @isatty(i32 noundef %2638) #11
  %.not351 = icmp eq i32 %2639, 0
  br i1 %.not351, label %2640, label %2641

2640:                                             ; preds = %2636, %2629
  br label %2641

2641:                                             ; preds = %2636, %2640
  %.str.5.sink1238 = phi ptr [ @.str.5, %2640 ], [ @.str.2, %2636 ]
  store i32 %2631, ptr %2630, align 4, !tbaa !5
  %2642 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2643 = load i32, ptr @test_count, align 4, !tbaa !5
  %2644 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2645 = load i32, ptr %2644, align 4, !tbaa !5
  %2646 = call ptr @s2n_strerror(i32 noundef %2645, ptr noundef nonnull @.str.4) #11
  %2647 = load i32, ptr %2644, align 4, !tbaa !5
  %2648 = call ptr @s2n_strerror_debug(i32 noundef %2647, ptr noundef nonnull @.str.4) #11
  %2649 = load i32, ptr %2630, align 4, !tbaa !5
  %2650 = call ptr @strerror(i32 noundef %2649) #11
  %2651 = load i32, ptr %2630, align 4, !tbaa !5
  %2652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2642, ptr noundef nonnull %.str.5.sink1238, i32 noundef %2643, ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.1, i32 noundef 617, ptr noundef %2646, ptr noundef %2648, ptr noundef %2650, i32 noundef %2651) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2653:                                             ; preds = %2619, %2621
  %2654 = phi i32 [ %.pre511, %2619 ], [ %2622, %2621 ]
  %2655 = add nsw i32 %2654, 1
  store i32 %2655, ptr @test_count, align 4, !tbaa !5
  %2656 = load i32, ptr %2212, align 8, !tbaa !47
  %2657 = load i32, ptr %2213, align 8, !tbaa !47
  %2658 = icmp eq i32 %2656, %2657
  br i1 %2658, label %2683, label %2659

2659:                                             ; preds = %2750, %2653
  %2660 = tail call ptr @__errno_location() #12
  %2661 = load i32, ptr %2660, align 4, !tbaa !5
  %2662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2663 = call i32 @s2n_print_stacktrace(ptr noundef %2662) #11
  %2664 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2665 = trunc nuw i8 %2664 to i1
  br i1 %2665, label %2666, label %2670

2666:                                             ; preds = %2659
  %2667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2668 = call i32 @fileno(ptr noundef %2667) #11
  %2669 = call i32 @isatty(i32 noundef %2668) #11
  %.not352 = icmp eq i32 %2669, 0
  br i1 %.not352, label %2670, label %2671

2670:                                             ; preds = %2666, %2659
  br label %2671

2671:                                             ; preds = %2666, %2670
  %.str.5.sink1249 = phi ptr [ @.str.5, %2670 ], [ @.str.2, %2666 ]
  store i32 %2661, ptr %2660, align 4, !tbaa !5
  %2672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2673 = load i32, ptr @test_count, align 4, !tbaa !5
  %2674 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2675 = load i32, ptr %2674, align 4, !tbaa !5
  %2676 = call ptr @s2n_strerror(i32 noundef %2675, ptr noundef nonnull @.str.4) #11
  %2677 = load i32, ptr %2674, align 4, !tbaa !5
  %2678 = call ptr @s2n_strerror_debug(i32 noundef %2677, ptr noundef nonnull @.str.4) #11
  %2679 = load i32, ptr %2660, align 4, !tbaa !5
  %2680 = call ptr @strerror(i32 noundef %2679) #11
  %2681 = load i32, ptr %2660, align 4, !tbaa !5
  %2682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2672, ptr noundef nonnull %.str.5.sink1249, i32 noundef %2673, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.1, i32 noundef 618, ptr noundef %2676, ptr noundef %2678, ptr noundef %2680, i32 noundef %2681) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2683:                                             ; preds = %2653
  %.not353 = icmp eq i32 %2656, 0
  br i1 %.not353, label %2714, label %2684

2684:                                             ; preds = %2683
  %2685 = add nsw i32 %2654, 2
  store i32 %2685, ptr @test_count, align 4, !tbaa !5
  %2686 = load ptr, ptr %3, align 8, !tbaa !48
  %2687 = load ptr, ptr %40, align 8, !tbaa !48
  %2688 = zext i32 %2656 to i64
  %bcmp354 = call i32 @bcmp(ptr %2686, ptr %2687, i64 %2688)
  %2689 = icmp eq i32 %bcmp354, 0
  br i1 %2689, label %2714, label %2690

2690:                                             ; preds = %2757, %2684
  %2691 = tail call ptr @__errno_location() #12
  %2692 = load i32, ptr %2691, align 4, !tbaa !5
  %2693 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2694 = call i32 @s2n_print_stacktrace(ptr noundef %2693) #11
  %2695 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2696 = trunc nuw i8 %2695 to i1
  br i1 %2696, label %2697, label %2701

2697:                                             ; preds = %2690
  %2698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2699 = call i32 @fileno(ptr noundef %2698) #11
  %2700 = call i32 @isatty(i32 noundef %2699) #11
  %.not355 = icmp eq i32 %2700, 0
  br i1 %.not355, label %2701, label %2702

2701:                                             ; preds = %2697, %2690
  br label %2702

2702:                                             ; preds = %2697, %2701
  %.str.5.sink1260 = phi ptr [ @.str.5, %2701 ], [ @.str.2, %2697 ]
  store i32 %2692, ptr %2691, align 4, !tbaa !5
  %2703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2704 = load i32, ptr @test_count, align 4, !tbaa !5
  %2705 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2706 = load i32, ptr %2705, align 4, !tbaa !5
  %2707 = call ptr @s2n_strerror(i32 noundef %2706, ptr noundef nonnull @.str.4) #11
  %2708 = load i32, ptr %2705, align 4, !tbaa !5
  %2709 = call ptr @s2n_strerror_debug(i32 noundef %2708, ptr noundef nonnull @.str.4) #11
  %2710 = load i32, ptr %2691, align 4, !tbaa !5
  %2711 = call ptr @strerror(i32 noundef %2710) #11
  %2712 = load i32, ptr %2691, align 4, !tbaa !5
  %2713 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2703, ptr noundef nonnull %.str.5.sink1260, i32 noundef %2704, ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.1, i32 noundef 619, ptr noundef %2707, ptr noundef %2709, ptr noundef %2711, i32 noundef %2712) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2714:                                             ; preds = %2684, %2683
  %2715 = call i32 @s2n_psk_free(ptr noundef nonnull %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #11
  %2716 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #11
  %2717 = call ptr @s2n_connection_new(i32 noundef %264) #11
  store ptr %2717, ptr %41, align 8, !tbaa !9
  %2718 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2719 = getelementptr inbounds i8, ptr %2717, i64 232
  %2720 = load ptr, ptr %2719, align 8, !tbaa !15
  store ptr %2718, ptr %2720, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #11
  %2721 = load ptr, ptr %41, align 8, !tbaa !9
  %2722 = call ptr @s2n_test_psk_new(ptr noundef %2721) #11
  store ptr %2722, ptr %42, align 8, !tbaa !9
  %2723 = load i32, ptr @test_count, align 4, !tbaa !5
  %2724 = add nsw i32 %2723, 1
  store i32 %2724, ptr @test_count, align 4, !tbaa !5
  %2725 = icmp eq ptr %2722, null
  br i1 %2725, label %2533, label %2726

2726:                                             ; preds = %2714
  store i32 0, ptr %2722, align 8, !tbaa !59
  %2727 = load i32, ptr @test_count, align 4, !tbaa !5
  %2728 = add nsw i32 %2727, 1
  store i32 %2728, ptr @test_count, align 4, !tbaa !5
  %2729 = load ptr, ptr %36, align 8, !tbaa !48
  %2730 = load i32, ptr %2201, align 8, !tbaa !47
  %2731 = trunc i32 %2730 to i16
  %2732 = call i32 @s2n_psk_set_secret(ptr noundef nonnull %2722, ptr noundef %2729, i16 noundef zeroext %2731) #11
  %2733 = icmp eq i32 %2732, -1
  br i1 %2733, label %2565, label %2734

2734:                                             ; preds = %2726
  %2735 = load i32, ptr @test_count, align 4, !tbaa !5
  %2736 = add nsw i32 %2735, 1
  store i32 %2736, ptr @test_count, align 4, !tbaa !5
  %2737 = load ptr, ptr %42, align 8, !tbaa !9
  %2738 = call i32 @s2n_derive_binder_key(ptr noundef %2737, ptr noundef nonnull %3) #11
  %2739 = call zeroext i1 @s2n_result_is_ok(i32 %2738)
  br i1 %2739, label %2740, label %2595

2740:                                             ; preds = %2734
  %2741 = load i32, ptr %2202, align 8, !tbaa !47
  %.not349.1 = icmp eq i32 %2741, 0
  %.pre512 = load i32, ptr @test_count, align 4, !tbaa !5
  br i1 %.not349.1, label %2750, label %2742

2742:                                             ; preds = %2740
  %2743 = add nsw i32 %.pre512, 1
  store i32 %2743, ptr @test_count, align 4, !tbaa !5
  %2744 = load ptr, ptr %42, align 8, !tbaa !9
  %2745 = getelementptr inbounds i8, ptr %2744, i64 72
  %2746 = load ptr, ptr %2745, align 8, !tbaa !57
  %2747 = load ptr, ptr %37, align 8, !tbaa !48
  %2748 = zext i32 %2741 to i64
  %bcmp350.1 = call i32 @bcmp(ptr %2746, ptr %2747, i64 %2748)
  %2749 = icmp eq i32 %bcmp350.1, 0
  br i1 %2749, label %2750, label %2629

2750:                                             ; preds = %2742, %2740
  %2751 = phi i32 [ %2743, %2742 ], [ %.pre512, %2740 ]
  %2752 = add nsw i32 %2751, 1
  store i32 %2752, ptr @test_count, align 4, !tbaa !5
  %2753 = load i32, ptr %2212, align 8, !tbaa !47
  %2754 = load i32, ptr %2213, align 8, !tbaa !47
  %2755 = icmp eq i32 %2753, %2754
  br i1 %2755, label %2756, label %2659

2756:                                             ; preds = %2750
  %.not353.1 = icmp eq i32 %2753, 0
  br i1 %.not353.1, label %2763, label %2757

2757:                                             ; preds = %2756
  %2758 = add nsw i32 %2751, 2
  store i32 %2758, ptr @test_count, align 4, !tbaa !5
  %2759 = load ptr, ptr %3, align 8, !tbaa !48
  %2760 = load ptr, ptr %40, align 8, !tbaa !48
  %2761 = zext i32 %2753 to i64
  %bcmp354.1 = call i32 @bcmp(ptr %2759, ptr %2760, i64 %2761)
  %2762 = icmp eq i32 %bcmp354.1, 0
  br i1 %2762, label %2763, label %2690

2763:                                             ; preds = %2756, %2757
  %2764 = call i32 @s2n_psk_free(ptr noundef nonnull %42) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #11
  %2765 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #11
  %2766 = call i32 @s2n_free(ptr noundef nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %40) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %43, i8 0, i64 24, i1 false)
  %2767 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %43, ptr noundef nonnull @.str.67) #11
  %2768 = call zeroext i1 @s2n_result_is_ok(i32 %2767)
  br i1 %2768, label %2769, label %2967

2769:                                             ; preds = %2763
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %44) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %44, i8 0, i64 24, i1 false)
  %2770 = call i32 @s2n_blob_alloc_from_hex_with_whitespace(ptr noundef nonnull %44, ptr noundef nonnull @.str.68) #11
  %2771 = call zeroext i1 @s2n_result_is_ok(i32 %2770)
  br i1 %2771, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %2769
  %2772 = getelementptr inbounds i8, ptr %44, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #11
  %2773 = load i32, ptr @modes, align 4, !tbaa !5
  %2774 = call ptr @s2n_connection_new(i32 noundef %2773) #11
  store ptr %2774, ptr %45, align 8, !tbaa !9
  %2775 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2776 = getelementptr inbounds i8, ptr %2774, i64 232
  %2777 = load ptr, ptr %2776, align 8, !tbaa !15
  store ptr %2775, ptr %2777, align 8, !tbaa !42
  %2778 = load i32, ptr @test_count, align 4, !tbaa !5
  %2779 = add nsw i32 %2778, 1
  store i32 %2779, ptr @test_count, align 4, !tbaa !5
  %2780 = load ptr, ptr %45, align 8, !tbaa !9
  %2781 = call i32 @s2n_connection_set_test_early_secret(ptr noundef %2780, ptr noundef nonnull %37) #11
  %2782 = call zeroext i1 @s2n_result_is_ok(i32 %2781)
  br i1 %2782, label %2807, label %2783

2783:                                             ; preds = %2928, %.preheader
  %2784 = tail call ptr @__errno_location() #12
  %2785 = load i32, ptr %2784, align 4, !tbaa !5
  %2786 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2787 = call i32 @s2n_print_stacktrace(ptr noundef %2786) #11
  %2788 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2789 = trunc nuw i8 %2788 to i1
  br i1 %2789, label %2790, label %2794

2790:                                             ; preds = %2783
  %2791 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2792 = call i32 @fileno(ptr noundef %2791) #11
  %2793 = call i32 @isatty(i32 noundef %2792) #11
  %.not341 = icmp eq i32 %2793, 0
  br i1 %.not341, label %2794, label %2795

2794:                                             ; preds = %2790, %2783
  br label %2795

2795:                                             ; preds = %2790, %2794
  %.str.5.sink1271 = phi ptr [ @.str.5, %2794 ], [ @.str.2, %2790 ]
  store i32 %2785, ptr %2784, align 4, !tbaa !5
  %2796 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2797 = load i32, ptr @test_count, align 4, !tbaa !5
  %2798 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2799 = load i32, ptr %2798, align 4, !tbaa !5
  %2800 = call ptr @s2n_strerror(i32 noundef %2799, ptr noundef nonnull @.str.4) #11
  %2801 = load i32, ptr %2798, align 4, !tbaa !5
  %2802 = call ptr @s2n_strerror_debug(i32 noundef %2801, ptr noundef nonnull @.str.4) #11
  %2803 = load i32, ptr %2784, align 4, !tbaa !5
  %2804 = call ptr @strerror(i32 noundef %2803) #11
  %2805 = load i32, ptr %2784, align 4, !tbaa !5
  %2806 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2796, ptr noundef nonnull %.str.5.sink1271, i32 noundef %2797, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 655, ptr noundef %2800, ptr noundef %2802, ptr noundef %2804, i32 noundef %2805) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2807:                                             ; preds = %.preheader
  %2808 = load i32, ptr @test_count, align 4, !tbaa !5
  %2809 = add nsw i32 %2808, 1
  store i32 %2809, ptr @test_count, align 4, !tbaa !5
  %2810 = load ptr, ptr %45, align 8, !tbaa !9
  %2811 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %2810, i32 noundef 0, ptr noundef nonnull %43) #11
  %2812 = call zeroext i1 @s2n_result_is_ok(i32 %2811)
  br i1 %2812, label %2837, label %2813

2813:                                             ; preds = %2940, %2807
  %2814 = tail call ptr @__errno_location() #12
  %2815 = load i32, ptr %2814, align 4, !tbaa !5
  %2816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2817 = call i32 @s2n_print_stacktrace(ptr noundef %2816) #11
  %2818 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2819 = trunc nuw i8 %2818 to i1
  br i1 %2819, label %2820, label %2824

2820:                                             ; preds = %2813
  %2821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2822 = call i32 @fileno(ptr noundef %2821) #11
  %2823 = call i32 @isatty(i32 noundef %2822) #11
  %.not342 = icmp eq i32 %2823, 0
  br i1 %.not342, label %2824, label %2825

2824:                                             ; preds = %2820, %2813
  br label %2825

2825:                                             ; preds = %2820, %2824
  %.str.5.sink1282 = phi ptr [ @.str.5, %2824 ], [ @.str.2, %2820 ]
  store i32 %2815, ptr %2814, align 4, !tbaa !5
  %2826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2827 = load i32, ptr @test_count, align 4, !tbaa !5
  %2828 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2829 = load i32, ptr %2828, align 4, !tbaa !5
  %2830 = call ptr @s2n_strerror(i32 noundef %2829, ptr noundef nonnull @.str.4) #11
  %2831 = load i32, ptr %2828, align 4, !tbaa !5
  %2832 = call ptr @s2n_strerror_debug(i32 noundef %2831, ptr noundef nonnull @.str.4) #11
  %2833 = load i32, ptr %2814, align 4, !tbaa !5
  %2834 = call ptr @strerror(i32 noundef %2833) #11
  %2835 = load i32, ptr %2814, align 4, !tbaa !5
  %2836 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2826, ptr noundef nonnull %.str.5.sink1282, i32 noundef %2827, ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.1, i32 noundef 656, ptr noundef %2830, ptr noundef %2832, ptr noundef %2834, i32 noundef %2835) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2837:                                             ; preds = %2807
  %2838 = load i32, ptr @test_count, align 4, !tbaa !5
  %2839 = add nsw i32 %2838, 1
  store i32 %2839, ptr @test_count, align 4, !tbaa !5
  %2840 = load ptr, ptr %45, align 8, !tbaa !9
  %2841 = call i32 @s2n_tls13_derive_secret(ptr noundef %2840, i32 noundef 1, i32 noundef 1, ptr noundef nonnull %3) #11
  %2842 = call zeroext i1 @s2n_result_is_ok(i32 %2841)
  br i1 %2842, label %2867, label %2843

2843:                                             ; preds = %2946, %2837
  %2844 = tail call ptr @__errno_location() #12
  %2845 = load i32, ptr %2844, align 4, !tbaa !5
  %2846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2847 = call i32 @s2n_print_stacktrace(ptr noundef %2846) #11
  %2848 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2849 = trunc nuw i8 %2848 to i1
  br i1 %2849, label %2850, label %2854

2850:                                             ; preds = %2843
  %2851 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2852 = call i32 @fileno(ptr noundef %2851) #11
  %2853 = call i32 @isatty(i32 noundef %2852) #11
  %.not343 = icmp eq i32 %2853, 0
  br i1 %.not343, label %2854, label %2855

2854:                                             ; preds = %2850, %2843
  br label %2855

2855:                                             ; preds = %2850, %2854
  %.str.5.sink1293 = phi ptr [ @.str.5, %2854 ], [ @.str.2, %2850 ]
  store i32 %2845, ptr %2844, align 4, !tbaa !5
  %2856 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2857 = load i32, ptr @test_count, align 4, !tbaa !5
  %2858 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2859 = load i32, ptr %2858, align 4, !tbaa !5
  %2860 = call ptr @s2n_strerror(i32 noundef %2859, ptr noundef nonnull @.str.4) #11
  %2861 = load i32, ptr %2858, align 4, !tbaa !5
  %2862 = call ptr @s2n_strerror_debug(i32 noundef %2861, ptr noundef nonnull @.str.4) #11
  %2863 = load i32, ptr %2844, align 4, !tbaa !5
  %2864 = call ptr @strerror(i32 noundef %2863) #11
  %2865 = load i32, ptr %2844, align 4, !tbaa !5
  %2866 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2856, ptr noundef nonnull %.str.5.sink1293, i32 noundef %2857, ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.1, i32 noundef 659, ptr noundef %2860, ptr noundef %2862, ptr noundef %2864, i32 noundef %2865) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2867:                                             ; preds = %2837
  %2868 = load i32, ptr @test_count, align 4, !tbaa !5
  %2869 = add nsw i32 %2868, 1
  store i32 %2869, ptr @test_count, align 4, !tbaa !5
  %2870 = load i32, ptr %2212, align 8, !tbaa !47
  %2871 = load i32, ptr %2772, align 8, !tbaa !47
  %2872 = icmp eq i32 %2870, %2871
  br i1 %2872, label %2897, label %2873

2873:                                             ; preds = %2952, %2867
  %2874 = tail call ptr @__errno_location() #12
  %2875 = load i32, ptr %2874, align 4, !tbaa !5
  %2876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2877 = call i32 @s2n_print_stacktrace(ptr noundef %2876) #11
  %2878 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2879 = trunc nuw i8 %2878 to i1
  br i1 %2879, label %2880, label %2884

2880:                                             ; preds = %2873
  %2881 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2882 = call i32 @fileno(ptr noundef %2881) #11
  %2883 = call i32 @isatty(i32 noundef %2882) #11
  %.not344 = icmp eq i32 %2883, 0
  br i1 %.not344, label %2884, label %2885

2884:                                             ; preds = %2880, %2873
  br label %2885

2885:                                             ; preds = %2880, %2884
  %.str.5.sink1304 = phi ptr [ @.str.5, %2884 ], [ @.str.2, %2880 ]
  store i32 %2875, ptr %2874, align 4, !tbaa !5
  %2886 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2887 = load i32, ptr @test_count, align 4, !tbaa !5
  %2888 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2889 = load i32, ptr %2888, align 4, !tbaa !5
  %2890 = call ptr @s2n_strerror(i32 noundef %2889, ptr noundef nonnull @.str.4) #11
  %2891 = load i32, ptr %2888, align 4, !tbaa !5
  %2892 = call ptr @s2n_strerror_debug(i32 noundef %2891, ptr noundef nonnull @.str.4) #11
  %2893 = load i32, ptr %2874, align 4, !tbaa !5
  %2894 = call ptr @strerror(i32 noundef %2893) #11
  %2895 = load i32, ptr %2874, align 4, !tbaa !5
  %2896 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2886, ptr noundef nonnull %.str.5.sink1304, i32 noundef %2887, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 660, ptr noundef %2890, ptr noundef %2892, ptr noundef %2894, i32 noundef %2895) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2897:                                             ; preds = %2867
  %.not345 = icmp eq i32 %2870, 0
  br i1 %.not345, label %2928, label %2898

2898:                                             ; preds = %2897
  %2899 = add nsw i32 %2868, 2
  store i32 %2899, ptr @test_count, align 4, !tbaa !5
  %2900 = load ptr, ptr %3, align 8, !tbaa !48
  %2901 = load ptr, ptr %44, align 8, !tbaa !48
  %2902 = zext i32 %2870 to i64
  %bcmp346 = call i32 @bcmp(ptr %2900, ptr %2901, i64 %2902)
  %2903 = icmp eq i32 %bcmp346, 0
  br i1 %2903, label %2928, label %2904

2904:                                             ; preds = %2959, %2898
  %2905 = tail call ptr @__errno_location() #12
  %2906 = load i32, ptr %2905, align 4, !tbaa !5
  %2907 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2908 = call i32 @s2n_print_stacktrace(ptr noundef %2907) #11
  %2909 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2910 = trunc nuw i8 %2909 to i1
  br i1 %2910, label %2911, label %2915

2911:                                             ; preds = %2904
  %2912 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2913 = call i32 @fileno(ptr noundef %2912) #11
  %2914 = call i32 @isatty(i32 noundef %2913) #11
  %.not347 = icmp eq i32 %2914, 0
  br i1 %.not347, label %2915, label %2916

2915:                                             ; preds = %2911, %2904
  br label %2916

2916:                                             ; preds = %2911, %2915
  %.str.5.sink1315 = phi ptr [ @.str.5, %2915 ], [ @.str.2, %2911 ]
  store i32 %2906, ptr %2905, align 4, !tbaa !5
  %2917 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2918 = load i32, ptr @test_count, align 4, !tbaa !5
  %2919 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2920 = load i32, ptr %2919, align 4, !tbaa !5
  %2921 = call ptr @s2n_strerror(i32 noundef %2920, ptr noundef nonnull @.str.4) #11
  %2922 = load i32, ptr %2919, align 4, !tbaa !5
  %2923 = call ptr @s2n_strerror_debug(i32 noundef %2922, ptr noundef nonnull @.str.4) #11
  %2924 = load i32, ptr %2905, align 4, !tbaa !5
  %2925 = call ptr @strerror(i32 noundef %2924) #11
  %2926 = load i32, ptr %2905, align 4, !tbaa !5
  %2927 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2917, ptr noundef nonnull %.str.5.sink1315, i32 noundef %2918, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 661, ptr noundef %2921, ptr noundef %2923, ptr noundef %2925, i32 noundef %2926) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2928:                                             ; preds = %2898, %2897
  %2929 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #11
  %2930 = load i32, ptr getelementptr inbounds (i8, ptr @modes, i64 4), align 4, !tbaa !5
  %2931 = call ptr @s2n_connection_new(i32 noundef %2930) #11
  store ptr %2931, ptr %45, align 8, !tbaa !9
  %2932 = load ptr, ptr @cipher_suite, align 8, !tbaa !9
  %2933 = getelementptr inbounds i8, ptr %2931, i64 232
  %2934 = load ptr, ptr %2933, align 8, !tbaa !15
  store ptr %2932, ptr %2934, align 8, !tbaa !42
  %2935 = load i32, ptr @test_count, align 4, !tbaa !5
  %2936 = add nsw i32 %2935, 1
  store i32 %2936, ptr @test_count, align 4, !tbaa !5
  %2937 = load ptr, ptr %45, align 8, !tbaa !9
  %2938 = call i32 @s2n_connection_set_test_early_secret(ptr noundef %2937, ptr noundef nonnull %37) #11
  %2939 = call zeroext i1 @s2n_result_is_ok(i32 %2938)
  br i1 %2939, label %2940, label %2783

2940:                                             ; preds = %2928
  %2941 = load i32, ptr @test_count, align 4, !tbaa !5
  %2942 = add nsw i32 %2941, 1
  store i32 %2942, ptr @test_count, align 4, !tbaa !5
  %2943 = load ptr, ptr %45, align 8, !tbaa !9
  %2944 = call i32 @s2n_connection_set_test_transcript_hash(ptr noundef %2943, i32 noundef 0, ptr noundef nonnull %43) #11
  %2945 = call zeroext i1 @s2n_result_is_ok(i32 %2944)
  br i1 %2945, label %2946, label %2813

2946:                                             ; preds = %2940
  %2947 = load i32, ptr @test_count, align 4, !tbaa !5
  %2948 = add nsw i32 %2947, 1
  store i32 %2948, ptr @test_count, align 4, !tbaa !5
  %2949 = load ptr, ptr %45, align 8, !tbaa !9
  %2950 = call i32 @s2n_tls13_derive_secret(ptr noundef %2949, i32 noundef 1, i32 noundef 1, ptr noundef nonnull %3) #11
  %2951 = call zeroext i1 @s2n_result_is_ok(i32 %2950)
  br i1 %2951, label %2952, label %2843

2952:                                             ; preds = %2946
  %2953 = load i32, ptr @test_count, align 4, !tbaa !5
  %2954 = add nsw i32 %2953, 1
  store i32 %2954, ptr @test_count, align 4, !tbaa !5
  %2955 = load i32, ptr %2212, align 8, !tbaa !47
  %2956 = load i32, ptr %2772, align 8, !tbaa !47
  %2957 = icmp eq i32 %2955, %2956
  br i1 %2957, label %2958, label %2873

2958:                                             ; preds = %2952
  %.not345.1 = icmp eq i32 %2955, 0
  br i1 %.not345.1, label %.loopexit.loopexit, label %2959

2959:                                             ; preds = %2958
  %2960 = add nsw i32 %2953, 2
  store i32 %2960, ptr @test_count, align 4, !tbaa !5
  %2961 = load ptr, ptr %3, align 8, !tbaa !48
  %2962 = load ptr, ptr %44, align 8, !tbaa !48
  %2963 = zext i32 %2955 to i64
  %bcmp346.1 = call i32 @bcmp(ptr %2961, ptr %2962, i64 %2963)
  %2964 = icmp eq i32 %bcmp346.1, 0
  br i1 %2964, label %.loopexit.loopexit, label %2904

.loopexit.loopexit:                               ; preds = %2959, %2958
  %2965 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #11
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %2769
  %.22 = phi i32 [ -1, %2769 ], [ %.19, %.loopexit.loopexit ]
  %2966 = call i32 @s2n_free(ptr noundef nonnull %44) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #11
  br label %2967

2967:                                             ; preds = %2763, %.loopexit
  %.23300 = phi i1 [ %2771, %.loopexit ], [ false, %2763 ]
  %.23 = phi i32 [ %.22, %.loopexit ], [ -1, %2763 ]
  %2968 = call i32 @s2n_free(ptr noundef nonnull %43) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #11
  br label %2969

2969:                                             ; preds = %2967, %2198, %.thread464
  %.24301 = phi i1 [ %.23300, %2967 ], [ false, %2198 ], [ false, %.thread464 ]
  %.24 = phi i32 [ %.23, %2967 ], [ -1, %2198 ], [ -1, %.thread464 ]
  %2970 = call i32 @s2n_free(ptr noundef nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #11
  %2971 = call i32 @s2n_free(ptr noundef nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #11
  br i1 %.24301, label %2972, label %3047

2972:                                             ; preds = %2969
  %2973 = call i32 @s2n_cleanup() #11
  %2974 = icmp eq i32 %2973, -1
  br i1 %2974, label %2975, label %2999

2975:                                             ; preds = %2972
  %2976 = tail call ptr @__errno_location() #12
  %2977 = load i32, ptr %2976, align 4, !tbaa !5
  %2978 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2979 = call i32 @s2n_print_stacktrace(ptr noundef %2978) #11
  %2980 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2981 = trunc nuw i8 %2980 to i1
  br i1 %2981, label %2982, label %2986

2982:                                             ; preds = %2975
  %2983 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2984 = call i32 @fileno(ptr noundef %2983) #11
  %2985 = call i32 @isatty(i32 noundef %2984) #11
  %.not340 = icmp eq i32 %2985, 0
  br i1 %.not340, label %2986, label %2987

2986:                                             ; preds = %2982, %2975
  br label %2987

2987:                                             ; preds = %2982, %2986
  %.str.5.sink1326 = phi ptr [ @.str.5, %2986 ], [ @.str.2, %2982 ]
  store i32 %2977, ptr %2976, align 4, !tbaa !5
  %2988 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2989 = load i32, ptr @test_count, align 4, !tbaa !5
  %2990 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2991 = load i32, ptr %2990, align 4, !tbaa !5
  %2992 = call ptr @s2n_strerror(i32 noundef %2991, ptr noundef nonnull @.str.4) #11
  %2993 = load i32, ptr %2990, align 4, !tbaa !5
  %2994 = call ptr @s2n_strerror_debug(i32 noundef %2993, ptr noundef nonnull @.str.4) #11
  %2995 = load i32, ptr %2976, align 4, !tbaa !5
  %2996 = call ptr @strerror(i32 noundef %2995) #11
  %2997 = load i32, ptr %2976, align 4, !tbaa !5
  %2998 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2988, ptr noundef nonnull %.str.5.sink1326, i32 noundef %2989, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.1, i32 noundef 666, ptr noundef %2992, ptr noundef %2994, ptr noundef %2996, i32 noundef %2997) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2999:                                             ; preds = %2972
  %3000 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #11
  %3001 = icmp eq i32 %3000, -1
  br i1 %3001, label %3002, label %3026

3002:                                             ; preds = %2999
  %3003 = tail call ptr @__errno_location() #12
  %3004 = load i32, ptr %3003, align 4, !tbaa !5
  %3005 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3006 = call i32 @s2n_print_stacktrace(ptr noundef %3005) #11
  %3007 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3008 = trunc nuw i8 %3007 to i1
  br i1 %3008, label %3009, label %3013

3009:                                             ; preds = %3002
  %3010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3011 = call i32 @fileno(ptr noundef %3010) #11
  %3012 = call i32 @isatty(i32 noundef %3011) #11
  %.not339 = icmp eq i32 %3012, 0
  br i1 %.not339, label %3013, label %3014

3013:                                             ; preds = %3009, %3002
  br label %3014

3014:                                             ; preds = %3009, %3013
  %.str.5.sink1337 = phi ptr [ @.str.5, %3013 ], [ @.str.2, %3009 ]
  store i32 %3004, ptr %3003, align 4, !tbaa !5
  %3015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3016 = load i32, ptr @test_count, align 4, !tbaa !5
  %3017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3018 = load i32, ptr %3017, align 4, !tbaa !5
  %3019 = call ptr @s2n_strerror(i32 noundef %3018, ptr noundef nonnull @.str.4) #11
  %3020 = load i32, ptr %3017, align 4, !tbaa !5
  %3021 = call ptr @s2n_strerror_debug(i32 noundef %3020, ptr noundef nonnull @.str.4) #11
  %3022 = load i32, ptr %3003, align 4, !tbaa !5
  %3023 = call ptr @strerror(i32 noundef %3022) #11
  %3024 = load i32, ptr %3003, align 4, !tbaa !5
  %3025 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3015, ptr noundef nonnull %.str.5.sink1337, i32 noundef %3016, ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.1, i32 noundef 666, ptr noundef %3019, ptr noundef %3021, ptr noundef %3023, i32 noundef %3024) #13
  call void @exit(i32 noundef 1) #14
  unreachable

3026:                                             ; preds = %2999
  %3027 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3028 = trunc nuw i8 %3027 to i1
  br i1 %3028, label %3029, label %3040

3029:                                             ; preds = %3026
  %3030 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3031 = call i32 @fileno(ptr noundef %3030) #11
  %3032 = call i32 @isatty(i32 noundef %3031) #11
  %.not336 = icmp eq i32 %3032, 0
  br i1 %.not336, label %3040, label %3033

3033:                                             ; preds = %3029
  %3034 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not338 = icmp eq i32 %3034, 0
  %3035 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not338, label %3038, label %3036

3036:                                             ; preds = %3033
  %3037 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3035, ptr noundef nonnull @.str.73, i32 noundef %3034) #11
  br label %3047

3038:                                             ; preds = %3033
  %3039 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3035, ptr noundef nonnull @.str.74) #11
  br label %3047

3040:                                             ; preds = %3029, %3026
  %3041 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not337 = icmp eq i32 %3041, 0
  %3042 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not337, label %3045, label %3043

3043:                                             ; preds = %3040
  %3044 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3042, ptr noundef nonnull @.str.75, i32 noundef %3041) #11
  br label %3047

3045:                                             ; preds = %3040
  %3046 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3042, ptr noundef nonnull @.str.76) #11
  br label %3047

3047:                                             ; preds = %.thread466, %.thread460, %3038, %3036, %3045, %3043, %2969, %2191
  %.26 = phi i32 [ %.24, %2969 ], [ %.19, %2191 ], [ 0, %3043 ], [ 0, %3045 ], [ 0, %3036 ], [ 0, %3038 ], [ -1, %.thread460 ], [ -1, %.thread466 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #11
  ret i32 %.26
}

; 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

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

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

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 #9

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

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

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

declare ptr @EVP_PKEY_new_raw_private_key(i32 noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare ptr @EVP_PKEY_new_raw_public_key(i32 noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

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

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

declare i32 @s2n_derive_resumption_master_secret(ptr noundef) local_unnamed_addr #2

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

declare ptr @s2n_test_psk_new(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_psk_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_psk_set_secret(ptr noundef, ptr noundef, i16 noundef zeroext) local_unnamed_addr #2

declare i32 @s2n_extract_early_secret(ptr noundef) local_unnamed_addr #2

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

declare i32 @s2n_cleanup() local_unnamed_addr #2

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #10

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: 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 = { nofree nounwind willreturn memory(argmem: read) }
attributes #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(none) }
attributes #13 = { cold nounwind }
attributes #14 = { noreturn nounwind }

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

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


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