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

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

%struct.s2n_debug_info = type { ptr, ptr }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_result = type { i32 }
%struct.s2n_cipher = type { i32, %union.anon.0, i8, ptr, ptr, ptr, ptr, ptr, ptr }
%union.anon.0 = type { %struct.s2n_composite_cipher }
%struct.s2n_composite_cipher = type { i8, i8, i8, ptr, ptr, ptr, ptr }
%struct.s2n_record_algorithm = type { ptr, i32, i32, i64 }
%struct.s2n_key_material = type { [160 x i8], %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob }
%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.1 }
%union.anon.1 = type { %struct.s2n_hash_evp_digest }
%struct.s2n_hash_evp_digest = type { %struct.s2n_evp_digest, %struct.s2n_evp_digest }
%struct.s2n_evp_digest = type { ptr, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@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 [84 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 [89 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [109 x i8], align 1
@_s2n_debug_info = external thread_local global %struct.s2n_debug_info, align 8
@.str.18 = external hidden unnamed_addr constant [123 x i8], align 1
@cipher_preferences_test_all = external constant %struct.s2n_cipher_preferences, align 8
@.str.19 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [184 x i8], align 1
@s2n_tls13_aes_128_gcm_sha256 = external global %struct.s2n_cipher_suite, align 8
@.str.21 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [51 x i8], align 1
@s2n_rsa_with_aes_128_cbc_sha256 = external global %struct.s2n_cipher_suite, align 8
@.str.28 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = 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 [160 x i8], align 16
  %10 = alloca %struct.s2n_blob, align 8
  %11 = alloca i32, align 4
  %12 = alloca %struct.s2n_result, align 4
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca i32, align 4
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca ptr, align 8
  %19 = alloca %struct.s2n_cipher, align 8
  %20 = alloca %struct.s2n_record_algorithm, align 8
  %21 = alloca %struct.s2n_cipher_suite, align 8
  %22 = alloca %struct.s2n_key_material, align 8
  %23 = alloca %struct.s2n_result, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i64, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %struct.s2n_result, align 4
  %34 = alloca i32, align 4
  %35 = alloca %struct.s2n_result, align 4
  %36 = alloca i64, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca %struct.s2n_key_material, align 8
  %40 = alloca %struct.s2n_result, align 4
  %41 = alloca i32, align 4
  %42 = alloca i64, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %struct.s2n_result, align 4
  %45 = alloca i32, align 4
  %46 = alloca %struct.s2n_result, align 4
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca %struct.s2n_key_material, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %struct.s2n_result, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca %struct.s2n_result, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca %struct.s2n_result, align 4
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i32, align 4
  %73 = alloca %struct.s2n_key_material, align 8
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca %struct.s2n_result, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca %struct.s2n_result, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca %struct.s2n_result, align 4
  %94 = alloca i32, align 4
  %95 = alloca 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 %96

96:                                               ; preds = %2
  br label %97

97:                                               ; preds = %96
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %98 = load ptr, ptr @stdout, align 8, !tbaa !9
  %99 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %98, ptr noundef @.str, ptr noundef @.str.1) #11
  %100 = load ptr, ptr @stdout, align 8, !tbaa !9
  %101 = call i32 @fflush(ptr noundef %100)
  br label %102

102:                                              ; preds = %97
  %103 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %104 = icmp eq i32 %103, -1
  br i1 %104, label %105, label %156

105:                                              ; preds = %102
  br label %106

106:                                              ; preds = %105
  br label %107

107:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #11
  %108 = call ptr @__errno_location() #12
  %109 = load i32, ptr %108, align 4, !tbaa !5
  store i32 %109, ptr %6, align 4, !tbaa !5
  %110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %111 = call i32 @s2n_print_stacktrace(ptr noundef %110)
  %112 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %113 = trunc i8 %112 to i1
  br i1 %113, label %114, label %136

114:                                              ; preds = %107
  %115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %116 = call i32 @fileno(ptr noundef %115) #11
  %117 = call i32 @isatty(i32 noundef %116) #11
  %118 = icmp ne i32 %117, 0
  br i1 %118, label %119, label %136

119:                                              ; preds = %114
  %120 = load i32, ptr %6, align 4, !tbaa !5
  %121 = call ptr @__errno_location() #12
  store i32 %120, ptr %121, align 4, !tbaa !5
  %122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %123 = load i32, ptr @test_count, align 4, !tbaa !5
  %124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %126 = call ptr @s2n_strerror(i32 noundef %125, ptr noundef @.str.4)
  %127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = call ptr @s2n_strerror_debug(i32 noundef %128, ptr noundef @.str.4)
  %130 = call ptr @__errno_location() #12
  %131 = load i32, ptr %130, align 4, !tbaa !5
  %132 = call ptr @strerror(i32 noundef %131) #11
  %133 = call ptr @__errno_location() #12
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %122, ptr noundef @.str.2, i32 noundef %123, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 64, ptr noundef %126, ptr noundef %129, ptr noundef %132, i32 noundef %134) #11
  br label %153

136:                                              ; preds = %114, %107
  %137 = load i32, ptr %6, align 4, !tbaa !5
  %138 = call ptr @__errno_location() #12
  store i32 %137, ptr %138, align 4, !tbaa !5
  %139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %140 = load i32, ptr @test_count, align 4, !tbaa !5
  %141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %142 = load i32, ptr %141, align 4, !tbaa !5
  %143 = call ptr @s2n_strerror(i32 noundef %142, ptr noundef @.str.4)
  %144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %145 = load i32, ptr %144, align 4, !tbaa !5
  %146 = call ptr @s2n_strerror_debug(i32 noundef %145, ptr noundef @.str.4)
  %147 = call ptr @__errno_location() #12
  %148 = load i32, ptr %147, align 4, !tbaa !5
  %149 = call ptr @strerror(i32 noundef %148) #11
  %150 = call ptr @__errno_location() #12
  %151 = load i32, ptr %150, align 4, !tbaa !5
  %152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %139, ptr noundef @.str.5, i32 noundef %140, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 64, ptr noundef %143, ptr noundef %146, ptr noundef %149, i32 noundef %151) #11
  br label %153

153:                                              ; preds = %136, %119
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  br label %154

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

155:                                              ; No predecessors!
  br label %156

156:                                              ; preds = %155, %102
  br label %157

157:                                              ; preds = %156
  br label %158

158:                                              ; preds = %157
  %159 = load i32, ptr @test_count, align 4, !tbaa !5
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr @test_count, align 4, !tbaa !5
  %161 = call i32 @s2n_enable_atexit()
  %162 = icmp eq i32 %161, -1
  br i1 %162, label %163, label %214

163:                                              ; preds = %158
  br label %164

164:                                              ; preds = %163
  br label %165

165:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  %166 = call ptr @__errno_location() #12
  %167 = load i32, ptr %166, align 4, !tbaa !5
  store i32 %167, ptr %7, align 4, !tbaa !5
  %168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %169 = call i32 @s2n_print_stacktrace(ptr noundef %168)
  %170 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %171 = trunc i8 %170 to i1
  br i1 %171, label %172, label %194

172:                                              ; preds = %165
  %173 = load ptr, ptr @stderr, align 8, !tbaa !9
  %174 = call i32 @fileno(ptr noundef %173) #11
  %175 = call i32 @isatty(i32 noundef %174) #11
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %194

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

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

211:                                              ; preds = %194, %177
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  br label %212

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

213:                                              ; No predecessors!
  br label %214

214:                                              ; preds = %213, %158
  br label %215

215:                                              ; preds = %214
  br label %216

216:                                              ; preds = %215
  br label %217

217:                                              ; preds = %216
  %218 = call i32 @s2n_init()
  %219 = icmp eq i32 %218, -1
  br i1 %219, label %220, label %271

220:                                              ; preds = %217
  br label %221

221:                                              ; preds = %220
  br label %222

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

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

234:                                              ; preds = %229
  %235 = load i32, ptr %8, align 4, !tbaa !5
  %236 = call ptr @__errno_location() #12
  store i32 %235, ptr %236, align 4, !tbaa !5
  %237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %238 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %240, ptr noundef @.str.4)
  %242 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %243 = load i32, ptr %242, align 4, !tbaa !5
  %244 = call ptr @s2n_strerror_debug(i32 noundef %243, ptr noundef @.str.4)
  %245 = call ptr @__errno_location() #12
  %246 = load i32, ptr %245, align 4, !tbaa !5
  %247 = call ptr @strerror(i32 noundef %246) #11
  %248 = call ptr @__errno_location() #12
  %249 = load i32, ptr %248, align 4, !tbaa !5
  %250 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %237, ptr noundef @.str.2, i32 noundef %238, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 64, ptr noundef %241, ptr noundef %244, ptr noundef %247, i32 noundef %249) #11
  br label %268

251:                                              ; preds = %229, %222
  %252 = load i32, ptr %8, align 4, !tbaa !5
  %253 = call ptr @__errno_location() #12
  store i32 %252, ptr %253, align 4, !tbaa !5
  %254 = load ptr, ptr @stderr, align 8, !tbaa !9
  %255 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %257, ptr noundef @.str.4)
  %259 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %260 = load i32, ptr %259, align 4, !tbaa !5
  %261 = call ptr @s2n_strerror_debug(i32 noundef %260, ptr noundef @.str.4)
  %262 = call ptr @__errno_location() #12
  %263 = load i32, ptr %262, align 4, !tbaa !5
  %264 = call ptr @strerror(i32 noundef %263) #11
  %265 = call ptr @__errno_location() #12
  %266 = load i32, ptr %265, align 4, !tbaa !5
  %267 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %254, ptr noundef @.str.5, i32 noundef %255, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 64, ptr noundef %258, ptr noundef %261, ptr noundef %264, i32 noundef %266) #11
  br label %268

268:                                              ; preds = %251, %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  br label %269

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

270:                                              ; No predecessors!
  br label %271

271:                                              ; preds = %270, %217
  br label %272

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 160, ptr %9) #11
  call void @llvm.memset.p0.i64(ptr align 16 %9, i8 0, i64 160, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #11
  call void @llvm.memset.p0.i64(ptr align 8 %10, i8 0, i64 24, i1 false)
  br label %274

274:                                              ; preds = %273
  %275 = load i32, ptr @test_count, align 4, !tbaa !5
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr @test_count, align 4, !tbaa !5
  %277 = getelementptr inbounds [160 x i8], ptr %9, i64 0, i64 0
  %278 = call i32 @s2n_blob_init(ptr noundef %10, ptr noundef %277, i32 noundef 160)
  %279 = icmp eq i32 %278, -1
  br i1 %279, label %280, label %333

280:                                              ; preds = %274
  br label %281

281:                                              ; preds = %280
  br label %282

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

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

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

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

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

329:                                              ; preds = %328
  br label %330

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

331:                                              ; No predecessors!
  br label %332

332:                                              ; preds = %331
  br label %333

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

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335
  %337 = load i32, ptr @test_count, align 4, !tbaa !5
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr @test_count, align 4, !tbaa !5
  %339 = call i32 @s2n_get_public_random_data(ptr noundef %10)
  %340 = getelementptr inbounds %struct.s2n_result, ptr %12, i32 0, i32 0
  store i32 %339, ptr %340, align 4
  %341 = getelementptr inbounds %struct.s2n_result, ptr %12, i32 0, i32 0
  %342 = load i32, ptr %341, align 4
  %343 = call zeroext i1 @s2n_result_is_ok(i32 %342)
  br i1 %343, label %397, label %344

344:                                              ; preds = %336
  br label %345

345:                                              ; preds = %344
  br label %346

346:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #11
  %347 = call ptr @__errno_location() #12
  %348 = load i32, ptr %347, align 4, !tbaa !5
  store i32 %348, ptr %13, align 4, !tbaa !5
  %349 = load ptr, ptr @stderr, align 8, !tbaa !9
  %350 = call i32 @s2n_print_stacktrace(ptr noundef %349)
  %351 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %352 = trunc i8 %351 to i1
  br i1 %352, label %353, label %375

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

358:                                              ; preds = %353
  %359 = load i32, ptr %13, align 4, !tbaa !5
  %360 = call ptr @__errno_location() #12
  store i32 %359, ptr %360, align 4, !tbaa !5
  %361 = load ptr, ptr @stderr, align 8, !tbaa !9
  %362 = load i32, ptr @test_count, align 4, !tbaa !5
  %363 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %364 = load i32, ptr %363, align 4, !tbaa !5
  %365 = call ptr @s2n_strerror(i32 noundef %364, ptr noundef @.str.4)
  %366 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %367 = load i32, ptr %366, align 4, !tbaa !5
  %368 = call ptr @s2n_strerror_debug(i32 noundef %367, ptr noundef @.str.4)
  %369 = call ptr @__errno_location() #12
  %370 = load i32, ptr %369, align 4, !tbaa !5
  %371 = call ptr @strerror(i32 noundef %370) #11
  %372 = call ptr @__errno_location() #12
  %373 = load i32, ptr %372, align 4, !tbaa !5
  %374 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %361, ptr noundef @.str.2, i32 noundef %362, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 70, ptr noundef %365, ptr noundef %368, ptr noundef %371, i32 noundef %373) #11
  br label %392

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

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

393:                                              ; preds = %392
  br label %394

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

395:                                              ; No predecessors!
  br label %396

396:                                              ; preds = %395
  br label %397

397:                                              ; preds = %396, %336
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #11
  store i8 0, ptr %14, align 1, !tbaa !15
  br label %400

400:                                              ; preds = %1081, %399
  %401 = load i8, ptr %14, align 1, !tbaa !15
  %402 = zext i8 %401 to i32
  %403 = icmp slt i32 %402, 64
  br i1 %403, label %405, label %404

404:                                              ; preds = %400
  store i32 36, ptr %15, align 4
  br label %1084

405:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #11
  store i8 0, ptr %16, align 1, !tbaa !15
  br label %406

406:                                              ; preds = %1075, %405
  %407 = load i8, ptr %16, align 1, !tbaa !15
  %408 = zext i8 %407 to i32
  %409 = icmp slt i32 %408, 32
  br i1 %409, label %411, label %410

410:                                              ; preds = %406
  store i32 39, ptr %15, align 4
  br label %1078

411:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #11
  store i8 0, ptr %17, align 1, !tbaa !15
  br label %412

412:                                              ; preds = %1069, %411
  %413 = load i8, ptr %17, align 1, !tbaa !15
  %414 = zext i8 %413 to i32
  %415 = icmp slt i32 %414, 16
  br i1 %415, label %417, label %416

416:                                              ; preds = %412
  store i32 42, ptr %15, align 4
  br label %1072

417:                                              ; preds = %412
  %418 = load i8, ptr %14, align 1, !tbaa !15
  %419 = zext i8 %418 to i32
  %420 = mul nsw i32 %419, 2
  %421 = load i8, ptr %16, align 1, !tbaa !15
  %422 = zext i8 %421 to i32
  %423 = mul nsw i32 %422, 2
  %424 = add nsw i32 %420, %423
  %425 = load i8, ptr %17, align 1, !tbaa !15
  %426 = zext i8 %425 to i32
  %427 = mul nsw i32 %426, 2
  %428 = add nsw i32 %424, %427
  %429 = icmp sgt i32 %428, 160
  br i1 %429, label %430, label %431

430:                                              ; preds = %417
  br label %1069

431:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #11
  %432 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %432, ptr %18, align 8, !tbaa !9
  %433 = load ptr, ptr %18, align 8, !tbaa !9
  %434 = getelementptr inbounds %struct.s2n_connection, ptr %433, i32 0, i32 23
  store i8 31, ptr %434, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 104, ptr %19) #11
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 104, i1 false)
  %435 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 0
  store i32 3, ptr %435, align 8, !tbaa !43
  %436 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 1
  %437 = getelementptr inbounds %struct.s2n_composite_cipher, ptr %436, i32 0, i32 0
  %438 = load i8, ptr %17, align 1, !tbaa !15
  store i8 %438, ptr %437, align 8, !tbaa !45
  %439 = getelementptr inbounds %struct.s2n_composite_cipher, ptr %436, i32 0, i32 1
  %440 = getelementptr inbounds %struct.s2n_composite_cipher, ptr %436, i32 0, i32 2
  %441 = load i8, ptr %14, align 1, !tbaa !15
  store i8 %441, ptr %440, align 2, !tbaa !47
  %442 = getelementptr inbounds %struct.s2n_composite_cipher, ptr %436, i32 0, i32 3
  %443 = getelementptr inbounds %struct.s2n_composite_cipher, ptr %436, i32 0, i32 4
  %444 = getelementptr inbounds %struct.s2n_composite_cipher, ptr %436, i32 0, i32 5
  %445 = getelementptr inbounds %struct.s2n_composite_cipher, ptr %436, i32 0, i32 6
  %446 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 2
  %447 = load i8, ptr %16, align 1, !tbaa !15
  store i8 %447, ptr %446, align 8, !tbaa !48
  %448 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 3
  %449 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 4
  %450 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 5
  %451 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 6
  %452 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 7
  %453 = getelementptr inbounds %struct.s2n_cipher, ptr %19, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #11
  %454 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %20, i32 0, i32 0
  store ptr %19, ptr %454, align 8, !tbaa !49
  %455 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %20, i32 0, i32 1
  store i32 0, ptr %455, align 8, !tbaa !51
  %456 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %20, i32 0, i32 2
  store i32 0, ptr %456, align 4, !tbaa !52
  %457 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %20, i32 0, i32 3
  store i64 0, ptr %457, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 104, ptr %21) #11
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 104, i1 false)
  %458 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 1
  %459 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 2
  %460 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 3
  %461 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 4
  %462 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 5
  %463 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 6
  store ptr %20, ptr %463, align 8, !tbaa !54
  %464 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 7
  %465 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 8
  %466 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 9
  %467 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 10
  %468 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 11
  %469 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %21, i32 0, i32 12
  %470 = load ptr, ptr %18, align 8, !tbaa !9
  %471 = getelementptr inbounds %struct.s2n_connection, ptr %470, i32 0, i32 27
  %472 = load ptr, ptr %471, align 8, !tbaa !56
  %473 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %472, i32 0, i32 0
  store ptr %21, ptr %473, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 304, ptr %22) #11
  call void @llvm.memset.p0.i64(ptr align 8 %22, i8 0, i64 304, i1 false)
  br label %474

474:                                              ; preds = %431
  %475 = load i32, ptr @test_count, align 4, !tbaa !5
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr @test_count, align 4, !tbaa !5
  %477 = load ptr, ptr %18, align 8, !tbaa !9
  %478 = call i32 @s2n_key_material_init(ptr noundef %22, ptr noundef %477)
  %479 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  store i32 %478, ptr %479, align 4
  %480 = getelementptr inbounds %struct.s2n_result, ptr %23, i32 0, i32 0
  %481 = load i32, ptr %480, align 4
  %482 = call zeroext i1 @s2n_result_is_ok(i32 %481)
  br i1 %482, label %536, label %483

483:                                              ; preds = %474
  br label %484

484:                                              ; preds = %483
  br label %485

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

492:                                              ; preds = %485
  %493 = load ptr, ptr @stderr, align 8, !tbaa !9
  %494 = call i32 @fileno(ptr noundef %493) #11
  %495 = call i32 @isatty(i32 noundef %494) #11
  %496 = icmp ne i32 %495, 0
  br i1 %496, label %497, label %514

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

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

531:                                              ; preds = %514, %497
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %532

532:                                              ; preds = %531
  br label %533

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

534:                                              ; No predecessors!
  br label %535

535:                                              ; preds = %534
  br label %536

536:                                              ; preds = %535, %474
  br label %537

537:                                              ; preds = %536
  br label %538

538:                                              ; preds = %537
  br label %539

539:                                              ; preds = %538
  %540 = load i32, ptr @test_count, align 4, !tbaa !5
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr @test_count, align 4, !tbaa !5
  %542 = getelementptr inbounds %struct.s2n_key_material, ptr %22, i32 0, i32 1
  %543 = getelementptr inbounds %struct.s2n_blob, ptr %542, i32 0, i32 1
  %544 = load i32, ptr %543, align 8, !tbaa !62
  %545 = load i8, ptr %14, align 1, !tbaa !15
  %546 = zext i8 %545 to i32
  %547 = icmp eq i32 %544, %546
  br i1 %547, label %601, label %548

548:                                              ; preds = %539
  br label %549

549:                                              ; preds = %548
  br label %550

550:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  %551 = call ptr @__errno_location() #12
  %552 = load i32, ptr %551, align 4, !tbaa !5
  store i32 %552, ptr %25, align 4, !tbaa !5
  %553 = load ptr, ptr @stderr, align 8, !tbaa !9
  %554 = call i32 @s2n_print_stacktrace(ptr noundef %553)
  %555 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %556 = trunc i8 %555 to i1
  br i1 %556, label %557, label %579

557:                                              ; preds = %550
  %558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %559 = call i32 @fileno(ptr noundef %558) #11
  %560 = call i32 @isatty(i32 noundef %559) #11
  %561 = icmp ne i32 %560, 0
  br i1 %561, label %562, label %579

562:                                              ; preds = %557
  %563 = load i32, ptr %25, align 4, !tbaa !5
  %564 = call ptr @__errno_location() #12
  store i32 %563, ptr %564, align 4, !tbaa !5
  %565 = load ptr, ptr @stderr, align 8, !tbaa !9
  %566 = load i32, ptr @test_count, align 4, !tbaa !5
  %567 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %568 = load i32, ptr %567, align 4, !tbaa !5
  %569 = call ptr @s2n_strerror(i32 noundef %568, ptr noundef @.str.4)
  %570 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %571 = load i32, ptr %570, align 4, !tbaa !5
  %572 = call ptr @s2n_strerror_debug(i32 noundef %571, ptr noundef @.str.4)
  %573 = call ptr @__errno_location() #12
  %574 = load i32, ptr %573, align 4, !tbaa !5
  %575 = call ptr @strerror(i32 noundef %574) #11
  %576 = call ptr @__errno_location() #12
  %577 = load i32, ptr %576, align 4, !tbaa !5
  %578 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %565, ptr noundef @.str.2, i32 noundef %566, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 109, ptr noundef %569, ptr noundef %572, ptr noundef %575, i32 noundef %577) #11
  br label %596

579:                                              ; preds = %557, %550
  %580 = load i32, ptr %25, align 4, !tbaa !5
  %581 = call ptr @__errno_location() #12
  store i32 %580, ptr %581, align 4, !tbaa !5
  %582 = load ptr, ptr @stderr, align 8, !tbaa !9
  %583 = load i32, ptr @test_count, align 4, !tbaa !5
  %584 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %585 = load i32, ptr %584, align 4, !tbaa !5
  %586 = call ptr @s2n_strerror(i32 noundef %585, ptr noundef @.str.4)
  %587 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %588 = load i32, ptr %587, align 4, !tbaa !5
  %589 = call ptr @s2n_strerror_debug(i32 noundef %588, ptr noundef @.str.4)
  %590 = call ptr @__errno_location() #12
  %591 = load i32, ptr %590, align 4, !tbaa !5
  %592 = call ptr @strerror(i32 noundef %591) #11
  %593 = call ptr @__errno_location() #12
  %594 = load i32, ptr %593, align 4, !tbaa !5
  %595 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %582, ptr noundef @.str.5, i32 noundef %583, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 109, ptr noundef %586, ptr noundef %589, ptr noundef %592, i32 noundef %594) #11
  br label %596

596:                                              ; preds = %579, %562
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  br label %597

597:                                              ; preds = %596
  br label %598

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

599:                                              ; No predecessors!
  br label %600

600:                                              ; preds = %599
  br label %601

601:                                              ; preds = %600, %539
  br label %602

602:                                              ; preds = %601
  br label %603

603:                                              ; preds = %602
  br label %604

604:                                              ; preds = %603
  %605 = load i32, ptr @test_count, align 4, !tbaa !5
  %606 = add nsw i32 %605, 1
  store i32 %606, ptr @test_count, align 4, !tbaa !5
  %607 = getelementptr inbounds %struct.s2n_key_material, ptr %22, i32 0, i32 3
  %608 = getelementptr inbounds %struct.s2n_blob, ptr %607, i32 0, i32 1
  %609 = load i32, ptr %608, align 8, !tbaa !64
  %610 = load i8, ptr %16, align 1, !tbaa !15
  %611 = zext i8 %610 to i32
  %612 = icmp eq i32 %609, %611
  br i1 %612, label %666, label %613

613:                                              ; preds = %604
  br label %614

614:                                              ; preds = %613
  br label %615

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

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

627:                                              ; preds = %622
  %628 = load i32, ptr %26, align 4, !tbaa !5
  %629 = call ptr @__errno_location() #12
  store i32 %628, ptr %629, align 4, !tbaa !5
  %630 = load ptr, ptr @stderr, align 8, !tbaa !9
  %631 = load i32, ptr @test_count, align 4, !tbaa !5
  %632 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %633 = load i32, ptr %632, align 4, !tbaa !5
  %634 = call ptr @s2n_strerror(i32 noundef %633, ptr noundef @.str.4)
  %635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call ptr @s2n_strerror_debug(i32 noundef %636, ptr noundef @.str.4)
  %638 = call ptr @__errno_location() #12
  %639 = load i32, ptr %638, align 4, !tbaa !5
  %640 = call ptr @strerror(i32 noundef %639) #11
  %641 = call ptr @__errno_location() #12
  %642 = load i32, ptr %641, align 4, !tbaa !5
  %643 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %630, ptr noundef @.str.2, i32 noundef %631, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 110, ptr noundef %634, ptr noundef %637, ptr noundef %640, i32 noundef %642) #11
  br label %661

644:                                              ; preds = %622, %615
  %645 = load i32, ptr %26, align 4, !tbaa !5
  %646 = call ptr @__errno_location() #12
  store i32 %645, ptr %646, align 4, !tbaa !5
  %647 = load ptr, ptr @stderr, align 8, !tbaa !9
  %648 = load i32, ptr @test_count, align 4, !tbaa !5
  %649 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %650 = load i32, ptr %649, align 4, !tbaa !5
  %651 = call ptr @s2n_strerror(i32 noundef %650, ptr noundef @.str.4)
  %652 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %653 = load i32, ptr %652, align 4, !tbaa !5
  %654 = call ptr @s2n_strerror_debug(i32 noundef %653, ptr noundef @.str.4)
  %655 = call ptr @__errno_location() #12
  %656 = load i32, ptr %655, align 4, !tbaa !5
  %657 = call ptr @strerror(i32 noundef %656) #11
  %658 = call ptr @__errno_location() #12
  %659 = load i32, ptr %658, align 4, !tbaa !5
  %660 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %647, ptr noundef @.str.5, i32 noundef %648, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 110, ptr noundef %651, ptr noundef %654, ptr noundef %657, i32 noundef %659) #11
  br label %661

661:                                              ; preds = %644, %627
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  br label %662

662:                                              ; preds = %661
  br label %663

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

664:                                              ; No predecessors!
  br label %665

665:                                              ; preds = %664
  br label %666

666:                                              ; preds = %665, %604
  br label %667

667:                                              ; preds = %666
  br label %668

668:                                              ; preds = %667
  br label %669

669:                                              ; preds = %668
  %670 = load i32, ptr @test_count, align 4, !tbaa !5
  %671 = add nsw i32 %670, 1
  store i32 %671, ptr @test_count, align 4, !tbaa !5
  %672 = getelementptr inbounds %struct.s2n_key_material, ptr %22, i32 0, i32 5
  %673 = getelementptr inbounds %struct.s2n_blob, ptr %672, i32 0, i32 1
  %674 = load i32, ptr %673, align 8, !tbaa !65
  %675 = load i8, ptr %17, align 1, !tbaa !15
  %676 = zext i8 %675 to i32
  %677 = icmp eq i32 %674, %676
  br i1 %677, label %731, label %678

678:                                              ; preds = %669
  br label %679

679:                                              ; preds = %678
  br label %680

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

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

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

709:                                              ; preds = %687, %680
  %710 = load i32, ptr %27, align 4, !tbaa !5
  %711 = call ptr @__errno_location() #12
  store i32 %710, ptr %711, align 4, !tbaa !5
  %712 = load ptr, ptr @stderr, align 8, !tbaa !9
  %713 = load i32, ptr @test_count, align 4, !tbaa !5
  %714 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %715 = load i32, ptr %714, align 4, !tbaa !5
  %716 = call ptr @s2n_strerror(i32 noundef %715, ptr noundef @.str.4)
  %717 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %718 = load i32, ptr %717, align 4, !tbaa !5
  %719 = call ptr @s2n_strerror_debug(i32 noundef %718, ptr noundef @.str.4)
  %720 = call ptr @__errno_location() #12
  %721 = load i32, ptr %720, align 4, !tbaa !5
  %722 = call ptr @strerror(i32 noundef %721) #11
  %723 = call ptr @__errno_location() #12
  %724 = load i32, ptr %723, align 4, !tbaa !5
  %725 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %712, ptr noundef @.str.5, i32 noundef %713, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 111, ptr noundef %716, ptr noundef %719, ptr noundef %722, i32 noundef %724) #11
  br label %726

726:                                              ; preds = %709, %692
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %727

727:                                              ; preds = %726
  br label %728

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

729:                                              ; No predecessors!
  br label %730

730:                                              ; preds = %729
  br label %731

731:                                              ; preds = %730, %669
  br label %732

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  %735 = load i32, ptr @test_count, align 4, !tbaa !5
  %736 = add nsw i32 %735, 1
  store i32 %736, ptr @test_count, align 4, !tbaa !5
  %737 = getelementptr inbounds %struct.s2n_key_material, ptr %22, i32 0, i32 2
  %738 = getelementptr inbounds %struct.s2n_blob, ptr %737, i32 0, i32 1
  %739 = load i32, ptr %738, align 8, !tbaa !66
  %740 = load i8, ptr %14, align 1, !tbaa !15
  %741 = zext i8 %740 to i32
  %742 = icmp eq i32 %739, %741
  br i1 %742, label %796, label %743

743:                                              ; preds = %734
  br label %744

744:                                              ; preds = %743
  br label %745

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

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

757:                                              ; preds = %752
  %758 = load i32, ptr %28, align 4, !tbaa !5
  %759 = call ptr @__errno_location() #12
  store i32 %758, ptr %759, align 4, !tbaa !5
  %760 = load ptr, ptr @stderr, align 8, !tbaa !9
  %761 = load i32, ptr @test_count, align 4, !tbaa !5
  %762 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %763 = load i32, ptr %762, align 4, !tbaa !5
  %764 = call ptr @s2n_strerror(i32 noundef %763, ptr noundef @.str.4)
  %765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %766 = load i32, ptr %765, align 4, !tbaa !5
  %767 = call ptr @s2n_strerror_debug(i32 noundef %766, ptr noundef @.str.4)
  %768 = call ptr @__errno_location() #12
  %769 = load i32, ptr %768, align 4, !tbaa !5
  %770 = call ptr @strerror(i32 noundef %769) #11
  %771 = call ptr @__errno_location() #12
  %772 = load i32, ptr %771, align 4, !tbaa !5
  %773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %760, ptr noundef @.str.2, i32 noundef %761, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 112, ptr noundef %764, ptr noundef %767, ptr noundef %770, i32 noundef %772) #11
  br label %791

774:                                              ; preds = %752, %745
  %775 = load i32, ptr %28, align 4, !tbaa !5
  %776 = call ptr @__errno_location() #12
  store i32 %775, ptr %776, align 4, !tbaa !5
  %777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %778 = load i32, ptr @test_count, align 4, !tbaa !5
  %779 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %780 = load i32, ptr %779, align 4, !tbaa !5
  %781 = call ptr @s2n_strerror(i32 noundef %780, ptr noundef @.str.4)
  %782 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %783 = load i32, ptr %782, align 4, !tbaa !5
  %784 = call ptr @s2n_strerror_debug(i32 noundef %783, ptr noundef @.str.4)
  %785 = call ptr @__errno_location() #12
  %786 = load i32, ptr %785, align 4, !tbaa !5
  %787 = call ptr @strerror(i32 noundef %786) #11
  %788 = call ptr @__errno_location() #12
  %789 = load i32, ptr %788, align 4, !tbaa !5
  %790 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %777, ptr noundef @.str.5, i32 noundef %778, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 112, ptr noundef %781, ptr noundef %784, ptr noundef %787, i32 noundef %789) #11
  br label %791

791:                                              ; preds = %774, %757
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %792

792:                                              ; preds = %791
  br label %793

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

794:                                              ; No predecessors!
  br label %795

795:                                              ; preds = %794
  br label %796

796:                                              ; preds = %795, %734
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797
  br label %799

799:                                              ; preds = %798
  %800 = load i32, ptr @test_count, align 4, !tbaa !5
  %801 = add nsw i32 %800, 1
  store i32 %801, ptr @test_count, align 4, !tbaa !5
  %802 = getelementptr inbounds %struct.s2n_key_material, ptr %22, i32 0, i32 4
  %803 = getelementptr inbounds %struct.s2n_blob, ptr %802, i32 0, i32 1
  %804 = load i32, ptr %803, align 8, !tbaa !67
  %805 = load i8, ptr %16, align 1, !tbaa !15
  %806 = zext i8 %805 to i32
  %807 = icmp eq i32 %804, %806
  br i1 %807, label %861, label %808

808:                                              ; preds = %799
  br label %809

809:                                              ; preds = %808
  br label %810

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

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

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

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

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

857:                                              ; preds = %856
  br label %858

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

859:                                              ; No predecessors!
  br label %860

860:                                              ; preds = %859
  br label %861

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

862:                                              ; preds = %861
  br label %863

863:                                              ; preds = %862
  br label %864

864:                                              ; preds = %863
  %865 = load i32, ptr @test_count, align 4, !tbaa !5
  %866 = add nsw i32 %865, 1
  store i32 %866, ptr @test_count, align 4, !tbaa !5
  %867 = getelementptr inbounds %struct.s2n_key_material, ptr %22, i32 0, i32 6
  %868 = getelementptr inbounds %struct.s2n_blob, ptr %867, i32 0, i32 1
  %869 = load i32, ptr %868, align 8, !tbaa !68
  %870 = load i8, ptr %17, align 1, !tbaa !15
  %871 = zext i8 %870 to i32
  %872 = icmp eq i32 %869, %871
  br i1 %872, label %926, label %873

873:                                              ; preds = %864
  br label %874

874:                                              ; preds = %873
  br label %875

875:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  %876 = call ptr @__errno_location() #12
  %877 = load i32, ptr %876, align 4, !tbaa !5
  store i32 %877, ptr %30, align 4, !tbaa !5
  %878 = load ptr, ptr @stderr, align 8, !tbaa !9
  %879 = call i32 @s2n_print_stacktrace(ptr noundef %878)
  %880 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %881 = trunc i8 %880 to i1
  br i1 %881, label %882, label %904

882:                                              ; preds = %875
  %883 = load ptr, ptr @stderr, align 8, !tbaa !9
  %884 = call i32 @fileno(ptr noundef %883) #11
  %885 = call i32 @isatty(i32 noundef %884) #11
  %886 = icmp ne i32 %885, 0
  br i1 %886, label %887, label %904

887:                                              ; preds = %882
  %888 = load i32, ptr %30, align 4, !tbaa !5
  %889 = call ptr @__errno_location() #12
  store i32 %888, ptr %889, align 4, !tbaa !5
  %890 = load ptr, ptr @stderr, align 8, !tbaa !9
  %891 = load i32, ptr @test_count, align 4, !tbaa !5
  %892 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %893 = load i32, ptr %892, align 4, !tbaa !5
  %894 = call ptr @s2n_strerror(i32 noundef %893, ptr noundef @.str.4)
  %895 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %896 = load i32, ptr %895, align 4, !tbaa !5
  %897 = call ptr @s2n_strerror_debug(i32 noundef %896, ptr noundef @.str.4)
  %898 = call ptr @__errno_location() #12
  %899 = load i32, ptr %898, align 4, !tbaa !5
  %900 = call ptr @strerror(i32 noundef %899) #11
  %901 = call ptr @__errno_location() #12
  %902 = load i32, ptr %901, align 4, !tbaa !5
  %903 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %890, ptr noundef @.str.2, i32 noundef %891, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 114, ptr noundef %894, ptr noundef %897, ptr noundef %900, i32 noundef %902) #11
  br label %921

904:                                              ; preds = %882, %875
  %905 = load i32, ptr %30, align 4, !tbaa !5
  %906 = call ptr @__errno_location() #12
  store i32 %905, ptr %906, align 4, !tbaa !5
  %907 = load ptr, ptr @stderr, align 8, !tbaa !9
  %908 = load i32, ptr @test_count, align 4, !tbaa !5
  %909 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %910 = load i32, ptr %909, align 4, !tbaa !5
  %911 = call ptr @s2n_strerror(i32 noundef %910, ptr noundef @.str.4)
  %912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %913 = load i32, ptr %912, align 4, !tbaa !5
  %914 = call ptr @s2n_strerror_debug(i32 noundef %913, ptr noundef @.str.4)
  %915 = call ptr @__errno_location() #12
  %916 = load i32, ptr %915, align 4, !tbaa !5
  %917 = call ptr @strerror(i32 noundef %916) #11
  %918 = call ptr @__errno_location() #12
  %919 = load i32, ptr %918, align 4, !tbaa !5
  %920 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %907, ptr noundef @.str.5, i32 noundef %908, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 114, ptr noundef %911, ptr noundef %914, ptr noundef %917, i32 noundef %919) #11
  br label %921

921:                                              ; preds = %904, %887
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  br label %922

922:                                              ; preds = %921
  br label %923

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

924:                                              ; No predecessors!
  br label %925

925:                                              ; preds = %924
  br label %926

926:                                              ; preds = %925, %864
  br label %927

927:                                              ; preds = %926
  br label %928

928:                                              ; preds = %927
  br label %929

929:                                              ; preds = %928
  %930 = load i32, ptr @test_count, align 4, !tbaa !5
  %931 = add nsw i32 %930, 1
  store i32 %931, ptr @test_count, align 4, !tbaa !5
  br label %932

932:                                              ; preds = %929
  br label %933

933:                                              ; preds = %932
  br label %934

934:                                              ; preds = %933
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  store i64 160, ptr %31, align 8, !tbaa !69
  %935 = load i64, ptr %31, align 8, !tbaa !69
  %936 = icmp ne i64 %935, 0
  %937 = xor i1 %936, true
  %938 = xor i1 %937, true
  %939 = zext i1 %938 to i32
  %940 = sext i32 %939 to i64
  %941 = call i64 @llvm.expect.i64(i64 %940, i64 1)
  %942 = icmp ne i64 %941, 0
  br i1 %942, label %943, label %991

943:                                              ; preds = %934
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  %944 = getelementptr inbounds %struct.s2n_key_material, ptr %22, i32 0, i32 0
  %945 = getelementptr inbounds [160 x i8], ptr %944, i64 0, i64 0
  %946 = getelementptr inbounds [160 x i8], ptr %9, i64 0, i64 0
  %947 = load i64, ptr %31, align 8, !tbaa !69
  %948 = call ptr @s2n_ensure_memmove_trace(ptr noundef %945, ptr noundef %946, i64 noundef %947)
  store ptr %948, ptr %32, align 8, !tbaa !9
  br label %949

949:                                              ; preds = %943
  %950 = load ptr, ptr %32, align 8, !tbaa !9
  %951 = icmp ne ptr %950, null
  br i1 %951, label %985, label %952

952:                                              ; preds = %949
  br label %953

953:                                              ; preds = %952
  br label %954

954:                                              ; preds = %953
  %955 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %956 = getelementptr inbounds %struct.s2n_debug_info, ptr %955, i32 0, i32 0
  store ptr @.str.17, ptr %956, align 8, !tbaa !70
  %957 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %958 = getelementptr inbounds %struct.s2n_debug_info, ptr %957, i32 0, i32 0
  %959 = load ptr, ptr %958, align 8, !tbaa !70
  %960 = getelementptr inbounds i8, ptr %959, i64 21
  %961 = call ptr @strrchr(ptr noundef %960, i32 noundef 47) #14
  %962 = icmp ne ptr %961, null
  br i1 %962, label %963, label %970

963:                                              ; preds = %954
  %964 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %965 = getelementptr inbounds %struct.s2n_debug_info, ptr %964, i32 0, i32 0
  %966 = load ptr, ptr %965, align 8, !tbaa !70
  %967 = getelementptr inbounds i8, ptr %966, i64 21
  %968 = call ptr @strrchr(ptr noundef %967, i32 noundef 47) #14
  %969 = getelementptr inbounds i8, ptr %968, i64 1
  br label %975

970:                                              ; preds = %954
  %971 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %972 = getelementptr inbounds %struct.s2n_debug_info, ptr %971, i32 0, i32 0
  %973 = load ptr, ptr %972, align 8, !tbaa !70
  %974 = getelementptr inbounds i8, ptr %973, i64 21
  br label %975

975:                                              ; preds = %970, %963
  %976 = phi ptr [ %969, %963 ], [ %974, %970 ]
  %977 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %978 = getelementptr inbounds %struct.s2n_debug_info, ptr %977, i32 0, i32 1
  store ptr %976, ptr %978, align 8, !tbaa !72
  %979 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %979, align 4, !tbaa !5
  %980 = call i32 @s2n_calculate_stacktrace()
  br label %981

981:                                              ; preds = %975
  br label %982

982:                                              ; preds = %981
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %988

983:                                              ; No predecessors!
  br label %984

984:                                              ; preds = %983
  br label %985

985:                                              ; preds = %984, %949
  br label %986

986:                                              ; preds = %985
  br label %987

987:                                              ; preds = %986
  store i32 0, ptr %15, align 4
  br label %988

988:                                              ; preds = %987, %982
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  %989 = load i32, ptr %15, align 4
  switch i32 %989, label %992 [
    i32 0, label %990
  ]

990:                                              ; preds = %988
  br label %991

991:                                              ; preds = %990, %934
  store i32 0, ptr %15, align 4
  br label %992

992:                                              ; preds = %991, %988
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  %993 = load i32, ptr %15, align 4
  switch i32 %993, label %1064 [
    i32 0, label %994
  ]

994:                                              ; preds = %992
  br label %995

995:                                              ; preds = %994
  br label %996

996:                                              ; preds = %995
  br label %997

997:                                              ; preds = %996
  %998 = load i32, ptr @test_count, align 4, !tbaa !5
  %999 = add nsw i32 %998, 1
  store i32 %999, ptr @test_count, align 4, !tbaa !5
  %1000 = load i8, ptr %14, align 1, !tbaa !15
  %1001 = load i8, ptr %16, align 1, !tbaa !15
  %1002 = load i8, ptr %17, align 1, !tbaa !15
  %1003 = call i32 @s2n_test_validate_key_material(ptr noundef %22, ptr noundef %10, i8 noundef zeroext %1000, i8 noundef zeroext %1001, i8 noundef zeroext %1002)
  %1004 = getelementptr inbounds %struct.s2n_result, ptr %33, i32 0, i32 0
  store i32 %1003, ptr %1004, align 4
  %1005 = getelementptr inbounds %struct.s2n_result, ptr %33, i32 0, i32 0
  %1006 = load i32, ptr %1005, align 4
  %1007 = call zeroext i1 @s2n_result_is_ok(i32 %1006)
  br i1 %1007, label %1061, label %1008

1008:                                             ; preds = %997
  br label %1009

1009:                                             ; preds = %1008
  br label %1010

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

1017:                                             ; preds = %1010
  %1018 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1019 = call i32 @fileno(ptr noundef %1018) #11
  %1020 = call i32 @isatty(i32 noundef %1019) #11
  %1021 = icmp ne i32 %1020, 0
  br i1 %1021, label %1022, label %1039

1022:                                             ; preds = %1017
  %1023 = load i32, ptr %34, align 4, !tbaa !5
  %1024 = call ptr @__errno_location() #12
  store i32 %1023, ptr %1024, align 4, !tbaa !5
  %1025 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1026 = load i32, ptr @test_count, align 4, !tbaa !5
  %1027 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1028 = load i32, ptr %1027, align 4, !tbaa !5
  %1029 = call ptr @s2n_strerror(i32 noundef %1028, ptr noundef @.str.4)
  %1030 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1031 = load i32, ptr %1030, align 4, !tbaa !5
  %1032 = call ptr @s2n_strerror_debug(i32 noundef %1031, ptr noundef @.str.4)
  %1033 = call ptr @__errno_location() #12
  %1034 = load i32, ptr %1033, align 4, !tbaa !5
  %1035 = call ptr @strerror(i32 noundef %1034) #11
  %1036 = call ptr @__errno_location() #12
  %1037 = load i32, ptr %1036, align 4, !tbaa !5
  %1038 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1025, ptr noundef @.str.2, i32 noundef %1026, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 119, ptr noundef %1029, ptr noundef %1032, ptr noundef %1035, i32 noundef %1037) #11
  br label %1056

1039:                                             ; preds = %1017, %1010
  %1040 = load i32, ptr %34, align 4, !tbaa !5
  %1041 = call ptr @__errno_location() #12
  store i32 %1040, ptr %1041, align 4, !tbaa !5
  %1042 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1043 = load i32, ptr @test_count, align 4, !tbaa !5
  %1044 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1045 = load i32, ptr %1044, align 4, !tbaa !5
  %1046 = call ptr @s2n_strerror(i32 noundef %1045, ptr noundef @.str.4)
  %1047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1048 = load i32, ptr %1047, align 4, !tbaa !5
  %1049 = call ptr @s2n_strerror_debug(i32 noundef %1048, ptr noundef @.str.4)
  %1050 = call ptr @__errno_location() #12
  %1051 = load i32, ptr %1050, align 4, !tbaa !5
  %1052 = call ptr @strerror(i32 noundef %1051) #11
  %1053 = call ptr @__errno_location() #12
  %1054 = load i32, ptr %1053, align 4, !tbaa !5
  %1055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1042, ptr noundef @.str.5, i32 noundef %1043, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 119, ptr noundef %1046, ptr noundef %1049, ptr noundef %1052, i32 noundef %1054) #11
  br label %1056

1056:                                             ; preds = %1039, %1022
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %1057

1057:                                             ; preds = %1056
  br label %1058

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

1059:                                             ; No predecessors!
  br label %1060

1060:                                             ; preds = %1059
  br label %1061

1061:                                             ; preds = %1060, %997
  br label %1062

1062:                                             ; preds = %1061
  br label %1063

1063:                                             ; preds = %1062
  store i32 0, ptr %15, align 4
  br label %1064

1064:                                             ; preds = %1063, %992
  call void @llvm.lifetime.end.p0(i64 304, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr %19) #11
  %1065 = call i32 @s2n_connection_ptr_free(ptr noundef %18)
  %1066 = getelementptr inbounds %struct.s2n_result, ptr %35, i32 0, i32 0
  store i32 %1065, ptr %1066, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #11
  %1067 = load i32, ptr %15, align 4
  switch i32 %1067, label %1072 [
    i32 0, label %1068
  ]

1068:                                             ; preds = %1064
  br label %1069

1069:                                             ; preds = %1068, %430
  %1070 = load i8, ptr %17, align 1, !tbaa !15
  %1071 = add i8 %1070, 1
  store i8 %1071, ptr %17, align 1, !tbaa !15
  br label %412, !llvm.loop !73

1072:                                             ; preds = %1064, %416
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #11
  %1073 = load i32, ptr %15, align 4
  switch i32 %1073, label %1078 [
    i32 42, label %1074
  ]

1074:                                             ; preds = %1072
  br label %1075

1075:                                             ; preds = %1074
  %1076 = load i8, ptr %16, align 1, !tbaa !15
  %1077 = add i8 %1076, 1
  store i8 %1077, ptr %16, align 1, !tbaa !15
  br label %406, !llvm.loop !75

1078:                                             ; preds = %1072, %410
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #11
  %1079 = load i32, ptr %15, align 4
  switch i32 %1079, label %1084 [
    i32 39, label %1080
  ]

1080:                                             ; preds = %1078
  br label %1081

1081:                                             ; preds = %1080
  %1082 = load i8, ptr %14, align 1, !tbaa !15
  %1083 = add i8 %1082, 1
  store i8 %1083, ptr %14, align 1, !tbaa !15
  br label %400, !llvm.loop !76

1084:                                             ; preds = %1078, %404
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #11
  %1085 = load i32, ptr %15, align 4
  switch i32 %1085, label %3452 [
    i32 36, label %1086
  ]

1086:                                             ; preds = %1084
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  store i64 0, ptr %36, align 8, !tbaa !69
  br label %1087

1087:                                             ; preds = %1326, %1086
  %1088 = load i64, ptr %36, align 8, !tbaa !69
  %1089 = load i16, ptr @cipher_preferences_test_all, align 8, !tbaa !77
  %1090 = zext i16 %1089 to i64
  %1091 = icmp ult i64 %1088, %1090
  br i1 %1091, label %1093, label %1092

1092:                                             ; preds = %1087
  store i32 103, ptr %15, align 4
  br label %1329

1093:                                             ; preds = %1087
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #11
  %1094 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %1094, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %1095 = load ptr, ptr getelementptr inbounds (%struct.s2n_cipher_preferences, ptr @cipher_preferences_test_all, i32 0, i32 1), align 8, !tbaa !79
  %1096 = load i64, ptr %36, align 8, !tbaa !69
  %1097 = getelementptr inbounds ptr, ptr %1095, i64 %1096
  %1098 = load ptr, ptr %1097, align 8, !tbaa !9
  store ptr %1098, ptr %38, align 8, !tbaa !9
  %1099 = load ptr, ptr %38, align 8, !tbaa !9
  %1100 = load i8, ptr %1099, align 8
  %1101 = and i8 %1100, 1
  %1102 = zext i8 %1101 to i32
  %1103 = icmp ne i32 %1102, 0
  br i1 %1103, label %1105, label %1104

1104:                                             ; preds = %1093
  store i32 105, ptr %15, align 4
  br label %1321

1105:                                             ; preds = %1093
  %1106 = load ptr, ptr %38, align 8, !tbaa !9
  %1107 = load ptr, ptr %37, align 8, !tbaa !9
  %1108 = getelementptr inbounds %struct.s2n_connection, ptr %1107, i32 0, i32 27
  %1109 = load ptr, ptr %1108, align 8, !tbaa !56
  %1110 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1109, i32 0, i32 0
  store ptr %1106, ptr %1110, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 304, ptr %39) #11
  call void @llvm.memset.p0.i64(ptr align 8 %39, i8 0, i64 304, i1 false)
  br label %1111

1111:                                             ; preds = %1105
  %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 %37, align 8, !tbaa !9
  %1115 = call i32 @s2n_key_material_init(ptr noundef %39, ptr noundef %1114)
  %1116 = getelementptr inbounds %struct.s2n_result, ptr %40, i32 0, i32 0
  store i32 %1115, ptr %1116, align 4
  %1117 = getelementptr inbounds %struct.s2n_result, ptr %40, i32 0, i32 0
  %1118 = load i32, ptr %1117, align 4
  %1119 = call zeroext i1 @s2n_result_is_ok(i32 %1118)
  br i1 %1119, label %1173, label %1120

1120:                                             ; preds = %1111
  br label %1121

1121:                                             ; preds = %1120
  br label %1122

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

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

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

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

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

1169:                                             ; preds = %1168
  br label %1170

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

1171:                                             ; No predecessors!
  br label %1172

1172:                                             ; preds = %1171
  br label %1173

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

1174:                                             ; preds = %1173
  br label %1175

1175:                                             ; preds = %1174
  br label %1176

1176:                                             ; preds = %1175
  %1177 = load i32, ptr @test_count, align 4, !tbaa !5
  %1178 = add nsw i32 %1177, 1
  store i32 %1178, ptr @test_count, align 4, !tbaa !5
  br label %1179

1179:                                             ; preds = %1176
  br label %1180

1180:                                             ; preds = %1179
  br label %1181

1181:                                             ; preds = %1180
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #11
  store i64 160, ptr %42, align 8, !tbaa !69
  %1182 = load i64, ptr %42, align 8, !tbaa !69
  %1183 = icmp ne i64 %1182, 0
  %1184 = xor i1 %1183, true
  %1185 = xor i1 %1184, true
  %1186 = zext i1 %1185 to i32
  %1187 = sext i32 %1186 to i64
  %1188 = call i64 @llvm.expect.i64(i64 %1187, i64 1)
  %1189 = icmp ne i64 %1188, 0
  br i1 %1189, label %1190, label %1238

1190:                                             ; preds = %1181
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #11
  %1191 = getelementptr inbounds %struct.s2n_key_material, ptr %39, i32 0, i32 0
  %1192 = getelementptr inbounds [160 x i8], ptr %1191, i64 0, i64 0
  %1193 = getelementptr inbounds [160 x i8], ptr %9, i64 0, i64 0
  %1194 = load i64, ptr %42, align 8, !tbaa !69
  %1195 = call ptr @s2n_ensure_memmove_trace(ptr noundef %1192, ptr noundef %1193, i64 noundef %1194)
  store ptr %1195, ptr %43, align 8, !tbaa !9
  br label %1196

1196:                                             ; preds = %1190
  %1197 = load ptr, ptr %43, align 8, !tbaa !9
  %1198 = icmp ne ptr %1197, null
  br i1 %1198, label %1232, label %1199

1199:                                             ; preds = %1196
  br label %1200

1200:                                             ; preds = %1199
  br label %1201

1201:                                             ; preds = %1200
  %1202 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1203 = getelementptr inbounds %struct.s2n_debug_info, ptr %1202, i32 0, i32 0
  store ptr @.str.19, ptr %1203, align 8, !tbaa !70
  %1204 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1205 = getelementptr inbounds %struct.s2n_debug_info, ptr %1204, i32 0, i32 0
  %1206 = load ptr, ptr %1205, align 8, !tbaa !70
  %1207 = getelementptr inbounds i8, ptr %1206, i64 21
  %1208 = call ptr @strrchr(ptr noundef %1207, i32 noundef 47) #14
  %1209 = icmp ne ptr %1208, null
  br i1 %1209, label %1210, label %1217

1210:                                             ; preds = %1201
  %1211 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1212 = getelementptr inbounds %struct.s2n_debug_info, ptr %1211, i32 0, i32 0
  %1213 = load ptr, ptr %1212, align 8, !tbaa !70
  %1214 = getelementptr inbounds i8, ptr %1213, i64 21
  %1215 = call ptr @strrchr(ptr noundef %1214, i32 noundef 47) #14
  %1216 = getelementptr inbounds i8, ptr %1215, i64 1
  br label %1222

1217:                                             ; preds = %1201
  %1218 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1219 = getelementptr inbounds %struct.s2n_debug_info, ptr %1218, i32 0, i32 0
  %1220 = load ptr, ptr %1219, align 8, !tbaa !70
  %1221 = getelementptr inbounds i8, ptr %1220, i64 21
  br label %1222

1222:                                             ; preds = %1217, %1210
  %1223 = phi ptr [ %1216, %1210 ], [ %1221, %1217 ]
  %1224 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1225 = getelementptr inbounds %struct.s2n_debug_info, ptr %1224, i32 0, i32 1
  store ptr %1223, ptr %1225, align 8, !tbaa !72
  %1226 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %1226, align 4, !tbaa !5
  %1227 = call i32 @s2n_calculate_stacktrace()
  br label %1228

1228:                                             ; preds = %1222
  br label %1229

1229:                                             ; preds = %1228
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %1235

1230:                                             ; No predecessors!
  br label %1231

1231:                                             ; preds = %1230
  br label %1232

1232:                                             ; preds = %1231, %1196
  br label %1233

1233:                                             ; preds = %1232
  br label %1234

1234:                                             ; preds = %1233
  store i32 0, ptr %15, align 4
  br label %1235

1235:                                             ; preds = %1234, %1229
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  %1236 = load i32, ptr %15, align 4
  switch i32 %1236, label %1239 [
    i32 0, label %1237
  ]

1237:                                             ; preds = %1235
  br label %1238

1238:                                             ; preds = %1237, %1181
  store i32 0, ptr %15, align 4
  br label %1239

1239:                                             ; preds = %1238, %1235
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  %1240 = load i32, ptr %15, align 4
  switch i32 %1240, label %1320 [
    i32 0, label %1241
  ]

1241:                                             ; preds = %1239
  br label %1242

1242:                                             ; preds = %1241
  br label %1243

1243:                                             ; preds = %1242
  br label %1244

1244:                                             ; preds = %1243
  %1245 = load i32, ptr @test_count, align 4, !tbaa !5
  %1246 = add nsw i32 %1245, 1
  store i32 %1246, ptr @test_count, align 4, !tbaa !5
  %1247 = getelementptr inbounds %struct.s2n_key_material, ptr %39, i32 0, i32 1
  %1248 = getelementptr inbounds %struct.s2n_blob, ptr %1247, i32 0, i32 1
  %1249 = load i32, ptr %1248, align 8, !tbaa !62
  %1250 = trunc i32 %1249 to i8
  %1251 = getelementptr inbounds %struct.s2n_key_material, ptr %39, i32 0, i32 3
  %1252 = getelementptr inbounds %struct.s2n_blob, ptr %1251, i32 0, i32 1
  %1253 = load i32, ptr %1252, align 8, !tbaa !64
  %1254 = trunc i32 %1253 to i8
  %1255 = getelementptr inbounds %struct.s2n_key_material, ptr %39, i32 0, i32 5
  %1256 = getelementptr inbounds %struct.s2n_blob, ptr %1255, i32 0, i32 1
  %1257 = load i32, ptr %1256, align 8, !tbaa !65
  %1258 = trunc i32 %1257 to i8
  %1259 = call i32 @s2n_test_validate_key_material(ptr noundef %39, ptr noundef %10, i8 noundef zeroext %1250, i8 noundef zeroext %1254, i8 noundef zeroext %1258)
  %1260 = getelementptr inbounds %struct.s2n_result, ptr %44, i32 0, i32 0
  store i32 %1259, ptr %1260, align 4
  %1261 = getelementptr inbounds %struct.s2n_result, ptr %44, i32 0, i32 0
  %1262 = load i32, ptr %1261, align 4
  %1263 = call zeroext i1 @s2n_result_is_ok(i32 %1262)
  br i1 %1263, label %1317, label %1264

1264:                                             ; preds = %1244
  br label %1265

1265:                                             ; preds = %1264
  br label %1266

1266:                                             ; preds = %1265
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #11
  %1267 = call ptr @__errno_location() #12
  %1268 = load i32, ptr %1267, align 4, !tbaa !5
  store i32 %1268, ptr %45, align 4, !tbaa !5
  %1269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1270 = call i32 @s2n_print_stacktrace(ptr noundef %1269)
  %1271 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1272 = trunc i8 %1271 to i1
  br i1 %1272, label %1273, label %1295

1273:                                             ; preds = %1266
  %1274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1275 = call i32 @fileno(ptr noundef %1274) #11
  %1276 = call i32 @isatty(i32 noundef %1275) #11
  %1277 = icmp ne i32 %1276, 0
  br i1 %1277, label %1278, label %1295

1278:                                             ; preds = %1273
  %1279 = load i32, ptr %45, align 4, !tbaa !5
  %1280 = call ptr @__errno_location() #12
  store i32 %1279, ptr %1280, align 4, !tbaa !5
  %1281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1282 = load i32, ptr @test_count, align 4, !tbaa !5
  %1283 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1284 = load i32, ptr %1283, align 4, !tbaa !5
  %1285 = call ptr @s2n_strerror(i32 noundef %1284, ptr noundef @.str.4)
  %1286 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1287 = load i32, ptr %1286, align 4, !tbaa !5
  %1288 = call ptr @s2n_strerror_debug(i32 noundef %1287, ptr noundef @.str.4)
  %1289 = call ptr @__errno_location() #12
  %1290 = load i32, ptr %1289, align 4, !tbaa !5
  %1291 = call ptr @strerror(i32 noundef %1290) #11
  %1292 = call ptr @__errno_location() #12
  %1293 = load i32, ptr %1292, align 4, !tbaa !5
  %1294 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1281, ptr noundef @.str.2, i32 noundef %1282, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 150, ptr noundef %1285, ptr noundef %1288, ptr noundef %1291, i32 noundef %1293) #11
  br label %1312

1295:                                             ; preds = %1273, %1266
  %1296 = load i32, ptr %45, align 4, !tbaa !5
  %1297 = call ptr @__errno_location() #12
  store i32 %1296, ptr %1297, align 4, !tbaa !5
  %1298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1299 = load i32, ptr @test_count, align 4, !tbaa !5
  %1300 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1301 = load i32, ptr %1300, align 4, !tbaa !5
  %1302 = call ptr @s2n_strerror(i32 noundef %1301, ptr noundef @.str.4)
  %1303 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1304 = load i32, ptr %1303, align 4, !tbaa !5
  %1305 = call ptr @s2n_strerror_debug(i32 noundef %1304, ptr noundef @.str.4)
  %1306 = call ptr @__errno_location() #12
  %1307 = load i32, ptr %1306, align 4, !tbaa !5
  %1308 = call ptr @strerror(i32 noundef %1307) #11
  %1309 = call ptr @__errno_location() #12
  %1310 = load i32, ptr %1309, align 4, !tbaa !5
  %1311 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1298, ptr noundef @.str.5, i32 noundef %1299, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 150, ptr noundef %1302, ptr noundef %1305, ptr noundef %1308, i32 noundef %1310) #11
  br label %1312

1312:                                             ; preds = %1295, %1278
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  br label %1313

1313:                                             ; preds = %1312
  br label %1314

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

1315:                                             ; No predecessors!
  br label %1316

1316:                                             ; preds = %1315
  br label %1317

1317:                                             ; preds = %1316, %1244
  br label %1318

1318:                                             ; preds = %1317
  br label %1319

1319:                                             ; preds = %1318
  store i32 0, ptr %15, align 4
  br label %1320

1320:                                             ; preds = %1319, %1239
  call void @llvm.lifetime.end.p0(i64 304, ptr %39) #11
  br label %1321

1321:                                             ; preds = %1320, %1104
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  %1322 = call i32 @s2n_connection_ptr_free(ptr noundef %37)
  %1323 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  store i32 %1322, ptr %1323, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  %1324 = load i32, ptr %15, align 4
  switch i32 %1324, label %1329 [
    i32 0, label %1325
    i32 105, label %1326
  ]

1325:                                             ; preds = %1321
  br label %1326

1326:                                             ; preds = %1325, %1321
  %1327 = load i64, ptr %36, align 8, !tbaa !69
  %1328 = add i64 %1327, 1
  store i64 %1328, ptr %36, align 8, !tbaa !69
  br label %1087, !llvm.loop !80

1329:                                             ; preds = %1321, %1092
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  %1330 = load i32, ptr %15, align 4
  switch i32 %1330, label %3452 [
    i32 103, label %1331
  ]

1331:                                             ; preds = %1329
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #11
  %1332 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %1332, ptr %47, align 8, !tbaa !9
  %1333 = load ptr, ptr %47, align 8, !tbaa !9
  %1334 = getelementptr inbounds %struct.s2n_connection, ptr %1333, i32 0, i32 27
  %1335 = load ptr, ptr %1334, align 8, !tbaa !56
  %1336 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1335, i32 0, i32 0
  store ptr @s2n_tls13_aes_128_gcm_sha256, ptr %1336, align 8, !tbaa !57
  br label %1337

1337:                                             ; preds = %1331
  %1338 = load i32, ptr @test_count, align 4, !tbaa !5
  %1339 = add nsw i32 %1338, 1
  store i32 %1339, ptr @test_count, align 4, !tbaa !5
  %1340 = load ptr, ptr %47, align 8, !tbaa !9
  %1341 = getelementptr inbounds %struct.s2n_connection, ptr %1340, i32 0, i32 27
  %1342 = load ptr, ptr %1341, align 8, !tbaa !56
  %1343 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1342, i32 0, i32 0
  %1344 = load ptr, ptr %1343, align 8, !tbaa !57
  %1345 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %1344, i32 0, i32 6
  %1346 = load ptr, ptr %1345, align 8, !tbaa !54
  %1347 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %1346, i32 0, i32 0
  %1348 = load ptr, ptr %1347, align 8, !tbaa !49
  %1349 = getelementptr inbounds %struct.s2n_cipher, ptr %1348, i32 0, i32 0
  %1350 = load i32, ptr %1349, align 8, !tbaa !43
  %1351 = icmp eq i32 %1350, 2
  br i1 %1351, label %1405, label %1352

1352:                                             ; preds = %1337
  br label %1353

1353:                                             ; preds = %1352
  br label %1354

1354:                                             ; preds = %1353
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #11
  %1355 = call ptr @__errno_location() #12
  %1356 = load i32, ptr %1355, align 4, !tbaa !5
  store i32 %1356, ptr %48, 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) #11
  %1364 = call i32 @isatty(i32 noundef %1363) #11
  %1365 = icmp ne i32 %1364, 0
  br i1 %1365, label %1366, label %1383

1366:                                             ; preds = %1361
  %1367 = load i32, ptr %48, align 4, !tbaa !5
  %1368 = call ptr @__errno_location() #12
  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() #12
  %1378 = load i32, ptr %1377, align 4, !tbaa !5
  %1379 = call ptr @strerror(i32 noundef %1378) #11
  %1380 = call ptr @__errno_location() #12
  %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.21, ptr noundef @.str.1, i32 noundef 161, ptr noundef %1373, ptr noundef %1376, ptr noundef %1379, i32 noundef %1381) #11
  br label %1400

1383:                                             ; preds = %1361, %1354
  %1384 = load i32, ptr %48, align 4, !tbaa !5
  %1385 = call ptr @__errno_location() #12
  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() #12
  %1395 = load i32, ptr %1394, align 4, !tbaa !5
  %1396 = call ptr @strerror(i32 noundef %1395) #11
  %1397 = call ptr @__errno_location() #12
  %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.21, ptr noundef @.str.1, i32 noundef 161, ptr noundef %1390, ptr noundef %1393, ptr noundef %1396, i32 noundef %1398) #11
  br label %1400

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

1401:                                             ; preds = %1400
  br label %1402

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

1403:                                             ; No predecessors!
  br label %1404

1404:                                             ; preds = %1403
  br label %1405

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

1406:                                             ; preds = %1405
  br label %1407

1407:                                             ; preds = %1406
  call void @llvm.lifetime.start.p0(i64 304, ptr %49) #11
  call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 304, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  store i32 0, ptr %50, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #11
  store i32 16, ptr %51, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #11
  store i32 12, ptr %52, align 4, !tbaa !5
  %1408 = load ptr, ptr %47, align 8, !tbaa !9
  %1409 = getelementptr inbounds %struct.s2n_connection, ptr %1408, i32 0, i32 23
  store i8 31, ptr %1409, align 4, !tbaa !16
  br label %1410

1410:                                             ; preds = %1407
  %1411 = load i32, ptr @test_count, align 4, !tbaa !5
  %1412 = add nsw i32 %1411, 1
  store i32 %1412, ptr @test_count, align 4, !tbaa !5
  %1413 = load ptr, ptr %47, align 8, !tbaa !9
  %1414 = call i32 @s2n_key_material_init(ptr noundef %49, ptr noundef %1413)
  %1415 = getelementptr inbounds %struct.s2n_result, ptr %53, i32 0, i32 0
  store i32 %1414, ptr %1415, align 4
  %1416 = getelementptr inbounds %struct.s2n_result, ptr %53, i32 0, i32 0
  %1417 = load i32, ptr %1416, align 4
  %1418 = call zeroext i1 @s2n_result_is_ok(i32 %1417)
  br i1 %1418, label %1472, label %1419

1419:                                             ; preds = %1410
  br label %1420

1420:                                             ; preds = %1419
  br label %1421

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

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

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

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

1467:                                             ; preds = %1450, %1433
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #11
  br label %1468

1468:                                             ; preds = %1467
  br label %1469

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

1470:                                             ; No predecessors!
  br label %1471

1471:                                             ; preds = %1470
  br label %1472

1472:                                             ; preds = %1471, %1410
  br label %1473

1473:                                             ; preds = %1472
  br label %1474

1474:                                             ; preds = %1473
  br label %1475

1475:                                             ; preds = %1474
  %1476 = load i32, ptr @test_count, align 4, !tbaa !5
  %1477 = add nsw i32 %1476, 1
  store i32 %1477, ptr @test_count, align 4, !tbaa !5
  %1478 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 1
  %1479 = getelementptr inbounds %struct.s2n_blob, ptr %1478, i32 0, i32 1
  %1480 = load i32, ptr %1479, align 8, !tbaa !62
  %1481 = load i32, ptr %50, align 4, !tbaa !5
  %1482 = icmp eq i32 %1480, %1481
  br i1 %1482, label %1536, label %1483

1483:                                             ; preds = %1475
  br label %1484

1484:                                             ; preds = %1483
  br label %1485

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

1492:                                             ; preds = %1485
  %1493 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1494 = call i32 @fileno(ptr noundef %1493) #11
  %1495 = call i32 @isatty(i32 noundef %1494) #11
  %1496 = icmp ne i32 %1495, 0
  br i1 %1496, label %1497, label %1514

1497:                                             ; preds = %1492
  %1498 = load i32, ptr %55, align 4, !tbaa !5
  %1499 = call ptr @__errno_location() #12
  store i32 %1498, ptr %1499, 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 @.str.4)
  %1505 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1506 = load i32, ptr %1505, align 4, !tbaa !5
  %1507 = call ptr @s2n_strerror_debug(i32 noundef %1506, ptr noundef @.str.4)
  %1508 = call ptr @__errno_location() #12
  %1509 = load i32, ptr %1508, align 4, !tbaa !5
  %1510 = call ptr @strerror(i32 noundef %1509) #11
  %1511 = call ptr @__errno_location() #12
  %1512 = load i32, ptr %1511, align 4, !tbaa !5
  %1513 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1500, ptr noundef @.str.2, i32 noundef %1501, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 173, ptr noundef %1504, ptr noundef %1507, ptr noundef %1510, i32 noundef %1512) #11
  br label %1531

1514:                                             ; preds = %1492, %1485
  %1515 = load i32, ptr %55, align 4, !tbaa !5
  %1516 = call ptr @__errno_location() #12
  store i32 %1515, ptr %1516, align 4, !tbaa !5
  %1517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1518 = load i32, ptr @test_count, align 4, !tbaa !5
  %1519 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1520 = load i32, ptr %1519, align 4, !tbaa !5
  %1521 = call ptr @s2n_strerror(i32 noundef %1520, ptr noundef @.str.4)
  %1522 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1523 = load i32, ptr %1522, align 4, !tbaa !5
  %1524 = call ptr @s2n_strerror_debug(i32 noundef %1523, ptr noundef @.str.4)
  %1525 = call ptr @__errno_location() #12
  %1526 = load i32, ptr %1525, align 4, !tbaa !5
  %1527 = call ptr @strerror(i32 noundef %1526) #11
  %1528 = call ptr @__errno_location() #12
  %1529 = load i32, ptr %1528, align 4, !tbaa !5
  %1530 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1517, ptr noundef @.str.5, i32 noundef %1518, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 173, ptr noundef %1521, ptr noundef %1524, ptr noundef %1527, i32 noundef %1529) #11
  br label %1531

1531:                                             ; preds = %1514, %1497
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #11
  br label %1532

1532:                                             ; preds = %1531
  br label %1533

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

1534:                                             ; No predecessors!
  br label %1535

1535:                                             ; preds = %1534
  br label %1536

1536:                                             ; preds = %1535, %1475
  br label %1537

1537:                                             ; preds = %1536
  br label %1538

1538:                                             ; preds = %1537
  br label %1539

1539:                                             ; preds = %1538
  %1540 = load i32, ptr @test_count, align 4, !tbaa !5
  %1541 = add nsw i32 %1540, 1
  store i32 %1541, ptr @test_count, align 4, !tbaa !5
  %1542 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 3
  %1543 = getelementptr inbounds %struct.s2n_blob, ptr %1542, i32 0, i32 1
  %1544 = load i32, ptr %1543, align 8, !tbaa !64
  %1545 = load i32, ptr %51, align 4, !tbaa !5
  %1546 = icmp eq i32 %1544, %1545
  br i1 %1546, label %1600, label %1547

1547:                                             ; preds = %1539
  br label %1548

1548:                                             ; preds = %1547
  br label %1549

1549:                                             ; preds = %1548
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #11
  %1550 = call ptr @__errno_location() #12
  %1551 = load i32, ptr %1550, align 4, !tbaa !5
  store i32 %1551, ptr %56, align 4, !tbaa !5
  %1552 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1553 = call i32 @s2n_print_stacktrace(ptr noundef %1552)
  %1554 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1555 = trunc i8 %1554 to i1
  br i1 %1555, label %1556, label %1578

1556:                                             ; preds = %1549
  %1557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1558 = call i32 @fileno(ptr noundef %1557) #11
  %1559 = call i32 @isatty(i32 noundef %1558) #11
  %1560 = icmp ne i32 %1559, 0
  br i1 %1560, label %1561, label %1578

1561:                                             ; preds = %1556
  %1562 = load i32, ptr %56, align 4, !tbaa !5
  %1563 = call ptr @__errno_location() #12
  store i32 %1562, ptr %1563, align 4, !tbaa !5
  %1564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1565 = load i32, ptr @test_count, align 4, !tbaa !5
  %1566 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1567 = load i32, ptr %1566, align 4, !tbaa !5
  %1568 = call ptr @s2n_strerror(i32 noundef %1567, ptr noundef @.str.4)
  %1569 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1570 = load i32, ptr %1569, align 4, !tbaa !5
  %1571 = call ptr @s2n_strerror_debug(i32 noundef %1570, ptr noundef @.str.4)
  %1572 = call ptr @__errno_location() #12
  %1573 = load i32, ptr %1572, align 4, !tbaa !5
  %1574 = call ptr @strerror(i32 noundef %1573) #11
  %1575 = call ptr @__errno_location() #12
  %1576 = load i32, ptr %1575, align 4, !tbaa !5
  %1577 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1564, ptr noundef @.str.2, i32 noundef %1565, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 174, ptr noundef %1568, ptr noundef %1571, ptr noundef %1574, i32 noundef %1576) #11
  br label %1595

1578:                                             ; preds = %1556, %1549
  %1579 = load i32, ptr %56, align 4, !tbaa !5
  %1580 = call ptr @__errno_location() #12
  store i32 %1579, ptr %1580, align 4, !tbaa !5
  %1581 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1582 = load i32, ptr @test_count, align 4, !tbaa !5
  %1583 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1584 = load i32, ptr %1583, align 4, !tbaa !5
  %1585 = call ptr @s2n_strerror(i32 noundef %1584, ptr noundef @.str.4)
  %1586 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1587 = load i32, ptr %1586, align 4, !tbaa !5
  %1588 = call ptr @s2n_strerror_debug(i32 noundef %1587, ptr noundef @.str.4)
  %1589 = call ptr @__errno_location() #12
  %1590 = load i32, ptr %1589, align 4, !tbaa !5
  %1591 = call ptr @strerror(i32 noundef %1590) #11
  %1592 = call ptr @__errno_location() #12
  %1593 = load i32, ptr %1592, align 4, !tbaa !5
  %1594 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1581, ptr noundef @.str.5, i32 noundef %1582, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 174, ptr noundef %1585, ptr noundef %1588, ptr noundef %1591, i32 noundef %1593) #11
  br label %1595

1595:                                             ; preds = %1578, %1561
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #11
  br label %1596

1596:                                             ; preds = %1595
  br label %1597

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

1598:                                             ; No predecessors!
  br label %1599

1599:                                             ; preds = %1598
  br label %1600

1600:                                             ; preds = %1599, %1539
  br label %1601

1601:                                             ; preds = %1600
  br label %1602

1602:                                             ; preds = %1601
  br label %1603

1603:                                             ; preds = %1602
  %1604 = load i32, ptr @test_count, align 4, !tbaa !5
  %1605 = add nsw i32 %1604, 1
  store i32 %1605, ptr @test_count, align 4, !tbaa !5
  %1606 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 5
  %1607 = getelementptr inbounds %struct.s2n_blob, ptr %1606, i32 0, i32 1
  %1608 = load i32, ptr %1607, align 8, !tbaa !65
  %1609 = load i32, ptr %52, align 4, !tbaa !5
  %1610 = icmp eq i32 %1608, %1609
  br i1 %1610, label %1664, label %1611

1611:                                             ; preds = %1603
  br label %1612

1612:                                             ; preds = %1611
  br label %1613

1613:                                             ; preds = %1612
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  %1614 = call ptr @__errno_location() #12
  %1615 = load i32, ptr %1614, align 4, !tbaa !5
  store i32 %1615, ptr %57, align 4, !tbaa !5
  %1616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1617 = call i32 @s2n_print_stacktrace(ptr noundef %1616)
  %1618 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1619 = trunc i8 %1618 to i1
  br i1 %1619, label %1620, label %1642

1620:                                             ; preds = %1613
  %1621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1622 = call i32 @fileno(ptr noundef %1621) #11
  %1623 = call i32 @isatty(i32 noundef %1622) #11
  %1624 = icmp ne i32 %1623, 0
  br i1 %1624, label %1625, label %1642

1625:                                             ; preds = %1620
  %1626 = load i32, ptr %57, align 4, !tbaa !5
  %1627 = call ptr @__errno_location() #12
  store i32 %1626, ptr %1627, align 4, !tbaa !5
  %1628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1629 = load i32, ptr @test_count, align 4, !tbaa !5
  %1630 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1631 = load i32, ptr %1630, align 4, !tbaa !5
  %1632 = call ptr @s2n_strerror(i32 noundef %1631, ptr noundef @.str.4)
  %1633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1634 = load i32, ptr %1633, align 4, !tbaa !5
  %1635 = call ptr @s2n_strerror_debug(i32 noundef %1634, ptr noundef @.str.4)
  %1636 = call ptr @__errno_location() #12
  %1637 = load i32, ptr %1636, align 4, !tbaa !5
  %1638 = call ptr @strerror(i32 noundef %1637) #11
  %1639 = call ptr @__errno_location() #12
  %1640 = load i32, ptr %1639, align 4, !tbaa !5
  %1641 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1628, ptr noundef @.str.2, i32 noundef %1629, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 175, ptr noundef %1632, ptr noundef %1635, ptr noundef %1638, i32 noundef %1640) #11
  br label %1659

1642:                                             ; preds = %1620, %1613
  %1643 = load i32, ptr %57, align 4, !tbaa !5
  %1644 = call ptr @__errno_location() #12
  store i32 %1643, ptr %1644, align 4, !tbaa !5
  %1645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1646 = load i32, ptr @test_count, align 4, !tbaa !5
  %1647 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1648 = load i32, ptr %1647, align 4, !tbaa !5
  %1649 = call ptr @s2n_strerror(i32 noundef %1648, ptr noundef @.str.4)
  %1650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1651 = load i32, ptr %1650, align 4, !tbaa !5
  %1652 = call ptr @s2n_strerror_debug(i32 noundef %1651, ptr noundef @.str.4)
  %1653 = call ptr @__errno_location() #12
  %1654 = load i32, ptr %1653, align 4, !tbaa !5
  %1655 = call ptr @strerror(i32 noundef %1654) #11
  %1656 = call ptr @__errno_location() #12
  %1657 = load i32, ptr %1656, align 4, !tbaa !5
  %1658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1645, ptr noundef @.str.5, i32 noundef %1646, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 175, ptr noundef %1649, ptr noundef %1652, ptr noundef %1655, i32 noundef %1657) #11
  br label %1659

1659:                                             ; preds = %1642, %1625
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %1660

1660:                                             ; preds = %1659
  br label %1661

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

1662:                                             ; No predecessors!
  br label %1663

1663:                                             ; preds = %1662
  br label %1664

1664:                                             ; preds = %1663, %1603
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

1666:                                             ; preds = %1665
  br label %1667

1667:                                             ; preds = %1666
  %1668 = load i32, ptr @test_count, align 4, !tbaa !5
  %1669 = add nsw i32 %1668, 1
  store i32 %1669, ptr @test_count, align 4, !tbaa !5
  %1670 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 2
  %1671 = getelementptr inbounds %struct.s2n_blob, ptr %1670, i32 0, i32 1
  %1672 = load i32, ptr %1671, align 8, !tbaa !66
  %1673 = load i32, ptr %50, align 4, !tbaa !5
  %1674 = icmp eq i32 %1672, %1673
  br i1 %1674, label %1728, label %1675

1675:                                             ; preds = %1667
  br label %1676

1676:                                             ; preds = %1675
  br label %1677

1677:                                             ; preds = %1676
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #11
  %1678 = call ptr @__errno_location() #12
  %1679 = load i32, ptr %1678, align 4, !tbaa !5
  store i32 %1679, ptr %58, align 4, !tbaa !5
  %1680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1681 = call i32 @s2n_print_stacktrace(ptr noundef %1680)
  %1682 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1683 = trunc i8 %1682 to i1
  br i1 %1683, label %1684, label %1706

1684:                                             ; preds = %1677
  %1685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1686 = call i32 @fileno(ptr noundef %1685) #11
  %1687 = call i32 @isatty(i32 noundef %1686) #11
  %1688 = icmp ne i32 %1687, 0
  br i1 %1688, label %1689, label %1706

1689:                                             ; preds = %1684
  %1690 = load i32, ptr %58, align 4, !tbaa !5
  %1691 = call ptr @__errno_location() #12
  store i32 %1690, ptr %1691, align 4, !tbaa !5
  %1692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1693 = load i32, ptr @test_count, align 4, !tbaa !5
  %1694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1695 = load i32, ptr %1694, align 4, !tbaa !5
  %1696 = call ptr @s2n_strerror(i32 noundef %1695, ptr noundef @.str.4)
  %1697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1698 = load i32, ptr %1697, align 4, !tbaa !5
  %1699 = call ptr @s2n_strerror_debug(i32 noundef %1698, ptr noundef @.str.4)
  %1700 = call ptr @__errno_location() #12
  %1701 = load i32, ptr %1700, align 4, !tbaa !5
  %1702 = call ptr @strerror(i32 noundef %1701) #11
  %1703 = call ptr @__errno_location() #12
  %1704 = load i32, ptr %1703, align 4, !tbaa !5
  %1705 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1692, ptr noundef @.str.2, i32 noundef %1693, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 176, ptr noundef %1696, ptr noundef %1699, ptr noundef %1702, i32 noundef %1704) #11
  br label %1723

1706:                                             ; preds = %1684, %1677
  %1707 = load i32, ptr %58, align 4, !tbaa !5
  %1708 = call ptr @__errno_location() #12
  store i32 %1707, ptr %1708, align 4, !tbaa !5
  %1709 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1710 = load i32, ptr @test_count, align 4, !tbaa !5
  %1711 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1712 = load i32, ptr %1711, align 4, !tbaa !5
  %1713 = call ptr @s2n_strerror(i32 noundef %1712, ptr noundef @.str.4)
  %1714 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1715 = load i32, ptr %1714, align 4, !tbaa !5
  %1716 = call ptr @s2n_strerror_debug(i32 noundef %1715, ptr noundef @.str.4)
  %1717 = call ptr @__errno_location() #12
  %1718 = load i32, ptr %1717, align 4, !tbaa !5
  %1719 = call ptr @strerror(i32 noundef %1718) #11
  %1720 = call ptr @__errno_location() #12
  %1721 = load i32, ptr %1720, align 4, !tbaa !5
  %1722 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1709, ptr noundef @.str.5, i32 noundef %1710, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 176, ptr noundef %1713, ptr noundef %1716, ptr noundef %1719, i32 noundef %1721) #11
  br label %1723

1723:                                             ; preds = %1706, %1689
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #11
  br label %1724

1724:                                             ; preds = %1723
  br label %1725

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

1726:                                             ; No predecessors!
  br label %1727

1727:                                             ; preds = %1726
  br label %1728

1728:                                             ; preds = %1727, %1667
  br label %1729

1729:                                             ; preds = %1728
  br label %1730

1730:                                             ; preds = %1729
  br label %1731

1731:                                             ; preds = %1730
  %1732 = load i32, ptr @test_count, align 4, !tbaa !5
  %1733 = add nsw i32 %1732, 1
  store i32 %1733, ptr @test_count, align 4, !tbaa !5
  %1734 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 4
  %1735 = getelementptr inbounds %struct.s2n_blob, ptr %1734, i32 0, i32 1
  %1736 = load i32, ptr %1735, align 8, !tbaa !67
  %1737 = load i32, ptr %51, align 4, !tbaa !5
  %1738 = icmp eq i32 %1736, %1737
  br i1 %1738, label %1792, label %1739

1739:                                             ; preds = %1731
  br label %1740

1740:                                             ; preds = %1739
  br label %1741

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

1748:                                             ; preds = %1741
  %1749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1750 = call i32 @fileno(ptr noundef %1749) #11
  %1751 = call i32 @isatty(i32 noundef %1750) #11
  %1752 = icmp ne i32 %1751, 0
  br i1 %1752, label %1753, label %1770

1753:                                             ; preds = %1748
  %1754 = load i32, ptr %59, align 4, !tbaa !5
  %1755 = call ptr @__errno_location() #12
  store i32 %1754, ptr %1755, align 4, !tbaa !5
  %1756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1757 = load i32, ptr @test_count, align 4, !tbaa !5
  %1758 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1759 = load i32, ptr %1758, align 4, !tbaa !5
  %1760 = call ptr @s2n_strerror(i32 noundef %1759, ptr noundef @.str.4)
  %1761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1762 = load i32, ptr %1761, align 4, !tbaa !5
  %1763 = call ptr @s2n_strerror_debug(i32 noundef %1762, ptr noundef @.str.4)
  %1764 = call ptr @__errno_location() #12
  %1765 = load i32, ptr %1764, align 4, !tbaa !5
  %1766 = call ptr @strerror(i32 noundef %1765) #11
  %1767 = call ptr @__errno_location() #12
  %1768 = load i32, ptr %1767, align 4, !tbaa !5
  %1769 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1756, ptr noundef @.str.2, i32 noundef %1757, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 177, ptr noundef %1760, ptr noundef %1763, ptr noundef %1766, i32 noundef %1768) #11
  br label %1787

1770:                                             ; preds = %1748, %1741
  %1771 = load i32, ptr %59, align 4, !tbaa !5
  %1772 = call ptr @__errno_location() #12
  store i32 %1771, ptr %1772, align 4, !tbaa !5
  %1773 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1774 = load i32, ptr @test_count, align 4, !tbaa !5
  %1775 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1776 = load i32, ptr %1775, align 4, !tbaa !5
  %1777 = call ptr @s2n_strerror(i32 noundef %1776, ptr noundef @.str.4)
  %1778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1779 = load i32, ptr %1778, align 4, !tbaa !5
  %1780 = call ptr @s2n_strerror_debug(i32 noundef %1779, ptr noundef @.str.4)
  %1781 = call ptr @__errno_location() #12
  %1782 = load i32, ptr %1781, align 4, !tbaa !5
  %1783 = call ptr @strerror(i32 noundef %1782) #11
  %1784 = call ptr @__errno_location() #12
  %1785 = load i32, ptr %1784, align 4, !tbaa !5
  %1786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1773, ptr noundef @.str.5, i32 noundef %1774, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 177, ptr noundef %1777, ptr noundef %1780, ptr noundef %1783, i32 noundef %1785) #11
  br label %1787

1787:                                             ; preds = %1770, %1753
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #11
  br label %1788

1788:                                             ; preds = %1787
  br label %1789

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

1790:                                             ; No predecessors!
  br label %1791

1791:                                             ; preds = %1790
  br label %1792

1792:                                             ; preds = %1791, %1731
  br label %1793

1793:                                             ; preds = %1792
  br label %1794

1794:                                             ; preds = %1793
  br label %1795

1795:                                             ; preds = %1794
  %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 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 6
  %1799 = getelementptr inbounds %struct.s2n_blob, ptr %1798, i32 0, i32 1
  %1800 = load i32, ptr %1799, align 8, !tbaa !68
  %1801 = load i32, ptr %52, align 4, !tbaa !5
  %1802 = icmp eq i32 %1800, %1801
  br i1 %1802, label %1856, label %1803

1803:                                             ; preds = %1795
  br label %1804

1804:                                             ; preds = %1803
  br label %1805

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

1812:                                             ; preds = %1805
  %1813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1814 = call i32 @fileno(ptr noundef %1813) #11
  %1815 = call i32 @isatty(i32 noundef %1814) #11
  %1816 = icmp ne i32 %1815, 0
  br i1 %1816, label %1817, label %1834

1817:                                             ; preds = %1812
  %1818 = load i32, ptr %60, align 4, !tbaa !5
  %1819 = call ptr @__errno_location() #12
  store i32 %1818, ptr %1819, align 4, !tbaa !5
  %1820 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1821 = load i32, ptr @test_count, align 4, !tbaa !5
  %1822 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1823 = load i32, ptr %1822, align 4, !tbaa !5
  %1824 = call ptr @s2n_strerror(i32 noundef %1823, ptr noundef @.str.4)
  %1825 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1826 = load i32, ptr %1825, align 4, !tbaa !5
  %1827 = call ptr @s2n_strerror_debug(i32 noundef %1826, ptr noundef @.str.4)
  %1828 = call ptr @__errno_location() #12
  %1829 = load i32, ptr %1828, align 4, !tbaa !5
  %1830 = call ptr @strerror(i32 noundef %1829) #11
  %1831 = call ptr @__errno_location() #12
  %1832 = load i32, ptr %1831, align 4, !tbaa !5
  %1833 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1820, ptr noundef @.str.2, i32 noundef %1821, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 178, ptr noundef %1824, ptr noundef %1827, ptr noundef %1830, i32 noundef %1832) #11
  br label %1851

1834:                                             ; preds = %1812, %1805
  %1835 = load i32, ptr %60, align 4, !tbaa !5
  %1836 = call ptr @__errno_location() #12
  store i32 %1835, ptr %1836, align 4, !tbaa !5
  %1837 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1838 = load i32, ptr @test_count, align 4, !tbaa !5
  %1839 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1840 = load i32, ptr %1839, align 4, !tbaa !5
  %1841 = call ptr @s2n_strerror(i32 noundef %1840, ptr noundef @.str.4)
  %1842 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1843 = load i32, ptr %1842, align 4, !tbaa !5
  %1844 = call ptr @s2n_strerror_debug(i32 noundef %1843, ptr noundef @.str.4)
  %1845 = call ptr @__errno_location() #12
  %1846 = load i32, ptr %1845, align 4, !tbaa !5
  %1847 = call ptr @strerror(i32 noundef %1846) #11
  %1848 = call ptr @__errno_location() #12
  %1849 = load i32, ptr %1848, align 4, !tbaa !5
  %1850 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1837, ptr noundef @.str.5, i32 noundef %1838, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 178, ptr noundef %1841, ptr noundef %1844, ptr noundef %1847, i32 noundef %1849) #11
  br label %1851

1851:                                             ; preds = %1834, %1817
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #11
  br label %1852

1852:                                             ; preds = %1851
  br label %1853

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

1854:                                             ; No predecessors!
  br label %1855

1855:                                             ; preds = %1854
  br label %1856

1856:                                             ; preds = %1855, %1795
  br label %1857

1857:                                             ; preds = %1856
  br label %1858

1858:                                             ; preds = %1857
  %1859 = load ptr, ptr %47, align 8, !tbaa !9
  %1860 = getelementptr inbounds %struct.s2n_connection, ptr %1859, i32 0, i32 23
  store i8 32, ptr %1860, align 4, !tbaa !16
  br label %1861

1861:                                             ; preds = %1858
  %1862 = load i32, ptr @test_count, align 4, !tbaa !5
  %1863 = add nsw i32 %1862, 1
  store i32 %1863, ptr @test_count, align 4, !tbaa !5
  %1864 = load ptr, ptr %47, align 8, !tbaa !9
  %1865 = call i32 @s2n_key_material_init(ptr noundef %49, ptr noundef %1864)
  %1866 = getelementptr inbounds %struct.s2n_result, ptr %61, i32 0, i32 0
  store i32 %1865, ptr %1866, align 4
  %1867 = getelementptr inbounds %struct.s2n_result, ptr %61, i32 0, i32 0
  %1868 = load i32, ptr %1867, align 4
  %1869 = call zeroext i1 @s2n_result_is_ok(i32 %1868)
  br i1 %1869, label %1923, label %1870

1870:                                             ; preds = %1861
  br label %1871

1871:                                             ; preds = %1870
  br label %1872

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

1879:                                             ; preds = %1872
  %1880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1881 = call i32 @fileno(ptr noundef %1880) #11
  %1882 = call i32 @isatty(i32 noundef %1881) #11
  %1883 = icmp ne i32 %1882, 0
  br i1 %1883, label %1884, label %1901

1884:                                             ; preds = %1879
  %1885 = load i32, ptr %62, align 4, !tbaa !5
  %1886 = call ptr @__errno_location() #12
  store i32 %1885, ptr %1886, align 4, !tbaa !5
  %1887 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1888 = load i32, ptr @test_count, align 4, !tbaa !5
  %1889 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1890 = load i32, ptr %1889, align 4, !tbaa !5
  %1891 = call ptr @s2n_strerror(i32 noundef %1890, ptr noundef @.str.4)
  %1892 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1893 = load i32, ptr %1892, align 4, !tbaa !5
  %1894 = call ptr @s2n_strerror_debug(i32 noundef %1893, ptr noundef @.str.4)
  %1895 = call ptr @__errno_location() #12
  %1896 = load i32, ptr %1895, align 4, !tbaa !5
  %1897 = call ptr @strerror(i32 noundef %1896) #11
  %1898 = call ptr @__errno_location() #12
  %1899 = load i32, ptr %1898, align 4, !tbaa !5
  %1900 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1887, ptr noundef @.str.2, i32 noundef %1888, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 182, ptr noundef %1891, ptr noundef %1894, ptr noundef %1897, i32 noundef %1899) #11
  br label %1918

1901:                                             ; preds = %1879, %1872
  %1902 = load i32, ptr %62, align 4, !tbaa !5
  %1903 = call ptr @__errno_location() #12
  store i32 %1902, ptr %1903, 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 @.str.4)
  %1909 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1910 = load i32, ptr %1909, align 4, !tbaa !5
  %1911 = call ptr @s2n_strerror_debug(i32 noundef %1910, ptr noundef @.str.4)
  %1912 = call ptr @__errno_location() #12
  %1913 = load i32, ptr %1912, align 4, !tbaa !5
  %1914 = call ptr @strerror(i32 noundef %1913) #11
  %1915 = call ptr @__errno_location() #12
  %1916 = load i32, ptr %1915, align 4, !tbaa !5
  %1917 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1904, ptr noundef @.str.5, i32 noundef %1905, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 182, ptr noundef %1908, ptr noundef %1911, ptr noundef %1914, i32 noundef %1916) #11
  br label %1918

1918:                                             ; preds = %1901, %1884
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #11
  br label %1919

1919:                                             ; preds = %1918
  br label %1920

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

1921:                                             ; No predecessors!
  br label %1922

1922:                                             ; preds = %1921
  br label %1923

1923:                                             ; preds = %1922, %1861
  br label %1924

1924:                                             ; preds = %1923
  br label %1925

1925:                                             ; preds = %1924
  br label %1926

1926:                                             ; preds = %1925
  %1927 = load i32, ptr @test_count, align 4, !tbaa !5
  %1928 = add nsw i32 %1927, 1
  store i32 %1928, ptr @test_count, align 4, !tbaa !5
  %1929 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 1
  %1930 = getelementptr inbounds %struct.s2n_blob, ptr %1929, i32 0, i32 1
  %1931 = load i32, ptr %1930, align 8, !tbaa !62
  %1932 = load i32, ptr %50, align 4, !tbaa !5
  %1933 = icmp eq i32 %1931, %1932
  br i1 %1933, label %1987, label %1934

1934:                                             ; preds = %1926
  br label %1935

1935:                                             ; preds = %1934
  br label %1936

1936:                                             ; preds = %1935
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #11
  %1937 = call ptr @__errno_location() #12
  %1938 = load i32, ptr %1937, align 4, !tbaa !5
  store i32 %1938, ptr %63, align 4, !tbaa !5
  %1939 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1940 = call i32 @s2n_print_stacktrace(ptr noundef %1939)
  %1941 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1942 = trunc i8 %1941 to i1
  br i1 %1942, label %1943, label %1965

1943:                                             ; preds = %1936
  %1944 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1945 = call i32 @fileno(ptr noundef %1944) #11
  %1946 = call i32 @isatty(i32 noundef %1945) #11
  %1947 = icmp ne i32 %1946, 0
  br i1 %1947, label %1948, label %1965

1948:                                             ; preds = %1943
  %1949 = load i32, ptr %63, align 4, !tbaa !5
  %1950 = call ptr @__errno_location() #12
  store i32 %1949, ptr %1950, align 4, !tbaa !5
  %1951 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1952 = load i32, ptr @test_count, align 4, !tbaa !5
  %1953 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1954 = load i32, ptr %1953, align 4, !tbaa !5
  %1955 = call ptr @s2n_strerror(i32 noundef %1954, ptr noundef @.str.4)
  %1956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1957 = load i32, ptr %1956, align 4, !tbaa !5
  %1958 = call ptr @s2n_strerror_debug(i32 noundef %1957, ptr noundef @.str.4)
  %1959 = call ptr @__errno_location() #12
  %1960 = load i32, ptr %1959, align 4, !tbaa !5
  %1961 = call ptr @strerror(i32 noundef %1960) #11
  %1962 = call ptr @__errno_location() #12
  %1963 = load i32, ptr %1962, align 4, !tbaa !5
  %1964 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1951, ptr noundef @.str.2, i32 noundef %1952, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 184, ptr noundef %1955, ptr noundef %1958, ptr noundef %1961, i32 noundef %1963) #11
  br label %1982

1965:                                             ; preds = %1943, %1936
  %1966 = load i32, ptr %63, align 4, !tbaa !5
  %1967 = call ptr @__errno_location() #12
  store i32 %1966, ptr %1967, align 4, !tbaa !5
  %1968 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1969 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1971, ptr noundef @.str.4)
  %1973 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1974 = load i32, ptr %1973, align 4, !tbaa !5
  %1975 = call ptr @s2n_strerror_debug(i32 noundef %1974, ptr noundef @.str.4)
  %1976 = call ptr @__errno_location() #12
  %1977 = load i32, ptr %1976, align 4, !tbaa !5
  %1978 = call ptr @strerror(i32 noundef %1977) #11
  %1979 = call ptr @__errno_location() #12
  %1980 = load i32, ptr %1979, align 4, !tbaa !5
  %1981 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1968, ptr noundef @.str.5, i32 noundef %1969, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 184, ptr noundef %1972, ptr noundef %1975, ptr noundef %1978, i32 noundef %1980) #11
  br label %1982

1982:                                             ; preds = %1965, %1948
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #11
  br label %1983

1983:                                             ; preds = %1982
  br label %1984

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

1985:                                             ; No predecessors!
  br label %1986

1986:                                             ; preds = %1985
  br label %1987

1987:                                             ; preds = %1986, %1926
  br label %1988

1988:                                             ; preds = %1987
  br label %1989

1989:                                             ; preds = %1988
  br label %1990

1990:                                             ; preds = %1989
  %1991 = load i32, ptr @test_count, align 4, !tbaa !5
  %1992 = add nsw i32 %1991, 1
  store i32 %1992, ptr @test_count, align 4, !tbaa !5
  %1993 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 3
  %1994 = getelementptr inbounds %struct.s2n_blob, ptr %1993, i32 0, i32 1
  %1995 = load i32, ptr %1994, align 8, !tbaa !64
  %1996 = load i32, ptr %51, align 4, !tbaa !5
  %1997 = icmp eq i32 %1995, %1996
  br i1 %1997, label %2051, label %1998

1998:                                             ; preds = %1990
  br label %1999

1999:                                             ; preds = %1998
  br label %2000

2000:                                             ; preds = %1999
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #11
  %2001 = call ptr @__errno_location() #12
  %2002 = load i32, ptr %2001, align 4, !tbaa !5
  store i32 %2002, ptr %64, align 4, !tbaa !5
  %2003 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2004 = call i32 @s2n_print_stacktrace(ptr noundef %2003)
  %2005 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2006 = trunc i8 %2005 to i1
  br i1 %2006, label %2007, label %2029

2007:                                             ; preds = %2000
  %2008 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2009 = call i32 @fileno(ptr noundef %2008) #11
  %2010 = call i32 @isatty(i32 noundef %2009) #11
  %2011 = icmp ne i32 %2010, 0
  br i1 %2011, label %2012, label %2029

2012:                                             ; preds = %2007
  %2013 = load i32, ptr %64, align 4, !tbaa !5
  %2014 = call ptr @__errno_location() #12
  store i32 %2013, ptr %2014, align 4, !tbaa !5
  %2015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2016 = load i32, ptr @test_count, align 4, !tbaa !5
  %2017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2018 = load i32, ptr %2017, align 4, !tbaa !5
  %2019 = call ptr @s2n_strerror(i32 noundef %2018, ptr noundef @.str.4)
  %2020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2021 = load i32, ptr %2020, align 4, !tbaa !5
  %2022 = call ptr @s2n_strerror_debug(i32 noundef %2021, ptr noundef @.str.4)
  %2023 = call ptr @__errno_location() #12
  %2024 = load i32, ptr %2023, align 4, !tbaa !5
  %2025 = call ptr @strerror(i32 noundef %2024) #11
  %2026 = call ptr @__errno_location() #12
  %2027 = load i32, ptr %2026, align 4, !tbaa !5
  %2028 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2015, ptr noundef @.str.2, i32 noundef %2016, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 185, ptr noundef %2019, ptr noundef %2022, ptr noundef %2025, i32 noundef %2027) #11
  br label %2046

2029:                                             ; preds = %2007, %2000
  %2030 = load i32, ptr %64, align 4, !tbaa !5
  %2031 = call ptr @__errno_location() #12
  store i32 %2030, ptr %2031, align 4, !tbaa !5
  %2032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2033 = load i32, ptr @test_count, align 4, !tbaa !5
  %2034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2035 = load i32, ptr %2034, align 4, !tbaa !5
  %2036 = call ptr @s2n_strerror(i32 noundef %2035, ptr noundef @.str.4)
  %2037 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2038 = load i32, ptr %2037, align 4, !tbaa !5
  %2039 = call ptr @s2n_strerror_debug(i32 noundef %2038, ptr noundef @.str.4)
  %2040 = call ptr @__errno_location() #12
  %2041 = load i32, ptr %2040, align 4, !tbaa !5
  %2042 = call ptr @strerror(i32 noundef %2041) #11
  %2043 = call ptr @__errno_location() #12
  %2044 = load i32, ptr %2043, align 4, !tbaa !5
  %2045 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2032, ptr noundef @.str.5, i32 noundef %2033, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 185, ptr noundef %2036, ptr noundef %2039, ptr noundef %2042, i32 noundef %2044) #11
  br label %2046

2046:                                             ; preds = %2029, %2012
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  br label %2047

2047:                                             ; preds = %2046
  br label %2048

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

2049:                                             ; No predecessors!
  br label %2050

2050:                                             ; preds = %2049
  br label %2051

2051:                                             ; preds = %2050, %1990
  br label %2052

2052:                                             ; preds = %2051
  br label %2053

2053:                                             ; preds = %2052
  br label %2054

2054:                                             ; preds = %2053
  %2055 = load i32, ptr @test_count, align 4, !tbaa !5
  %2056 = add nsw i32 %2055, 1
  store i32 %2056, ptr @test_count, align 4, !tbaa !5
  %2057 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 5
  %2058 = getelementptr inbounds %struct.s2n_blob, ptr %2057, i32 0, i32 1
  %2059 = load i32, ptr %2058, align 8, !tbaa !65
  %2060 = load i32, ptr %52, align 4, !tbaa !5
  %2061 = icmp eq i32 %2059, %2060
  br i1 %2061, label %2115, label %2062

2062:                                             ; preds = %2054
  br label %2063

2063:                                             ; preds = %2062
  br label %2064

2064:                                             ; preds = %2063
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #11
  %2065 = call ptr @__errno_location() #12
  %2066 = load i32, ptr %2065, align 4, !tbaa !5
  store i32 %2066, ptr %65, align 4, !tbaa !5
  %2067 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2068 = call i32 @s2n_print_stacktrace(ptr noundef %2067)
  %2069 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2070 = trunc i8 %2069 to i1
  br i1 %2070, label %2071, label %2093

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
  %2075 = icmp ne i32 %2074, 0
  br i1 %2075, label %2076, label %2093

2076:                                             ; preds = %2071
  %2077 = load i32, ptr %65, align 4, !tbaa !5
  %2078 = call ptr @__errno_location() #12
  store i32 %2077, ptr %2078, align 4, !tbaa !5
  %2079 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2080 = load i32, ptr @test_count, align 4, !tbaa !5
  %2081 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2082 = load i32, ptr %2081, align 4, !tbaa !5
  %2083 = call ptr @s2n_strerror(i32 noundef %2082, ptr noundef @.str.4)
  %2084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2085 = load i32, ptr %2084, align 4, !tbaa !5
  %2086 = call ptr @s2n_strerror_debug(i32 noundef %2085, ptr noundef @.str.4)
  %2087 = call ptr @__errno_location() #12
  %2088 = load i32, ptr %2087, align 4, !tbaa !5
  %2089 = call ptr @strerror(i32 noundef %2088) #11
  %2090 = call ptr @__errno_location() #12
  %2091 = load i32, ptr %2090, align 4, !tbaa !5
  %2092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2079, ptr noundef @.str.2, i32 noundef %2080, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 186, ptr noundef %2083, ptr noundef %2086, ptr noundef %2089, i32 noundef %2091) #11
  br label %2110

2093:                                             ; preds = %2071, %2064
  %2094 = load i32, ptr %65, align 4, !tbaa !5
  %2095 = call ptr @__errno_location() #12
  store i32 %2094, ptr %2095, align 4, !tbaa !5
  %2096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2097 = load i32, ptr @test_count, align 4, !tbaa !5
  %2098 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2099 = load i32, ptr %2098, align 4, !tbaa !5
  %2100 = call ptr @s2n_strerror(i32 noundef %2099, ptr noundef @.str.4)
  %2101 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2102 = load i32, ptr %2101, align 4, !tbaa !5
  %2103 = call ptr @s2n_strerror_debug(i32 noundef %2102, ptr noundef @.str.4)
  %2104 = call ptr @__errno_location() #12
  %2105 = load i32, ptr %2104, align 4, !tbaa !5
  %2106 = call ptr @strerror(i32 noundef %2105) #11
  %2107 = call ptr @__errno_location() #12
  %2108 = load i32, ptr %2107, align 4, !tbaa !5
  %2109 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2096, ptr noundef @.str.5, i32 noundef %2097, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 186, ptr noundef %2100, ptr noundef %2103, ptr noundef %2106, i32 noundef %2108) #11
  br label %2110

2110:                                             ; preds = %2093, %2076
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  br label %2111

2111:                                             ; preds = %2110
  br label %2112

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

2113:                                             ; No predecessors!
  br label %2114

2114:                                             ; preds = %2113
  br label %2115

2115:                                             ; preds = %2114, %2054
  br label %2116

2116:                                             ; preds = %2115
  br label %2117

2117:                                             ; preds = %2116
  br label %2118

2118:                                             ; preds = %2117
  %2119 = load i32, ptr @test_count, align 4, !tbaa !5
  %2120 = add nsw i32 %2119, 1
  store i32 %2120, ptr @test_count, align 4, !tbaa !5
  %2121 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 2
  %2122 = getelementptr inbounds %struct.s2n_blob, ptr %2121, i32 0, i32 1
  %2123 = load i32, ptr %2122, align 8, !tbaa !66
  %2124 = load i32, ptr %50, align 4, !tbaa !5
  %2125 = icmp eq i32 %2123, %2124
  br i1 %2125, label %2179, label %2126

2126:                                             ; preds = %2118
  br label %2127

2127:                                             ; preds = %2126
  br label %2128

2128:                                             ; preds = %2127
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #11
  %2129 = call ptr @__errno_location() #12
  %2130 = load i32, ptr %2129, align 4, !tbaa !5
  store i32 %2130, ptr %66, align 4, !tbaa !5
  %2131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2132 = call i32 @s2n_print_stacktrace(ptr noundef %2131)
  %2133 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2134 = trunc i8 %2133 to i1
  br i1 %2134, label %2135, label %2157

2135:                                             ; preds = %2128
  %2136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2137 = call i32 @fileno(ptr noundef %2136) #11
  %2138 = call i32 @isatty(i32 noundef %2137) #11
  %2139 = icmp ne i32 %2138, 0
  br i1 %2139, label %2140, label %2157

2140:                                             ; preds = %2135
  %2141 = load i32, ptr %66, align 4, !tbaa !5
  %2142 = call ptr @__errno_location() #12
  store i32 %2141, ptr %2142, align 4, !tbaa !5
  %2143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2144 = load i32, ptr @test_count, align 4, !tbaa !5
  %2145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2146 = load i32, ptr %2145, align 4, !tbaa !5
  %2147 = call ptr @s2n_strerror(i32 noundef %2146, ptr noundef @.str.4)
  %2148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2149 = load i32, ptr %2148, align 4, !tbaa !5
  %2150 = call ptr @s2n_strerror_debug(i32 noundef %2149, ptr noundef @.str.4)
  %2151 = call ptr @__errno_location() #12
  %2152 = load i32, ptr %2151, align 4, !tbaa !5
  %2153 = call ptr @strerror(i32 noundef %2152) #11
  %2154 = call ptr @__errno_location() #12
  %2155 = load i32, ptr %2154, align 4, !tbaa !5
  %2156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2143, ptr noundef @.str.2, i32 noundef %2144, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 187, ptr noundef %2147, ptr noundef %2150, ptr noundef %2153, i32 noundef %2155) #11
  br label %2174

2157:                                             ; preds = %2135, %2128
  %2158 = load i32, ptr %66, align 4, !tbaa !5
  %2159 = call ptr @__errno_location() #12
  store i32 %2158, ptr %2159, align 4, !tbaa !5
  %2160 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2161 = load i32, ptr @test_count, align 4, !tbaa !5
  %2162 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2163 = load i32, ptr %2162, align 4, !tbaa !5
  %2164 = call ptr @s2n_strerror(i32 noundef %2163, ptr noundef @.str.4)
  %2165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2166 = load i32, ptr %2165, align 4, !tbaa !5
  %2167 = call ptr @s2n_strerror_debug(i32 noundef %2166, ptr noundef @.str.4)
  %2168 = call ptr @__errno_location() #12
  %2169 = load i32, ptr %2168, align 4, !tbaa !5
  %2170 = call ptr @strerror(i32 noundef %2169) #11
  %2171 = call ptr @__errno_location() #12
  %2172 = load i32, ptr %2171, align 4, !tbaa !5
  %2173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2160, ptr noundef @.str.5, i32 noundef %2161, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 187, ptr noundef %2164, ptr noundef %2167, ptr noundef %2170, i32 noundef %2172) #11
  br label %2174

2174:                                             ; preds = %2157, %2140
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #11
  br label %2175

2175:                                             ; preds = %2174
  br label %2176

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

2177:                                             ; No predecessors!
  br label %2178

2178:                                             ; preds = %2177
  br label %2179

2179:                                             ; preds = %2178, %2118
  br label %2180

2180:                                             ; preds = %2179
  br label %2181

2181:                                             ; preds = %2180
  br label %2182

2182:                                             ; preds = %2181
  %2183 = load i32, ptr @test_count, align 4, !tbaa !5
  %2184 = add nsw i32 %2183, 1
  store i32 %2184, ptr @test_count, align 4, !tbaa !5
  %2185 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 4
  %2186 = getelementptr inbounds %struct.s2n_blob, ptr %2185, i32 0, i32 1
  %2187 = load i32, ptr %2186, align 8, !tbaa !67
  %2188 = load i32, ptr %51, align 4, !tbaa !5
  %2189 = icmp eq i32 %2187, %2188
  br i1 %2189, label %2243, label %2190

2190:                                             ; preds = %2182
  br label %2191

2191:                                             ; preds = %2190
  br label %2192

2192:                                             ; preds = %2191
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #11
  %2193 = call ptr @__errno_location() #12
  %2194 = load i32, ptr %2193, align 4, !tbaa !5
  store i32 %2194, ptr %67, align 4, !tbaa !5
  %2195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2196 = call i32 @s2n_print_stacktrace(ptr noundef %2195)
  %2197 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2198 = trunc i8 %2197 to i1
  br i1 %2198, label %2199, label %2221

2199:                                             ; preds = %2192
  %2200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2201 = call i32 @fileno(ptr noundef %2200) #11
  %2202 = call i32 @isatty(i32 noundef %2201) #11
  %2203 = icmp ne i32 %2202, 0
  br i1 %2203, label %2204, label %2221

2204:                                             ; preds = %2199
  %2205 = load i32, ptr %67, align 4, !tbaa !5
  %2206 = call ptr @__errno_location() #12
  store i32 %2205, ptr %2206, align 4, !tbaa !5
  %2207 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2208 = load i32, ptr @test_count, align 4, !tbaa !5
  %2209 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2210 = load i32, ptr %2209, align 4, !tbaa !5
  %2211 = call ptr @s2n_strerror(i32 noundef %2210, ptr noundef @.str.4)
  %2212 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2213 = load i32, ptr %2212, align 4, !tbaa !5
  %2214 = call ptr @s2n_strerror_debug(i32 noundef %2213, ptr noundef @.str.4)
  %2215 = call ptr @__errno_location() #12
  %2216 = load i32, ptr %2215, align 4, !tbaa !5
  %2217 = call ptr @strerror(i32 noundef %2216) #11
  %2218 = call ptr @__errno_location() #12
  %2219 = load i32, ptr %2218, align 4, !tbaa !5
  %2220 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2207, ptr noundef @.str.2, i32 noundef %2208, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 188, ptr noundef %2211, ptr noundef %2214, ptr noundef %2217, i32 noundef %2219) #11
  br label %2238

2221:                                             ; preds = %2199, %2192
  %2222 = load i32, ptr %67, align 4, !tbaa !5
  %2223 = call ptr @__errno_location() #12
  store i32 %2222, ptr %2223, align 4, !tbaa !5
  %2224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2225 = load i32, ptr @test_count, align 4, !tbaa !5
  %2226 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2227 = load i32, ptr %2226, align 4, !tbaa !5
  %2228 = call ptr @s2n_strerror(i32 noundef %2227, ptr noundef @.str.4)
  %2229 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2230 = load i32, ptr %2229, align 4, !tbaa !5
  %2231 = call ptr @s2n_strerror_debug(i32 noundef %2230, ptr noundef @.str.4)
  %2232 = call ptr @__errno_location() #12
  %2233 = load i32, ptr %2232, align 4, !tbaa !5
  %2234 = call ptr @strerror(i32 noundef %2233) #11
  %2235 = call ptr @__errno_location() #12
  %2236 = load i32, ptr %2235, align 4, !tbaa !5
  %2237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2224, ptr noundef @.str.5, i32 noundef %2225, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 188, ptr noundef %2228, ptr noundef %2231, ptr noundef %2234, i32 noundef %2236) #11
  br label %2238

2238:                                             ; preds = %2221, %2204
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #11
  br label %2239

2239:                                             ; preds = %2238
  br label %2240

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

2241:                                             ; No predecessors!
  br label %2242

2242:                                             ; preds = %2241
  br label %2243

2243:                                             ; preds = %2242, %2182
  br label %2244

2244:                                             ; preds = %2243
  br label %2245

2245:                                             ; preds = %2244
  br label %2246

2246:                                             ; preds = %2245
  %2247 = load i32, ptr @test_count, align 4, !tbaa !5
  %2248 = add nsw i32 %2247, 1
  store i32 %2248, ptr @test_count, align 4, !tbaa !5
  %2249 = getelementptr inbounds %struct.s2n_key_material, ptr %49, i32 0, i32 6
  %2250 = getelementptr inbounds %struct.s2n_blob, ptr %2249, i32 0, i32 1
  %2251 = load i32, ptr %2250, align 8, !tbaa !68
  %2252 = load i32, ptr %52, align 4, !tbaa !5
  %2253 = icmp eq i32 %2251, %2252
  br i1 %2253, label %2307, label %2254

2254:                                             ; preds = %2246
  br label %2255

2255:                                             ; preds = %2254
  br label %2256

2256:                                             ; preds = %2255
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #11
  %2257 = call ptr @__errno_location() #12
  %2258 = load i32, ptr %2257, align 4, !tbaa !5
  store i32 %2258, ptr %68, align 4, !tbaa !5
  %2259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2260 = call i32 @s2n_print_stacktrace(ptr noundef %2259)
  %2261 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2262 = trunc i8 %2261 to i1
  br i1 %2262, label %2263, label %2285

2263:                                             ; preds = %2256
  %2264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2265 = call i32 @fileno(ptr noundef %2264) #11
  %2266 = call i32 @isatty(i32 noundef %2265) #11
  %2267 = icmp ne i32 %2266, 0
  br i1 %2267, label %2268, label %2285

2268:                                             ; preds = %2263
  %2269 = load i32, ptr %68, align 4, !tbaa !5
  %2270 = call ptr @__errno_location() #12
  store i32 %2269, ptr %2270, align 4, !tbaa !5
  %2271 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2272 = load i32, ptr @test_count, align 4, !tbaa !5
  %2273 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2274 = load i32, ptr %2273, align 4, !tbaa !5
  %2275 = call ptr @s2n_strerror(i32 noundef %2274, ptr noundef @.str.4)
  %2276 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2277 = load i32, ptr %2276, align 4, !tbaa !5
  %2278 = call ptr @s2n_strerror_debug(i32 noundef %2277, ptr noundef @.str.4)
  %2279 = call ptr @__errno_location() #12
  %2280 = load i32, ptr %2279, align 4, !tbaa !5
  %2281 = call ptr @strerror(i32 noundef %2280) #11
  %2282 = call ptr @__errno_location() #12
  %2283 = load i32, ptr %2282, align 4, !tbaa !5
  %2284 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2271, ptr noundef @.str.2, i32 noundef %2272, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 189, ptr noundef %2275, ptr noundef %2278, ptr noundef %2281, i32 noundef %2283) #11
  br label %2302

2285:                                             ; preds = %2263, %2256
  %2286 = load i32, ptr %68, align 4, !tbaa !5
  %2287 = call ptr @__errno_location() #12
  store i32 %2286, ptr %2287, align 4, !tbaa !5
  %2288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2289 = load i32, ptr @test_count, align 4, !tbaa !5
  %2290 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2291 = load i32, ptr %2290, align 4, !tbaa !5
  %2292 = call ptr @s2n_strerror(i32 noundef %2291, ptr noundef @.str.4)
  %2293 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2294 = load i32, ptr %2293, align 4, !tbaa !5
  %2295 = call ptr @s2n_strerror_debug(i32 noundef %2294, ptr noundef @.str.4)
  %2296 = call ptr @__errno_location() #12
  %2297 = load i32, ptr %2296, align 4, !tbaa !5
  %2298 = call ptr @strerror(i32 noundef %2297) #11
  %2299 = call ptr @__errno_location() #12
  %2300 = load i32, ptr %2299, align 4, !tbaa !5
  %2301 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2288, ptr noundef @.str.5, i32 noundef %2289, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 189, ptr noundef %2292, ptr noundef %2295, ptr noundef %2298, i32 noundef %2300) #11
  br label %2302

2302:                                             ; preds = %2285, %2268
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #11
  br label %2303

2303:                                             ; preds = %2302
  br label %2304

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

2305:                                             ; No predecessors!
  br label %2306

2306:                                             ; preds = %2305
  br label %2307

2307:                                             ; preds = %2306, %2246
  br label %2308

2308:                                             ; preds = %2307
  br label %2309

2309:                                             ; preds = %2308
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 304, ptr %49) #11
  %2310 = call i32 @s2n_connection_ptr_free(ptr noundef %47)
  %2311 = getelementptr inbounds %struct.s2n_result, ptr %69, i32 0, i32 0
  store i32 %2310, ptr %2311, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #11
  %2312 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %2312, ptr %70, align 8, !tbaa !9
  %2313 = load ptr, ptr %70, align 8, !tbaa !9
  %2314 = getelementptr inbounds %struct.s2n_connection, ptr %2313, i32 0, i32 27
  %2315 = load ptr, ptr %2314, align 8, !tbaa !56
  %2316 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2315, i32 0, i32 0
  store ptr @s2n_rsa_with_aes_128_cbc_sha256, ptr %2316, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #11
  %2317 = load ptr, ptr %70, align 8, !tbaa !9
  %2318 = getelementptr inbounds %struct.s2n_connection, ptr %2317, i32 0, i32 27
  %2319 = load ptr, ptr %2318, align 8, !tbaa !56
  %2320 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %2319, i32 0, i32 0
  %2321 = load ptr, ptr %2320, align 8, !tbaa !57
  %2322 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %2321, i32 0, i32 6
  %2323 = load ptr, ptr %2322, align 8, !tbaa !54
  %2324 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %2323, i32 0, i32 0
  %2325 = load ptr, ptr %2324, align 8, !tbaa !49
  store ptr %2325, ptr %71, align 8, !tbaa !9
  br label %2326

2326:                                             ; preds = %2309
  %2327 = load i32, ptr @test_count, align 4, !tbaa !5
  %2328 = add nsw i32 %2327, 1
  store i32 %2328, ptr @test_count, align 4, !tbaa !5
  %2329 = load ptr, ptr %71, align 8, !tbaa !9
  %2330 = getelementptr inbounds %struct.s2n_cipher, ptr %2329, i32 0, i32 0
  %2331 = load i32, ptr %2330, align 8, !tbaa !43
  %2332 = icmp eq i32 %2331, 3
  br i1 %2332, label %2391, label %2333

2333:                                             ; preds = %2326
  %2334 = load ptr, ptr %71, align 8, !tbaa !9
  %2335 = getelementptr inbounds %struct.s2n_cipher, ptr %2334, i32 0, i32 0
  %2336 = load i32, ptr %2335, align 8, !tbaa !43
  %2337 = icmp eq i32 %2336, 1
  br i1 %2337, label %2391, label %2338

2338:                                             ; preds = %2333
  br label %2339

2339:                                             ; preds = %2338
  br label %2340

2340:                                             ; preds = %2339
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #11
  %2341 = call ptr @__errno_location() #12
  %2342 = load i32, ptr %2341, align 4, !tbaa !5
  store i32 %2342, ptr %72, align 4, !tbaa !5
  %2343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2344 = call i32 @s2n_print_stacktrace(ptr noundef %2343)
  %2345 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2346 = trunc i8 %2345 to i1
  br i1 %2346, label %2347, label %2369

2347:                                             ; preds = %2340
  %2348 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2349 = call i32 @fileno(ptr noundef %2348) #11
  %2350 = call i32 @isatty(i32 noundef %2349) #11
  %2351 = icmp ne i32 %2350, 0
  br i1 %2351, label %2352, label %2369

2352:                                             ; preds = %2347
  %2353 = load i32, ptr %72, align 4, !tbaa !5
  %2354 = call ptr @__errno_location() #12
  store i32 %2353, ptr %2354, align 4, !tbaa !5
  %2355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2356 = load i32, ptr @test_count, align 4, !tbaa !5
  %2357 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2358 = load i32, ptr %2357, align 4, !tbaa !5
  %2359 = call ptr @s2n_strerror(i32 noundef %2358, ptr noundef @.str.4)
  %2360 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2361 = load i32, ptr %2360, align 4, !tbaa !5
  %2362 = call ptr @s2n_strerror_debug(i32 noundef %2361, ptr noundef @.str.4)
  %2363 = call ptr @__errno_location() #12
  %2364 = load i32, ptr %2363, align 4, !tbaa !5
  %2365 = call ptr @strerror(i32 noundef %2364) #11
  %2366 = call ptr @__errno_location() #12
  %2367 = load i32, ptr %2366, align 4, !tbaa !5
  %2368 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2355, ptr noundef @.str.2, i32 noundef %2356, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 202, ptr noundef %2359, ptr noundef %2362, ptr noundef %2365, i32 noundef %2367) #11
  br label %2386

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

2386:                                             ; preds = %2369, %2352
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #11
  br label %2387

2387:                                             ; preds = %2386
  br label %2388

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

2389:                                             ; No predecessors!
  br label %2390

2390:                                             ; preds = %2389
  br label %2391

2391:                                             ; preds = %2390, %2333, %2326
  br label %2392

2392:                                             ; preds = %2391
  br label %2393

2393:                                             ; preds = %2392
  call void @llvm.lifetime.start.p0(i64 304, ptr %73) #11
  call void @llvm.memset.p0.i64(ptr align 8 %73, i8 0, i64 304, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #11
  store i32 32, ptr %74, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #11
  store i32 16, ptr %75, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #11
  store i32 16, ptr %76, align 4, !tbaa !5
  %2394 = load ptr, ptr %70, align 8, !tbaa !9
  %2395 = getelementptr inbounds %struct.s2n_connection, ptr %2394, i32 0, i32 23
  store i8 31, ptr %2395, align 4, !tbaa !16
  br label %2396

2396:                                             ; preds = %2393
  %2397 = load i32, ptr @test_count, align 4, !tbaa !5
  %2398 = add nsw i32 %2397, 1
  store i32 %2398, ptr @test_count, align 4, !tbaa !5
  %2399 = load ptr, ptr %70, align 8, !tbaa !9
  %2400 = call i32 @s2n_key_material_init(ptr noundef %73, ptr noundef %2399)
  %2401 = getelementptr inbounds %struct.s2n_result, ptr %77, i32 0, i32 0
  store i32 %2400, ptr %2401, align 4
  %2402 = getelementptr inbounds %struct.s2n_result, ptr %77, i32 0, i32 0
  %2403 = load i32, ptr %2402, align 4
  %2404 = call zeroext i1 @s2n_result_is_ok(i32 %2403)
  br i1 %2404, label %2458, label %2405

2405:                                             ; preds = %2396
  br label %2406

2406:                                             ; preds = %2405
  br label %2407

2407:                                             ; preds = %2406
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #11
  %2408 = call ptr @__errno_location() #12
  %2409 = load i32, ptr %2408, align 4, !tbaa !5
  store i32 %2409, ptr %78, align 4, !tbaa !5
  %2410 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2411 = call i32 @s2n_print_stacktrace(ptr noundef %2410)
  %2412 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2413 = trunc i8 %2412 to i1
  br i1 %2413, label %2414, label %2436

2414:                                             ; preds = %2407
  %2415 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2416 = call i32 @fileno(ptr noundef %2415) #11
  %2417 = call i32 @isatty(i32 noundef %2416) #11
  %2418 = icmp ne i32 %2417, 0
  br i1 %2418, label %2419, label %2436

2419:                                             ; preds = %2414
  %2420 = load i32, ptr %78, align 4, !tbaa !5
  %2421 = call ptr @__errno_location() #12
  store i32 %2420, ptr %2421, align 4, !tbaa !5
  %2422 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2423 = load i32, ptr @test_count, align 4, !tbaa !5
  %2424 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2425 = load i32, ptr %2424, align 4, !tbaa !5
  %2426 = call ptr @s2n_strerror(i32 noundef %2425, ptr noundef @.str.4)
  %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_debug(i32 noundef %2428, ptr noundef @.str.4)
  %2430 = call ptr @__errno_location() #12
  %2431 = load i32, ptr %2430, align 4, !tbaa !5
  %2432 = call ptr @strerror(i32 noundef %2431) #11
  %2433 = call ptr @__errno_location() #12
  %2434 = load i32, ptr %2433, align 4, !tbaa !5
  %2435 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2422, ptr noundef @.str.2, i32 noundef %2423, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 212, ptr noundef %2426, ptr noundef %2429, ptr noundef %2432, i32 noundef %2434) #11
  br label %2453

2436:                                             ; preds = %2414, %2407
  %2437 = load i32, ptr %78, align 4, !tbaa !5
  %2438 = call ptr @__errno_location() #12
  store i32 %2437, ptr %2438, align 4, !tbaa !5
  %2439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2440 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %2442, ptr noundef @.str.4)
  %2444 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2445 = load i32, ptr %2444, align 4, !tbaa !5
  %2446 = call ptr @s2n_strerror_debug(i32 noundef %2445, ptr noundef @.str.4)
  %2447 = call ptr @__errno_location() #12
  %2448 = load i32, ptr %2447, align 4, !tbaa !5
  %2449 = call ptr @strerror(i32 noundef %2448) #11
  %2450 = call ptr @__errno_location() #12
  %2451 = load i32, ptr %2450, align 4, !tbaa !5
  %2452 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2439, ptr noundef @.str.5, i32 noundef %2440, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 212, ptr noundef %2443, ptr noundef %2446, ptr noundef %2449, i32 noundef %2451) #11
  br label %2453

2453:                                             ; preds = %2436, %2419
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #11
  br label %2454

2454:                                             ; preds = %2453
  br label %2455

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

2456:                                             ; No predecessors!
  br label %2457

2457:                                             ; preds = %2456
  br label %2458

2458:                                             ; preds = %2457, %2396
  br label %2459

2459:                                             ; preds = %2458
  br label %2460

2460:                                             ; preds = %2459
  br label %2461

2461:                                             ; preds = %2460
  %2462 = load i32, ptr @test_count, align 4, !tbaa !5
  %2463 = add nsw i32 %2462, 1
  store i32 %2463, ptr @test_count, align 4, !tbaa !5
  %2464 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 1
  %2465 = getelementptr inbounds %struct.s2n_blob, ptr %2464, i32 0, i32 1
  %2466 = load i32, ptr %2465, align 8, !tbaa !62
  %2467 = load i32, ptr %74, align 4, !tbaa !5
  %2468 = icmp eq i32 %2466, %2467
  br i1 %2468, label %2522, label %2469

2469:                                             ; preds = %2461
  br label %2470

2470:                                             ; preds = %2469
  br label %2471

2471:                                             ; preds = %2470
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #11
  %2472 = call ptr @__errno_location() #12
  %2473 = load i32, ptr %2472, align 4, !tbaa !5
  store i32 %2473, ptr %79, align 4, !tbaa !5
  %2474 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2475 = call i32 @s2n_print_stacktrace(ptr noundef %2474)
  %2476 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2477 = trunc i8 %2476 to i1
  br i1 %2477, label %2478, label %2500

2478:                                             ; preds = %2471
  %2479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2480 = call i32 @fileno(ptr noundef %2479) #11
  %2481 = call i32 @isatty(i32 noundef %2480) #11
  %2482 = icmp ne i32 %2481, 0
  br i1 %2482, label %2483, label %2500

2483:                                             ; preds = %2478
  %2484 = load i32, ptr %79, align 4, !tbaa !5
  %2485 = call ptr @__errno_location() #12
  store i32 %2484, ptr %2485, align 4, !tbaa !5
  %2486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2487 = load i32, ptr @test_count, align 4, !tbaa !5
  %2488 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2489 = load i32, ptr %2488, align 4, !tbaa !5
  %2490 = call ptr @s2n_strerror(i32 noundef %2489, ptr noundef @.str.4)
  %2491 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2492 = load i32, ptr %2491, align 4, !tbaa !5
  %2493 = call ptr @s2n_strerror_debug(i32 noundef %2492, ptr noundef @.str.4)
  %2494 = call ptr @__errno_location() #12
  %2495 = load i32, ptr %2494, align 4, !tbaa !5
  %2496 = call ptr @strerror(i32 noundef %2495) #11
  %2497 = call ptr @__errno_location() #12
  %2498 = load i32, ptr %2497, align 4, !tbaa !5
  %2499 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2486, ptr noundef @.str.2, i32 noundef %2487, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 214, ptr noundef %2490, ptr noundef %2493, ptr noundef %2496, i32 noundef %2498) #11
  br label %2517

2500:                                             ; preds = %2478, %2471
  %2501 = load i32, ptr %79, align 4, !tbaa !5
  %2502 = call ptr @__errno_location() #12
  store i32 %2501, ptr %2502, align 4, !tbaa !5
  %2503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2504 = load i32, ptr @test_count, align 4, !tbaa !5
  %2505 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2506 = load i32, ptr %2505, align 4, !tbaa !5
  %2507 = call ptr @s2n_strerror(i32 noundef %2506, ptr noundef @.str.4)
  %2508 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2509 = load i32, ptr %2508, align 4, !tbaa !5
  %2510 = call ptr @s2n_strerror_debug(i32 noundef %2509, ptr noundef @.str.4)
  %2511 = call ptr @__errno_location() #12
  %2512 = load i32, ptr %2511, align 4, !tbaa !5
  %2513 = call ptr @strerror(i32 noundef %2512) #11
  %2514 = call ptr @__errno_location() #12
  %2515 = load i32, ptr %2514, align 4, !tbaa !5
  %2516 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2503, ptr noundef @.str.5, i32 noundef %2504, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 214, ptr noundef %2507, ptr noundef %2510, ptr noundef %2513, i32 noundef %2515) #11
  br label %2517

2517:                                             ; preds = %2500, %2483
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #11
  br label %2518

2518:                                             ; preds = %2517
  br label %2519

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

2520:                                             ; No predecessors!
  br label %2521

2521:                                             ; preds = %2520
  br label %2522

2522:                                             ; preds = %2521, %2461
  br label %2523

2523:                                             ; preds = %2522
  br label %2524

2524:                                             ; preds = %2523
  br label %2525

2525:                                             ; preds = %2524
  %2526 = load i32, ptr @test_count, align 4, !tbaa !5
  %2527 = add nsw i32 %2526, 1
  store i32 %2527, ptr @test_count, align 4, !tbaa !5
  %2528 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 3
  %2529 = getelementptr inbounds %struct.s2n_blob, ptr %2528, i32 0, i32 1
  %2530 = load i32, ptr %2529, align 8, !tbaa !64
  %2531 = load i32, ptr %75, align 4, !tbaa !5
  %2532 = icmp eq i32 %2530, %2531
  br i1 %2532, label %2586, label %2533

2533:                                             ; preds = %2525
  br label %2534

2534:                                             ; preds = %2533
  br label %2535

2535:                                             ; preds = %2534
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #11
  %2536 = call ptr @__errno_location() #12
  %2537 = load i32, ptr %2536, align 4, !tbaa !5
  store i32 %2537, ptr %80, align 4, !tbaa !5
  %2538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2539 = call i32 @s2n_print_stacktrace(ptr noundef %2538)
  %2540 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2541 = trunc i8 %2540 to i1
  br i1 %2541, label %2542, label %2564

2542:                                             ; preds = %2535
  %2543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2544 = call i32 @fileno(ptr noundef %2543) #11
  %2545 = call i32 @isatty(i32 noundef %2544) #11
  %2546 = icmp ne i32 %2545, 0
  br i1 %2546, label %2547, label %2564

2547:                                             ; preds = %2542
  %2548 = load i32, ptr %80, align 4, !tbaa !5
  %2549 = call ptr @__errno_location() #12
  store i32 %2548, ptr %2549, align 4, !tbaa !5
  %2550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2551 = load i32, ptr @test_count, align 4, !tbaa !5
  %2552 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2553 = load i32, ptr %2552, align 4, !tbaa !5
  %2554 = call ptr @s2n_strerror(i32 noundef %2553, ptr noundef @.str.4)
  %2555 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2556 = load i32, ptr %2555, align 4, !tbaa !5
  %2557 = call ptr @s2n_strerror_debug(i32 noundef %2556, ptr noundef @.str.4)
  %2558 = call ptr @__errno_location() #12
  %2559 = load i32, ptr %2558, align 4, !tbaa !5
  %2560 = call ptr @strerror(i32 noundef %2559) #11
  %2561 = call ptr @__errno_location() #12
  %2562 = load i32, ptr %2561, align 4, !tbaa !5
  %2563 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2550, ptr noundef @.str.2, i32 noundef %2551, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 215, ptr noundef %2554, ptr noundef %2557, ptr noundef %2560, i32 noundef %2562) #11
  br label %2581

2564:                                             ; preds = %2542, %2535
  %2565 = load i32, ptr %80, align 4, !tbaa !5
  %2566 = call ptr @__errno_location() #12
  store i32 %2565, ptr %2566, align 4, !tbaa !5
  %2567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2568 = load i32, ptr @test_count, align 4, !tbaa !5
  %2569 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2570 = load i32, ptr %2569, align 4, !tbaa !5
  %2571 = call ptr @s2n_strerror(i32 noundef %2570, ptr noundef @.str.4)
  %2572 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2573 = load i32, ptr %2572, align 4, !tbaa !5
  %2574 = call ptr @s2n_strerror_debug(i32 noundef %2573, ptr noundef @.str.4)
  %2575 = call ptr @__errno_location() #12
  %2576 = load i32, ptr %2575, align 4, !tbaa !5
  %2577 = call ptr @strerror(i32 noundef %2576) #11
  %2578 = call ptr @__errno_location() #12
  %2579 = load i32, ptr %2578, align 4, !tbaa !5
  %2580 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2567, ptr noundef @.str.5, i32 noundef %2568, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 215, ptr noundef %2571, ptr noundef %2574, ptr noundef %2577, i32 noundef %2579) #11
  br label %2581

2581:                                             ; preds = %2564, %2547
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #11
  br label %2582

2582:                                             ; preds = %2581
  br label %2583

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

2584:                                             ; No predecessors!
  br label %2585

2585:                                             ; preds = %2584
  br label %2586

2586:                                             ; preds = %2585, %2525
  br label %2587

2587:                                             ; preds = %2586
  br label %2588

2588:                                             ; preds = %2587
  br label %2589

2589:                                             ; preds = %2588
  %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 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 5
  %2593 = getelementptr inbounds %struct.s2n_blob, ptr %2592, i32 0, i32 1
  %2594 = load i32, ptr %2593, align 8, !tbaa !65
  %2595 = load i32, ptr %76, align 4, !tbaa !5
  %2596 = icmp eq i32 %2594, %2595
  br i1 %2596, label %2650, label %2597

2597:                                             ; preds = %2589
  br label %2598

2598:                                             ; preds = %2597
  br label %2599

2599:                                             ; preds = %2598
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #11
  %2600 = call ptr @__errno_location() #12
  %2601 = load i32, ptr %2600, align 4, !tbaa !5
  store i32 %2601, ptr %81, align 4, !tbaa !5
  %2602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2603 = call i32 @s2n_print_stacktrace(ptr noundef %2602)
  %2604 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2605 = trunc i8 %2604 to i1
  br i1 %2605, label %2606, label %2628

2606:                                             ; preds = %2599
  %2607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2608 = call i32 @fileno(ptr noundef %2607) #11
  %2609 = call i32 @isatty(i32 noundef %2608) #11
  %2610 = icmp ne i32 %2609, 0
  br i1 %2610, label %2611, label %2628

2611:                                             ; preds = %2606
  %2612 = load i32, ptr %81, align 4, !tbaa !5
  %2613 = call ptr @__errno_location() #12
  store i32 %2612, ptr %2613, align 4, !tbaa !5
  %2614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2615 = load i32, ptr @test_count, align 4, !tbaa !5
  %2616 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2617 = load i32, ptr %2616, align 4, !tbaa !5
  %2618 = call ptr @s2n_strerror(i32 noundef %2617, ptr noundef @.str.4)
  %2619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2620 = load i32, ptr %2619, align 4, !tbaa !5
  %2621 = call ptr @s2n_strerror_debug(i32 noundef %2620, ptr noundef @.str.4)
  %2622 = call ptr @__errno_location() #12
  %2623 = load i32, ptr %2622, align 4, !tbaa !5
  %2624 = call ptr @strerror(i32 noundef %2623) #11
  %2625 = call ptr @__errno_location() #12
  %2626 = load i32, ptr %2625, align 4, !tbaa !5
  %2627 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2614, ptr noundef @.str.2, i32 noundef %2615, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 216, ptr noundef %2618, ptr noundef %2621, ptr noundef %2624, i32 noundef %2626) #11
  br label %2645

2628:                                             ; preds = %2606, %2599
  %2629 = load i32, ptr %81, align 4, !tbaa !5
  %2630 = call ptr @__errno_location() #12
  store i32 %2629, ptr %2630, align 4, !tbaa !5
  %2631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2632 = load i32, ptr @test_count, align 4, !tbaa !5
  %2633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2634 = load i32, ptr %2633, align 4, !tbaa !5
  %2635 = call ptr @s2n_strerror(i32 noundef %2634, ptr noundef @.str.4)
  %2636 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2637 = load i32, ptr %2636, align 4, !tbaa !5
  %2638 = call ptr @s2n_strerror_debug(i32 noundef %2637, ptr noundef @.str.4)
  %2639 = call ptr @__errno_location() #12
  %2640 = load i32, ptr %2639, align 4, !tbaa !5
  %2641 = call ptr @strerror(i32 noundef %2640) #11
  %2642 = call ptr @__errno_location() #12
  %2643 = load i32, ptr %2642, align 4, !tbaa !5
  %2644 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2631, ptr noundef @.str.5, i32 noundef %2632, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 216, ptr noundef %2635, ptr noundef %2638, ptr noundef %2641, i32 noundef %2643) #11
  br label %2645

2645:                                             ; preds = %2628, %2611
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #11
  br label %2646

2646:                                             ; preds = %2645
  br label %2647

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

2648:                                             ; No predecessors!
  br label %2649

2649:                                             ; preds = %2648
  br label %2650

2650:                                             ; preds = %2649, %2589
  br label %2651

2651:                                             ; preds = %2650
  br label %2652

2652:                                             ; preds = %2651
  br label %2653

2653:                                             ; preds = %2652
  %2654 = load i32, ptr @test_count, align 4, !tbaa !5
  %2655 = add nsw i32 %2654, 1
  store i32 %2655, ptr @test_count, align 4, !tbaa !5
  %2656 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 2
  %2657 = getelementptr inbounds %struct.s2n_blob, ptr %2656, i32 0, i32 1
  %2658 = load i32, ptr %2657, align 8, !tbaa !66
  %2659 = load i32, ptr %74, align 4, !tbaa !5
  %2660 = icmp eq i32 %2658, %2659
  br i1 %2660, label %2714, label %2661

2661:                                             ; preds = %2653
  br label %2662

2662:                                             ; preds = %2661
  br label %2663

2663:                                             ; preds = %2662
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #11
  %2664 = call ptr @__errno_location() #12
  %2665 = load i32, ptr %2664, align 4, !tbaa !5
  store i32 %2665, ptr %82, align 4, !tbaa !5
  %2666 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2667 = call i32 @s2n_print_stacktrace(ptr noundef %2666)
  %2668 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2669 = trunc i8 %2668 to i1
  br i1 %2669, label %2670, label %2692

2670:                                             ; preds = %2663
  %2671 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2672 = call i32 @fileno(ptr noundef %2671) #11
  %2673 = call i32 @isatty(i32 noundef %2672) #11
  %2674 = icmp ne i32 %2673, 0
  br i1 %2674, label %2675, label %2692

2675:                                             ; preds = %2670
  %2676 = load i32, ptr %82, align 4, !tbaa !5
  %2677 = call ptr @__errno_location() #12
  store i32 %2676, ptr %2677, align 4, !tbaa !5
  %2678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2679 = load i32, ptr @test_count, align 4, !tbaa !5
  %2680 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2681 = load i32, ptr %2680, align 4, !tbaa !5
  %2682 = call ptr @s2n_strerror(i32 noundef %2681, ptr noundef @.str.4)
  %2683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2684 = load i32, ptr %2683, align 4, !tbaa !5
  %2685 = call ptr @s2n_strerror_debug(i32 noundef %2684, ptr noundef @.str.4)
  %2686 = call ptr @__errno_location() #12
  %2687 = load i32, ptr %2686, align 4, !tbaa !5
  %2688 = call ptr @strerror(i32 noundef %2687) #11
  %2689 = call ptr @__errno_location() #12
  %2690 = load i32, ptr %2689, align 4, !tbaa !5
  %2691 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2678, ptr noundef @.str.2, i32 noundef %2679, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 217, ptr noundef %2682, ptr noundef %2685, ptr noundef %2688, i32 noundef %2690) #11
  br label %2709

2692:                                             ; preds = %2670, %2663
  %2693 = load i32, ptr %82, align 4, !tbaa !5
  %2694 = call ptr @__errno_location() #12
  store i32 %2693, ptr %2694, align 4, !tbaa !5
  %2695 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2696 = load i32, ptr @test_count, align 4, !tbaa !5
  %2697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2698 = load i32, ptr %2697, align 4, !tbaa !5
  %2699 = call ptr @s2n_strerror(i32 noundef %2698, ptr noundef @.str.4)
  %2700 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2701 = load i32, ptr %2700, align 4, !tbaa !5
  %2702 = call ptr @s2n_strerror_debug(i32 noundef %2701, ptr noundef @.str.4)
  %2703 = call ptr @__errno_location() #12
  %2704 = load i32, ptr %2703, align 4, !tbaa !5
  %2705 = call ptr @strerror(i32 noundef %2704) #11
  %2706 = call ptr @__errno_location() #12
  %2707 = load i32, ptr %2706, align 4, !tbaa !5
  %2708 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2695, ptr noundef @.str.5, i32 noundef %2696, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 217, ptr noundef %2699, ptr noundef %2702, ptr noundef %2705, i32 noundef %2707) #11
  br label %2709

2709:                                             ; preds = %2692, %2675
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #11
  br label %2710

2710:                                             ; preds = %2709
  br label %2711

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

2712:                                             ; No predecessors!
  br label %2713

2713:                                             ; preds = %2712
  br label %2714

2714:                                             ; preds = %2713, %2653
  br label %2715

2715:                                             ; preds = %2714
  br label %2716

2716:                                             ; preds = %2715
  br label %2717

2717:                                             ; preds = %2716
  %2718 = load i32, ptr @test_count, align 4, !tbaa !5
  %2719 = add nsw i32 %2718, 1
  store i32 %2719, ptr @test_count, align 4, !tbaa !5
  %2720 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 4
  %2721 = getelementptr inbounds %struct.s2n_blob, ptr %2720, i32 0, i32 1
  %2722 = load i32, ptr %2721, align 8, !tbaa !67
  %2723 = load i32, ptr %75, align 4, !tbaa !5
  %2724 = icmp eq i32 %2722, %2723
  br i1 %2724, label %2778, label %2725

2725:                                             ; preds = %2717
  br label %2726

2726:                                             ; preds = %2725
  br label %2727

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

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

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

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

2773:                                             ; preds = %2756, %2739
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #11
  br label %2774

2774:                                             ; preds = %2773
  br label %2775

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

2776:                                             ; No predecessors!
  br label %2777

2777:                                             ; preds = %2776
  br label %2778

2778:                                             ; preds = %2777, %2717
  br label %2779

2779:                                             ; preds = %2778
  br label %2780

2780:                                             ; preds = %2779
  br label %2781

2781:                                             ; preds = %2780
  %2782 = load i32, ptr @test_count, align 4, !tbaa !5
  %2783 = add nsw i32 %2782, 1
  store i32 %2783, ptr @test_count, align 4, !tbaa !5
  %2784 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 6
  %2785 = getelementptr inbounds %struct.s2n_blob, ptr %2784, i32 0, i32 1
  %2786 = load i32, ptr %2785, align 8, !tbaa !68
  %2787 = load i32, ptr %76, align 4, !tbaa !5
  %2788 = icmp eq i32 %2786, %2787
  br i1 %2788, label %2842, label %2789

2789:                                             ; preds = %2781
  br label %2790

2790:                                             ; preds = %2789
  br label %2791

2791:                                             ; preds = %2790
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #11
  %2792 = call ptr @__errno_location() #12
  %2793 = load i32, ptr %2792, align 4, !tbaa !5
  store i32 %2793, ptr %84, align 4, !tbaa !5
  %2794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2795 = call i32 @s2n_print_stacktrace(ptr noundef %2794)
  %2796 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2797 = trunc i8 %2796 to i1
  br i1 %2797, label %2798, label %2820

2798:                                             ; preds = %2791
  %2799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2800 = call i32 @fileno(ptr noundef %2799) #11
  %2801 = call i32 @isatty(i32 noundef %2800) #11
  %2802 = icmp ne i32 %2801, 0
  br i1 %2802, label %2803, label %2820

2803:                                             ; preds = %2798
  %2804 = load i32, ptr %84, align 4, !tbaa !5
  %2805 = call ptr @__errno_location() #12
  store i32 %2804, ptr %2805, align 4, !tbaa !5
  %2806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2807 = load i32, ptr @test_count, align 4, !tbaa !5
  %2808 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2809 = load i32, ptr %2808, align 4, !tbaa !5
  %2810 = call ptr @s2n_strerror(i32 noundef %2809, ptr noundef @.str.4)
  %2811 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2812 = load i32, ptr %2811, align 4, !tbaa !5
  %2813 = call ptr @s2n_strerror_debug(i32 noundef %2812, ptr noundef @.str.4)
  %2814 = call ptr @__errno_location() #12
  %2815 = load i32, ptr %2814, align 4, !tbaa !5
  %2816 = call ptr @strerror(i32 noundef %2815) #11
  %2817 = call ptr @__errno_location() #12
  %2818 = load i32, ptr %2817, align 4, !tbaa !5
  %2819 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2806, ptr noundef @.str.2, i32 noundef %2807, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 219, ptr noundef %2810, ptr noundef %2813, ptr noundef %2816, i32 noundef %2818) #11
  br label %2837

2820:                                             ; preds = %2798, %2791
  %2821 = load i32, ptr %84, align 4, !tbaa !5
  %2822 = call ptr @__errno_location() #12
  store i32 %2821, ptr %2822, align 4, !tbaa !5
  %2823 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2824 = load i32, ptr @test_count, align 4, !tbaa !5
  %2825 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2826 = load i32, ptr %2825, align 4, !tbaa !5
  %2827 = call ptr @s2n_strerror(i32 noundef %2826, ptr noundef @.str.4)
  %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_debug(i32 noundef %2829, ptr noundef @.str.4)
  %2831 = call ptr @__errno_location() #12
  %2832 = load i32, ptr %2831, align 4, !tbaa !5
  %2833 = call ptr @strerror(i32 noundef %2832) #11
  %2834 = call ptr @__errno_location() #12
  %2835 = load i32, ptr %2834, align 4, !tbaa !5
  %2836 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2823, ptr noundef @.str.5, i32 noundef %2824, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 219, ptr noundef %2827, ptr noundef %2830, ptr noundef %2833, i32 noundef %2835) #11
  br label %2837

2837:                                             ; preds = %2820, %2803
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #11
  br label %2838

2838:                                             ; preds = %2837
  br label %2839

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

2840:                                             ; No predecessors!
  br label %2841

2841:                                             ; preds = %2840
  br label %2842

2842:                                             ; preds = %2841, %2781
  br label %2843

2843:                                             ; preds = %2842
  br label %2844

2844:                                             ; preds = %2843
  %2845 = load ptr, ptr %70, align 8, !tbaa !9
  %2846 = getelementptr inbounds %struct.s2n_connection, ptr %2845, i32 0, i32 23
  store i8 32, ptr %2846, align 4, !tbaa !16
  br label %2847

2847:                                             ; preds = %2844
  %2848 = load i32, ptr @test_count, align 4, !tbaa !5
  %2849 = add nsw i32 %2848, 1
  store i32 %2849, ptr @test_count, align 4, !tbaa !5
  %2850 = load ptr, ptr %70, align 8, !tbaa !9
  %2851 = call i32 @s2n_key_material_init(ptr noundef %73, ptr noundef %2850)
  %2852 = getelementptr inbounds %struct.s2n_result, ptr %85, i32 0, i32 0
  store i32 %2851, ptr %2852, align 4
  %2853 = getelementptr inbounds %struct.s2n_result, ptr %85, i32 0, i32 0
  %2854 = load i32, ptr %2853, align 4
  %2855 = call zeroext i1 @s2n_result_is_ok(i32 %2854)
  br i1 %2855, label %2909, label %2856

2856:                                             ; preds = %2847
  br label %2857

2857:                                             ; preds = %2856
  br label %2858

2858:                                             ; preds = %2857
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #11
  %2859 = call ptr @__errno_location() #12
  %2860 = load i32, ptr %2859, align 4, !tbaa !5
  store i32 %2860, ptr %86, align 4, !tbaa !5
  %2861 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2862 = call i32 @s2n_print_stacktrace(ptr noundef %2861)
  %2863 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2864 = trunc i8 %2863 to i1
  br i1 %2864, label %2865, label %2887

2865:                                             ; preds = %2858
  %2866 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2867 = call i32 @fileno(ptr noundef %2866) #11
  %2868 = call i32 @isatty(i32 noundef %2867) #11
  %2869 = icmp ne i32 %2868, 0
  br i1 %2869, label %2870, label %2887

2870:                                             ; preds = %2865
  %2871 = load i32, ptr %86, align 4, !tbaa !5
  %2872 = call ptr @__errno_location() #12
  store i32 %2871, ptr %2872, align 4, !tbaa !5
  %2873 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2874 = load i32, ptr @test_count, align 4, !tbaa !5
  %2875 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2876 = load i32, ptr %2875, align 4, !tbaa !5
  %2877 = call ptr @s2n_strerror(i32 noundef %2876, ptr noundef @.str.4)
  %2878 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2879 = load i32, ptr %2878, align 4, !tbaa !5
  %2880 = call ptr @s2n_strerror_debug(i32 noundef %2879, ptr noundef @.str.4)
  %2881 = call ptr @__errno_location() #12
  %2882 = load i32, ptr %2881, align 4, !tbaa !5
  %2883 = call ptr @strerror(i32 noundef %2882) #11
  %2884 = call ptr @__errno_location() #12
  %2885 = load i32, ptr %2884, align 4, !tbaa !5
  %2886 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2873, ptr noundef @.str.2, i32 noundef %2874, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 223, ptr noundef %2877, ptr noundef %2880, ptr noundef %2883, i32 noundef %2885) #11
  br label %2904

2887:                                             ; preds = %2865, %2858
  %2888 = load i32, ptr %86, align 4, !tbaa !5
  %2889 = call ptr @__errno_location() #12
  store i32 %2888, ptr %2889, align 4, !tbaa !5
  %2890 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2891 = load i32, ptr @test_count, align 4, !tbaa !5
  %2892 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2893 = load i32, ptr %2892, align 4, !tbaa !5
  %2894 = call ptr @s2n_strerror(i32 noundef %2893, ptr noundef @.str.4)
  %2895 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2896 = load i32, ptr %2895, align 4, !tbaa !5
  %2897 = call ptr @s2n_strerror_debug(i32 noundef %2896, ptr noundef @.str.4)
  %2898 = call ptr @__errno_location() #12
  %2899 = load i32, ptr %2898, align 4, !tbaa !5
  %2900 = call ptr @strerror(i32 noundef %2899) #11
  %2901 = call ptr @__errno_location() #12
  %2902 = load i32, ptr %2901, align 4, !tbaa !5
  %2903 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2890, ptr noundef @.str.5, i32 noundef %2891, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 223, ptr noundef %2894, ptr noundef %2897, ptr noundef %2900, i32 noundef %2902) #11
  br label %2904

2904:                                             ; preds = %2887, %2870
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  br label %2905

2905:                                             ; preds = %2904
  br label %2906

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

2907:                                             ; No predecessors!
  br label %2908

2908:                                             ; preds = %2907
  br label %2909

2909:                                             ; preds = %2908, %2847
  br label %2910

2910:                                             ; preds = %2909
  br label %2911

2911:                                             ; preds = %2910
  store i32 0, ptr %76, align 4, !tbaa !5
  br label %2912

2912:                                             ; preds = %2911
  %2913 = load i32, ptr @test_count, align 4, !tbaa !5
  %2914 = add nsw i32 %2913, 1
  store i32 %2914, ptr @test_count, align 4, !tbaa !5
  %2915 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 1
  %2916 = getelementptr inbounds %struct.s2n_blob, ptr %2915, i32 0, i32 1
  %2917 = load i32, ptr %2916, align 8, !tbaa !62
  %2918 = load i32, ptr %74, align 4, !tbaa !5
  %2919 = icmp eq i32 %2917, %2918
  br i1 %2919, label %2973, label %2920

2920:                                             ; preds = %2912
  br label %2921

2921:                                             ; preds = %2920
  br label %2922

2922:                                             ; preds = %2921
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #11
  %2923 = call ptr @__errno_location() #12
  %2924 = load i32, ptr %2923, align 4, !tbaa !5
  store i32 %2924, ptr %87, align 4, !tbaa !5
  %2925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2926 = call i32 @s2n_print_stacktrace(ptr noundef %2925)
  %2927 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2928 = trunc i8 %2927 to i1
  br i1 %2928, label %2929, label %2951

2929:                                             ; preds = %2922
  %2930 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2931 = call i32 @fileno(ptr noundef %2930) #11
  %2932 = call i32 @isatty(i32 noundef %2931) #11
  %2933 = icmp ne i32 %2932, 0
  br i1 %2933, label %2934, label %2951

2934:                                             ; preds = %2929
  %2935 = load i32, ptr %87, align 4, !tbaa !5
  %2936 = call ptr @__errno_location() #12
  store i32 %2935, ptr %2936, align 4, !tbaa !5
  %2937 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2938 = load i32, ptr @test_count, align 4, !tbaa !5
  %2939 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2940 = load i32, ptr %2939, align 4, !tbaa !5
  %2941 = call ptr @s2n_strerror(i32 noundef %2940, ptr noundef @.str.4)
  %2942 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2943 = load i32, ptr %2942, align 4, !tbaa !5
  %2944 = call ptr @s2n_strerror_debug(i32 noundef %2943, ptr noundef @.str.4)
  %2945 = call ptr @__errno_location() #12
  %2946 = load i32, ptr %2945, align 4, !tbaa !5
  %2947 = call ptr @strerror(i32 noundef %2946) #11
  %2948 = call ptr @__errno_location() #12
  %2949 = load i32, ptr %2948, align 4, !tbaa !5
  %2950 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2937, ptr noundef @.str.2, i32 noundef %2938, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 226, ptr noundef %2941, ptr noundef %2944, ptr noundef %2947, i32 noundef %2949) #11
  br label %2968

2951:                                             ; preds = %2929, %2922
  %2952 = load i32, ptr %87, align 4, !tbaa !5
  %2953 = call ptr @__errno_location() #12
  store i32 %2952, ptr %2953, align 4, !tbaa !5
  %2954 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2955 = load i32, ptr @test_count, align 4, !tbaa !5
  %2956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2957 = load i32, ptr %2956, align 4, !tbaa !5
  %2958 = call ptr @s2n_strerror(i32 noundef %2957, ptr noundef @.str.4)
  %2959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2960 = load i32, ptr %2959, align 4, !tbaa !5
  %2961 = call ptr @s2n_strerror_debug(i32 noundef %2960, ptr noundef @.str.4)
  %2962 = call ptr @__errno_location() #12
  %2963 = load i32, ptr %2962, align 4, !tbaa !5
  %2964 = call ptr @strerror(i32 noundef %2963) #11
  %2965 = call ptr @__errno_location() #12
  %2966 = load i32, ptr %2965, align 4, !tbaa !5
  %2967 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2954, ptr noundef @.str.5, i32 noundef %2955, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 226, ptr noundef %2958, ptr noundef %2961, ptr noundef %2964, i32 noundef %2966) #11
  br label %2968

2968:                                             ; preds = %2951, %2934
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #11
  br label %2969

2969:                                             ; preds = %2968
  br label %2970

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

2971:                                             ; No predecessors!
  br label %2972

2972:                                             ; preds = %2971
  br label %2973

2973:                                             ; preds = %2972, %2912
  br label %2974

2974:                                             ; preds = %2973
  br label %2975

2975:                                             ; preds = %2974
  br label %2976

2976:                                             ; preds = %2975
  %2977 = load i32, ptr @test_count, align 4, !tbaa !5
  %2978 = add nsw i32 %2977, 1
  store i32 %2978, ptr @test_count, align 4, !tbaa !5
  %2979 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 3
  %2980 = getelementptr inbounds %struct.s2n_blob, ptr %2979, i32 0, i32 1
  %2981 = load i32, ptr %2980, align 8, !tbaa !64
  %2982 = load i32, ptr %75, align 4, !tbaa !5
  %2983 = icmp eq i32 %2981, %2982
  br i1 %2983, label %3037, label %2984

2984:                                             ; preds = %2976
  br label %2985

2985:                                             ; preds = %2984
  br label %2986

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

2993:                                             ; preds = %2986
  %2994 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2995 = call i32 @fileno(ptr noundef %2994) #11
  %2996 = call i32 @isatty(i32 noundef %2995) #11
  %2997 = icmp ne i32 %2996, 0
  br i1 %2997, label %2998, label %3015

2998:                                             ; preds = %2993
  %2999 = load i32, ptr %88, align 4, !tbaa !5
  %3000 = call ptr @__errno_location() #12
  store i32 %2999, ptr %3000, align 4, !tbaa !5
  %3001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3002 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %3004, ptr noundef @.str.4)
  %3006 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3007 = load i32, ptr %3006, align 4, !tbaa !5
  %3008 = call ptr @s2n_strerror_debug(i32 noundef %3007, ptr noundef @.str.4)
  %3009 = call ptr @__errno_location() #12
  %3010 = load i32, ptr %3009, align 4, !tbaa !5
  %3011 = call ptr @strerror(i32 noundef %3010) #11
  %3012 = call ptr @__errno_location() #12
  %3013 = load i32, ptr %3012, align 4, !tbaa !5
  %3014 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3001, ptr noundef @.str.2, i32 noundef %3002, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 227, ptr noundef %3005, ptr noundef %3008, ptr noundef %3011, i32 noundef %3013) #11
  br label %3032

3015:                                             ; preds = %2993, %2986
  %3016 = load i32, ptr %88, align 4, !tbaa !5
  %3017 = call ptr @__errno_location() #12
  store i32 %3016, ptr %3017, align 4, !tbaa !5
  %3018 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3019 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %3021, ptr noundef @.str.4)
  %3023 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3024 = load i32, ptr %3023, align 4, !tbaa !5
  %3025 = call ptr @s2n_strerror_debug(i32 noundef %3024, ptr noundef @.str.4)
  %3026 = call ptr @__errno_location() #12
  %3027 = load i32, ptr %3026, align 4, !tbaa !5
  %3028 = call ptr @strerror(i32 noundef %3027) #11
  %3029 = call ptr @__errno_location() #12
  %3030 = load i32, ptr %3029, align 4, !tbaa !5
  %3031 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3018, ptr noundef @.str.5, i32 noundef %3019, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 227, ptr noundef %3022, ptr noundef %3025, ptr noundef %3028, i32 noundef %3030) #11
  br label %3032

3032:                                             ; preds = %3015, %2998
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #11
  br label %3033

3033:                                             ; preds = %3032
  br label %3034

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

3035:                                             ; No predecessors!
  br label %3036

3036:                                             ; preds = %3035
  br label %3037

3037:                                             ; preds = %3036, %2976
  br label %3038

3038:                                             ; preds = %3037
  br label %3039

3039:                                             ; preds = %3038
  br label %3040

3040:                                             ; preds = %3039
  %3041 = load i32, ptr @test_count, align 4, !tbaa !5
  %3042 = add nsw i32 %3041, 1
  store i32 %3042, ptr @test_count, align 4, !tbaa !5
  %3043 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 5
  %3044 = getelementptr inbounds %struct.s2n_blob, ptr %3043, i32 0, i32 1
  %3045 = load i32, ptr %3044, align 8, !tbaa !65
  %3046 = load i32, ptr %76, align 4, !tbaa !5
  %3047 = icmp eq i32 %3045, %3046
  br i1 %3047, label %3101, label %3048

3048:                                             ; preds = %3040
  br label %3049

3049:                                             ; preds = %3048
  br label %3050

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

3057:                                             ; preds = %3050
  %3058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3059 = call i32 @fileno(ptr noundef %3058) #11
  %3060 = call i32 @isatty(i32 noundef %3059) #11
  %3061 = icmp ne i32 %3060, 0
  br i1 %3061, label %3062, label %3079

3062:                                             ; preds = %3057
  %3063 = load i32, ptr %89, align 4, !tbaa !5
  %3064 = call ptr @__errno_location() #12
  store i32 %3063, ptr %3064, align 4, !tbaa !5
  %3065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3066 = load i32, ptr @test_count, align 4, !tbaa !5
  %3067 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3068 = load i32, ptr %3067, align 4, !tbaa !5
  %3069 = call ptr @s2n_strerror(i32 noundef %3068, ptr noundef @.str.4)
  %3070 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3071 = load i32, ptr %3070, align 4, !tbaa !5
  %3072 = call ptr @s2n_strerror_debug(i32 noundef %3071, ptr noundef @.str.4)
  %3073 = call ptr @__errno_location() #12
  %3074 = load i32, ptr %3073, align 4, !tbaa !5
  %3075 = call ptr @strerror(i32 noundef %3074) #11
  %3076 = call ptr @__errno_location() #12
  %3077 = load i32, ptr %3076, align 4, !tbaa !5
  %3078 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3065, ptr noundef @.str.2, i32 noundef %3066, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 228, ptr noundef %3069, ptr noundef %3072, ptr noundef %3075, i32 noundef %3077) #11
  br label %3096

3079:                                             ; preds = %3057, %3050
  %3080 = load i32, ptr %89, align 4, !tbaa !5
  %3081 = call ptr @__errno_location() #12
  store i32 %3080, ptr %3081, align 4, !tbaa !5
  %3082 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3083 = load i32, ptr @test_count, align 4, !tbaa !5
  %3084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3085 = load i32, ptr %3084, align 4, !tbaa !5
  %3086 = call ptr @s2n_strerror(i32 noundef %3085, ptr noundef @.str.4)
  %3087 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3088 = load i32, ptr %3087, align 4, !tbaa !5
  %3089 = call ptr @s2n_strerror_debug(i32 noundef %3088, ptr noundef @.str.4)
  %3090 = call ptr @__errno_location() #12
  %3091 = load i32, ptr %3090, align 4, !tbaa !5
  %3092 = call ptr @strerror(i32 noundef %3091) #11
  %3093 = call ptr @__errno_location() #12
  %3094 = load i32, ptr %3093, align 4, !tbaa !5
  %3095 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3082, ptr noundef @.str.5, i32 noundef %3083, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 228, ptr noundef %3086, ptr noundef %3089, ptr noundef %3092, i32 noundef %3094) #11
  br label %3096

3096:                                             ; preds = %3079, %3062
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #11
  br label %3097

3097:                                             ; preds = %3096
  br label %3098

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

3099:                                             ; No predecessors!
  br label %3100

3100:                                             ; preds = %3099
  br label %3101

3101:                                             ; preds = %3100, %3040
  br label %3102

3102:                                             ; preds = %3101
  br label %3103

3103:                                             ; preds = %3102
  br label %3104

3104:                                             ; preds = %3103
  %3105 = load i32, ptr @test_count, align 4, !tbaa !5
  %3106 = add nsw i32 %3105, 1
  store i32 %3106, ptr @test_count, align 4, !tbaa !5
  %3107 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 2
  %3108 = getelementptr inbounds %struct.s2n_blob, ptr %3107, i32 0, i32 1
  %3109 = load i32, ptr %3108, align 8, !tbaa !66
  %3110 = load i32, ptr %74, align 4, !tbaa !5
  %3111 = icmp eq i32 %3109, %3110
  br i1 %3111, label %3165, label %3112

3112:                                             ; preds = %3104
  br label %3113

3113:                                             ; preds = %3112
  br label %3114

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

3121:                                             ; preds = %3114
  %3122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3123 = call i32 @fileno(ptr noundef %3122) #11
  %3124 = call i32 @isatty(i32 noundef %3123) #11
  %3125 = icmp ne i32 %3124, 0
  br i1 %3125, label %3126, label %3143

3126:                                             ; preds = %3121
  %3127 = load i32, ptr %90, align 4, !tbaa !5
  %3128 = call ptr @__errno_location() #12
  store i32 %3127, ptr %3128, align 4, !tbaa !5
  %3129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3130 = load i32, ptr @test_count, align 4, !tbaa !5
  %3131 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3132 = load i32, ptr %3131, align 4, !tbaa !5
  %3133 = call ptr @s2n_strerror(i32 noundef %3132, ptr noundef @.str.4)
  %3134 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3135 = load i32, ptr %3134, align 4, !tbaa !5
  %3136 = call ptr @s2n_strerror_debug(i32 noundef %3135, ptr noundef @.str.4)
  %3137 = call ptr @__errno_location() #12
  %3138 = load i32, ptr %3137, align 4, !tbaa !5
  %3139 = call ptr @strerror(i32 noundef %3138) #11
  %3140 = call ptr @__errno_location() #12
  %3141 = load i32, ptr %3140, align 4, !tbaa !5
  %3142 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3129, ptr noundef @.str.2, i32 noundef %3130, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 229, ptr noundef %3133, ptr noundef %3136, ptr noundef %3139, i32 noundef %3141) #11
  br label %3160

3143:                                             ; preds = %3121, %3114
  %3144 = load i32, ptr %90, align 4, !tbaa !5
  %3145 = call ptr @__errno_location() #12
  store i32 %3144, ptr %3145, align 4, !tbaa !5
  %3146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3147 = load i32, ptr @test_count, align 4, !tbaa !5
  %3148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3149 = load i32, ptr %3148, align 4, !tbaa !5
  %3150 = call ptr @s2n_strerror(i32 noundef %3149, ptr noundef @.str.4)
  %3151 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3152 = load i32, ptr %3151, align 4, !tbaa !5
  %3153 = call ptr @s2n_strerror_debug(i32 noundef %3152, ptr noundef @.str.4)
  %3154 = call ptr @__errno_location() #12
  %3155 = load i32, ptr %3154, align 4, !tbaa !5
  %3156 = call ptr @strerror(i32 noundef %3155) #11
  %3157 = call ptr @__errno_location() #12
  %3158 = load i32, ptr %3157, align 4, !tbaa !5
  %3159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3146, ptr noundef @.str.5, i32 noundef %3147, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 229, ptr noundef %3150, ptr noundef %3153, ptr noundef %3156, i32 noundef %3158) #11
  br label %3160

3160:                                             ; preds = %3143, %3126
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #11
  br label %3161

3161:                                             ; preds = %3160
  br label %3162

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

3163:                                             ; No predecessors!
  br label %3164

3164:                                             ; preds = %3163
  br label %3165

3165:                                             ; preds = %3164, %3104
  br label %3166

3166:                                             ; preds = %3165
  br label %3167

3167:                                             ; preds = %3166
  br label %3168

3168:                                             ; preds = %3167
  %3169 = load i32, ptr @test_count, align 4, !tbaa !5
  %3170 = add nsw i32 %3169, 1
  store i32 %3170, ptr @test_count, align 4, !tbaa !5
  %3171 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 4
  %3172 = getelementptr inbounds %struct.s2n_blob, ptr %3171, i32 0, i32 1
  %3173 = load i32, ptr %3172, align 8, !tbaa !67
  %3174 = load i32, ptr %75, align 4, !tbaa !5
  %3175 = icmp eq i32 %3173, %3174
  br i1 %3175, label %3229, label %3176

3176:                                             ; preds = %3168
  br label %3177

3177:                                             ; preds = %3176
  br label %3178

3178:                                             ; preds = %3177
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #11
  %3179 = call ptr @__errno_location() #12
  %3180 = load i32, ptr %3179, align 4, !tbaa !5
  store i32 %3180, ptr %91, align 4, !tbaa !5
  %3181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3182 = call i32 @s2n_print_stacktrace(ptr noundef %3181)
  %3183 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3184 = trunc i8 %3183 to i1
  br i1 %3184, label %3185, label %3207

3185:                                             ; preds = %3178
  %3186 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3187 = call i32 @fileno(ptr noundef %3186) #11
  %3188 = call i32 @isatty(i32 noundef %3187) #11
  %3189 = icmp ne i32 %3188, 0
  br i1 %3189, label %3190, label %3207

3190:                                             ; preds = %3185
  %3191 = load i32, ptr %91, align 4, !tbaa !5
  %3192 = call ptr @__errno_location() #12
  store i32 %3191, ptr %3192, align 4, !tbaa !5
  %3193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3194 = load i32, ptr @test_count, align 4, !tbaa !5
  %3195 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3196 = load i32, ptr %3195, align 4, !tbaa !5
  %3197 = call ptr @s2n_strerror(i32 noundef %3196, ptr noundef @.str.4)
  %3198 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3199 = load i32, ptr %3198, align 4, !tbaa !5
  %3200 = call ptr @s2n_strerror_debug(i32 noundef %3199, ptr noundef @.str.4)
  %3201 = call ptr @__errno_location() #12
  %3202 = load i32, ptr %3201, align 4, !tbaa !5
  %3203 = call ptr @strerror(i32 noundef %3202) #11
  %3204 = call ptr @__errno_location() #12
  %3205 = load i32, ptr %3204, align 4, !tbaa !5
  %3206 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3193, ptr noundef @.str.2, i32 noundef %3194, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 230, ptr noundef %3197, ptr noundef %3200, ptr noundef %3203, i32 noundef %3205) #11
  br label %3224

3207:                                             ; preds = %3185, %3178
  %3208 = load i32, ptr %91, align 4, !tbaa !5
  %3209 = call ptr @__errno_location() #12
  store i32 %3208, ptr %3209, align 4, !tbaa !5
  %3210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3211 = load i32, ptr @test_count, align 4, !tbaa !5
  %3212 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3213 = load i32, ptr %3212, align 4, !tbaa !5
  %3214 = call ptr @s2n_strerror(i32 noundef %3213, ptr noundef @.str.4)
  %3215 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3216 = load i32, ptr %3215, align 4, !tbaa !5
  %3217 = call ptr @s2n_strerror_debug(i32 noundef %3216, ptr noundef @.str.4)
  %3218 = call ptr @__errno_location() #12
  %3219 = load i32, ptr %3218, align 4, !tbaa !5
  %3220 = call ptr @strerror(i32 noundef %3219) #11
  %3221 = call ptr @__errno_location() #12
  %3222 = load i32, ptr %3221, align 4, !tbaa !5
  %3223 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3210, ptr noundef @.str.5, i32 noundef %3211, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 230, ptr noundef %3214, ptr noundef %3217, ptr noundef %3220, i32 noundef %3222) #11
  br label %3224

3224:                                             ; preds = %3207, %3190
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #11
  br label %3225

3225:                                             ; preds = %3224
  br label %3226

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

3227:                                             ; No predecessors!
  br label %3228

3228:                                             ; preds = %3227
  br label %3229

3229:                                             ; preds = %3228, %3168
  br label %3230

3230:                                             ; preds = %3229
  br label %3231

3231:                                             ; preds = %3230
  br label %3232

3232:                                             ; preds = %3231
  %3233 = load i32, ptr @test_count, align 4, !tbaa !5
  %3234 = add nsw i32 %3233, 1
  store i32 %3234, ptr @test_count, align 4, !tbaa !5
  %3235 = getelementptr inbounds %struct.s2n_key_material, ptr %73, i32 0, i32 6
  %3236 = getelementptr inbounds %struct.s2n_blob, ptr %3235, i32 0, i32 1
  %3237 = load i32, ptr %3236, align 8, !tbaa !68
  %3238 = load i32, ptr %76, align 4, !tbaa !5
  %3239 = icmp eq i32 %3237, %3238
  br i1 %3239, label %3293, label %3240

3240:                                             ; preds = %3232
  br label %3241

3241:                                             ; preds = %3240
  br label %3242

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

3249:                                             ; preds = %3242
  %3250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3251 = call i32 @fileno(ptr noundef %3250) #11
  %3252 = call i32 @isatty(i32 noundef %3251) #11
  %3253 = icmp ne i32 %3252, 0
  br i1 %3253, label %3254, label %3271

3254:                                             ; preds = %3249
  %3255 = load i32, ptr %92, align 4, !tbaa !5
  %3256 = call ptr @__errno_location() #12
  store i32 %3255, ptr %3256, align 4, !tbaa !5
  %3257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3258 = load i32, ptr @test_count, align 4, !tbaa !5
  %3259 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3260 = load i32, ptr %3259, align 4, !tbaa !5
  %3261 = call ptr @s2n_strerror(i32 noundef %3260, ptr noundef @.str.4)
  %3262 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3263 = load i32, ptr %3262, align 4, !tbaa !5
  %3264 = call ptr @s2n_strerror_debug(i32 noundef %3263, ptr noundef @.str.4)
  %3265 = call ptr @__errno_location() #12
  %3266 = load i32, ptr %3265, align 4, !tbaa !5
  %3267 = call ptr @strerror(i32 noundef %3266) #11
  %3268 = call ptr @__errno_location() #12
  %3269 = load i32, ptr %3268, align 4, !tbaa !5
  %3270 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3257, ptr noundef @.str.2, i32 noundef %3258, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 231, ptr noundef %3261, ptr noundef %3264, ptr noundef %3267, i32 noundef %3269) #11
  br label %3288

3271:                                             ; preds = %3249, %3242
  %3272 = load i32, ptr %92, align 4, !tbaa !5
  %3273 = call ptr @__errno_location() #12
  store i32 %3272, ptr %3273, align 4, !tbaa !5
  %3274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3275 = load i32, ptr @test_count, align 4, !tbaa !5
  %3276 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3277 = load i32, ptr %3276, align 4, !tbaa !5
  %3278 = call ptr @s2n_strerror(i32 noundef %3277, ptr noundef @.str.4)
  %3279 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3280 = load i32, ptr %3279, align 4, !tbaa !5
  %3281 = call ptr @s2n_strerror_debug(i32 noundef %3280, ptr noundef @.str.4)
  %3282 = call ptr @__errno_location() #12
  %3283 = load i32, ptr %3282, align 4, !tbaa !5
  %3284 = call ptr @strerror(i32 noundef %3283) #11
  %3285 = call ptr @__errno_location() #12
  %3286 = load i32, ptr %3285, align 4, !tbaa !5
  %3287 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3274, ptr noundef @.str.5, i32 noundef %3275, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 231, ptr noundef %3278, ptr noundef %3281, ptr noundef %3284, i32 noundef %3286) #11
  br label %3288

3288:                                             ; preds = %3271, %3254
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #11
  br label %3289

3289:                                             ; preds = %3288
  br label %3290

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

3291:                                             ; No predecessors!
  br label %3292

3292:                                             ; preds = %3291
  br label %3293

3293:                                             ; preds = %3292, %3232
  br label %3294

3294:                                             ; preds = %3293
  br label %3295

3295:                                             ; preds = %3294
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #11
  call void @llvm.lifetime.end.p0(i64 304, ptr %73) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #11
  %3296 = call i32 @s2n_connection_ptr_free(ptr noundef %70)
  %3297 = getelementptr inbounds %struct.s2n_result, ptr %93, i32 0, i32 0
  store i32 %3296, ptr %3297, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  br label %3298

3298:                                             ; preds = %3295
  br label %3299

3299:                                             ; preds = %3298
  %3300 = call i32 @s2n_cleanup()
  %3301 = icmp eq i32 %3300, -1
  br i1 %3301, label %3302, label %3355

3302:                                             ; preds = %3299
  br label %3303

3303:                                             ; preds = %3302
  br label %3304

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

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

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

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

3350:                                             ; preds = %3333, %3316
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #11
  br label %3351

3351:                                             ; preds = %3350
  br label %3352

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

3353:                                             ; No predecessors!
  br label %3354

3354:                                             ; preds = %3353
  br label %3355

3355:                                             ; preds = %3354, %3299
  br label %3356

3356:                                             ; preds = %3355
  br label %3357

3357:                                             ; preds = %3356
  br label %3358

3358:                                             ; preds = %3357
  br label %3359

3359:                                             ; preds = %3358
  %3360 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %3361 = icmp eq i32 %3360, -1
  br i1 %3361, label %3362, label %3415

3362:                                             ; preds = %3359
  br label %3363

3363:                                             ; preds = %3362
  br label %3364

3364:                                             ; preds = %3363
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #11
  %3365 = call ptr @__errno_location() #12
  %3366 = load i32, ptr %3365, align 4, !tbaa !5
  store i32 %3366, ptr %95, 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) #11
  %3374 = call i32 @isatty(i32 noundef %3373) #11
  %3375 = icmp ne i32 %3374, 0
  br i1 %3375, label %3376, label %3393

3376:                                             ; preds = %3371
  %3377 = load i32, ptr %95, align 4, !tbaa !5
  %3378 = call ptr @__errno_location() #12
  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() #12
  %3388 = load i32, ptr %3387, align 4, !tbaa !5
  %3389 = call ptr @strerror(i32 noundef %3388) #11
  %3390 = call ptr @__errno_location() #12
  %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.30, ptr noundef @.str.1, i32 noundef 234, ptr noundef %3383, ptr noundef %3386, ptr noundef %3389, i32 noundef %3391) #11
  br label %3410

3393:                                             ; preds = %3371, %3364
  %3394 = load i32, ptr %95, align 4, !tbaa !5
  %3395 = call ptr @__errno_location() #12
  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() #12
  %3405 = load i32, ptr %3404, align 4, !tbaa !5
  %3406 = call ptr @strerror(i32 noundef %3405) #11
  %3407 = call ptr @__errno_location() #12
  %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.30, ptr noundef @.str.1, i32 noundef 234, ptr noundef %3400, ptr noundef %3403, ptr noundef %3406, i32 noundef %3408) #11
  br label %3410

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

3411:                                             ; preds = %3410
  br label %3412

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

3413:                                             ; No predecessors!
  br label %3414

3414:                                             ; preds = %3413
  br label %3415

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

3416:                                             ; preds = %3415
  br label %3417

3417:                                             ; preds = %3416
  %3418 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3419 = trunc i8 %3418 to i1
  br i1 %3419, label %3420, label %3436

3420:                                             ; preds = %3417
  %3421 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3422 = call i32 @fileno(ptr noundef %3421) #11
  %3423 = call i32 @isatty(i32 noundef %3422) #11
  %3424 = icmp ne i32 %3423, 0
  br i1 %3424, label %3425, label %3436

3425:                                             ; preds = %3420
  %3426 = load i32, ptr @test_count, align 4, !tbaa !5
  %3427 = icmp ne i32 %3426, 0
  br i1 %3427, label %3428, label %3432

3428:                                             ; preds = %3425
  %3429 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3430 = load i32, ptr @test_count, align 4, !tbaa !5
  %3431 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3429, ptr noundef @.str.31, i32 noundef %3430) #11
  br label %3435

3432:                                             ; preds = %3425
  %3433 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3434 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3433, ptr noundef @.str.32) #11
  br label %3435

3435:                                             ; preds = %3432, %3428
  br label %3447

3436:                                             ; preds = %3420, %3417
  %3437 = load i32, ptr @test_count, align 4, !tbaa !5
  %3438 = icmp ne i32 %3437, 0
  br i1 %3438, label %3439, label %3443

3439:                                             ; preds = %3436
  %3440 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3441 = load i32, ptr @test_count, align 4, !tbaa !5
  %3442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3440, ptr noundef @.str.33, i32 noundef %3441) #11
  br label %3446

3443:                                             ; preds = %3436
  %3444 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3445 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3444, ptr noundef @.str.34) #11
  br label %3446

3446:                                             ; preds = %3443, %3439
  br label %3447

3447:                                             ; preds = %3446, %3435
  store i32 0, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %3452

3448:                                             ; No predecessors!
  br label %3449

3449:                                             ; preds = %3448
  br label %3450

3450:                                             ; preds = %3449
  br label %3451

3451:                                             ; preds = %3450
  store i32 0, ptr %15, align 4
  br label %3452

3452:                                             ; preds = %3451, %3447, %1329, %1084
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 160, ptr %9) #11
  %3453 = load i32, ptr %15, align 4
  switch i32 %3453, label %3456 [
    i32 0, label %3454
    i32 1, label %3454
  ]

3454:                                             ; preds = %3452, %3452
  %3455 = load i32, ptr %3, align 4
  ret i32 %3455

3456:                                             ; preds = %3452
  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

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

declare i32 @s2n_get_public_random_data(ptr noundef) #2

declare ptr @s2n_connection_new(i32 noundef) #2

declare i32 @s2n_connection_ptr_free(ptr noundef) #2

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare i64 @llvm.expect.i64(i64, i64) #9

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

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

declare i32 @s2n_calculate_stacktrace() #2

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

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 = { nocallback nofree nosync nounwind willreturn memory(none) }
attributes #10 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { nounwind }
attributes #12 = { nounwind willreturn memory(none) }
attributes #13 = { noreturn nounwind }
attributes #14 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !7, i64 220}
!17 = !{!"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, !18, i64 160, !19, i64 168, !19, i64 176, !7, i64 184, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !7, i64 220, !7, i64 221, !7, i64 222, !10, i64 224, !10, i64 232, !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, !19, 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, !19, i64 2224, !7, i64 2232, !19, i64 2240, !19, i64 2248, !19, 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}
!18 = !{!"s2n_timer", !19, i64 0}
!19 = !{!"long", !7, 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, !6, i64 0}
!44 = !{!"s2n_cipher", !6, i64 0, !7, i64 8, !7, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96}
!45 = !{!46, !7, i64 0}
!46 = !{!"s2n_composite_cipher", !7, i64 0, !7, i64 1, !7, i64 2, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32}
!47 = !{!46, !7, i64 2}
!48 = !{!44, !7, i64 48}
!49 = !{!50, !10, i64 0}
!50 = !{!"s2n_record_algorithm", !10, i64 0, !6, i64 8, !6, i64 12, !19, i64 16}
!51 = !{!50, !6, i64 8}
!52 = !{!50, !6, i64 12}
!53 = !{!50, !19, i64 16}
!54 = !{!55, !10, i64 48}
!55 = !{!"s2n_cipher_suite", !6, i64 0, !10, i64 8, !10, i64 16, !7, i64 24, !10, i64 32, !6, i64 40, !10, i64 48, !7, i64 56, !7, i64 72, !10, i64 80, !10, i64 88, !6, i64 96, !7, i64 100}
!56 = !{!17, !10, i64 232}
!57 = !{!58, !10, i64 0}
!58 = !{!"s2n_crypto_parameters", !10, i64 0, !59, i64 8, !59, i64 16, !60, i64 24, !60, i64 456, !7, i64 888, !7, i64 904, !7, i64 920, !7, i64 928}
!59 = !{!"s2n_session_key", !10, i64 0}
!60 = !{!"s2n_hmac_state", !6, i64 0, !32, i64 4, !6, i64 8, !32, i64 12, !7, i64 14, !61, i64 16, !61, i64 72, !61, i64 128, !61, i64 184, !7, i64 240, !7, i64 368}
!61 = !{!"s2n_hash_state", !10, i64 0, !6, i64 8, !7, i64 12, !19, i64 16, !7, i64 24}
!62 = !{!63, !6, i64 168}
!63 = !{!"s2n_key_material", !7, i64 0, !26, i64 160, !26, i64 184, !26, i64 208, !26, i64 232, !26, i64 256, !26, i64 280}
!64 = !{!63, !6, i64 216}
!65 = !{!63, !6, i64 264}
!66 = !{!63, !6, i64 192}
!67 = !{!63, !6, i64 240}
!68 = !{!63, !6, i64 288}
!69 = !{!19, !19, i64 0}
!70 = !{!71, !10, i64 0}
!71 = !{!"s2n_debug_info", !10, i64 0, !10, i64 8}
!72 = !{!71, !10, i64 8}
!73 = distinct !{!73, !74}
!74 = !{!"llvm.loop.mustprogress"}
!75 = distinct !{!75, !74}
!76 = distinct !{!76, !74}
!77 = !{!78, !32, i64 0}
!78 = !{!"s2n_cipher_preferences", !32, i64 0, !10, i64 8, !12, i64 16}
!79 = !{!78, !10, i64 8}
!80 = distinct !{!80, !74}


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

%struct.s2n_debug_info = type { ptr, ptr }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_cipher = type { i32, %union.anon.0, i8, ptr, ptr, ptr, ptr, ptr, ptr }
%union.anon.0 = type { %struct.s2n_composite_cipher }
%struct.s2n_composite_cipher = type { i8, i8, i8, ptr, ptr, ptr, ptr }
%struct.s2n_record_algorithm = type { ptr, i32, i32, i64 }
%struct.s2n_key_material = type { [160 x i8], %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [84 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 [89 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [109 x i8], align 1
@_s2n_debug_info = external thread_local local_unnamed_addr global %struct.s2n_debug_info, align 8
@.str.18 = external hidden unnamed_addr constant [123 x i8], align 1
@cipher_preferences_test_all = external local_unnamed_addr constant %struct.s2n_cipher_preferences, align 8
@.str.19 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [184 x i8], align 1
@s2n_tls13_aes_128_gcm_sha256 = external global %struct.s2n_cipher_suite, align 8
@.str.21 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [51 x i8], align 1
@s2n_rsa_with_aes_128_cbc_sha256 = external global %struct.s2n_cipher_suite, align 8
@.str.28 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.34 = 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 [160 x i8], align 16
  %4 = alloca %struct.s2n_blob, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %struct.s2n_cipher, align 8
  %7 = alloca %struct.s2n_record_algorithm, align 8
  %8 = alloca %struct.s2n_cipher_suite, align 8
  %9 = alloca %struct.s2n_key_material, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.s2n_key_material, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %struct.s2n_key_material, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %struct.s2n_key_material, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %16 = load ptr, ptr @stdout, align 8, !tbaa !9
  %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %16, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #11
  %18 = load ptr, ptr @stdout, align 8, !tbaa !9
  %19 = tail call i32 @fflush(ptr noundef %18)
  %20 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #11
  %21 = icmp eq i32 %20, -1
  br i1 %21, label %22, label %46

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

29:                                               ; preds = %22
  %30 = load ptr, ptr @stderr, align 8, !tbaa !9
  %31 = tail call i32 @fileno(ptr noundef %30) #11
  %32 = tail call i32 @isatty(i32 noundef %31) #11
  %.not259 = icmp eq i32 %32, 0
  br i1 %.not259, label %33, label %34

33:                                               ; preds = %29, %22
  br label %34

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

46:                                               ; preds = %2
  %47 = load i32, ptr @test_count, align 4, !tbaa !5
  %48 = add nsw i32 %47, 1
  store i32 %48, ptr @test_count, align 4, !tbaa !5
  %49 = tail call i32 @s2n_enable_atexit() #11
  %50 = icmp eq i32 %49, -1
  br i1 %50, label %51, label %75

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

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

62:                                               ; preds = %58, %51
  br label %63

63:                                               ; preds = %58, %62
  %.str.5.sink337 = phi ptr [ @.str.5, %62 ], [ @.str.2, %58 ]
  store i32 %53, ptr %52, align 4, !tbaa !5
  %64 = load ptr, ptr @stderr, align 8, !tbaa !9
  %65 = load i32, ptr @test_count, align 4, !tbaa !5
  %66 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %67 = load i32, ptr %66, align 4, !tbaa !5
  %68 = tail call ptr @s2n_strerror(i32 noundef %67, ptr noundef nonnull @.str.4) #11
  %69 = load i32, ptr %66, align 4, !tbaa !5
  %70 = tail call ptr @s2n_strerror_debug(i32 noundef %69, ptr noundef nonnull @.str.4) #11
  %71 = load i32, ptr %52, align 4, !tbaa !5
  %72 = tail call ptr @strerror(i32 noundef %71) #11
  %73 = load i32, ptr %52, align 4, !tbaa !5
  %74 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %64, ptr noundef nonnull %.str.5.sink337, i32 noundef %65, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 64, ptr noundef %68, ptr noundef %70, ptr noundef %72, i32 noundef %73) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

75:                                               ; preds = %46
  %76 = tail call i32 @s2n_init() #11
  %77 = icmp eq i32 %76, -1
  br i1 %77, label %78, label %102

78:                                               ; preds = %75
  %79 = tail call ptr @__errno_location() #12
  %80 = load i32, ptr %79, align 4, !tbaa !5
  %81 = load ptr, ptr @stderr, align 8, !tbaa !9
  %82 = tail call i32 @s2n_print_stacktrace(ptr noundef %81) #11
  %83 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %84 = trunc nuw i8 %83 to i1
  br i1 %84, label %85, label %89

85:                                               ; preds = %78
  %86 = load ptr, ptr @stderr, align 8, !tbaa !9
  %87 = tail call i32 @fileno(ptr noundef %86) #11
  %88 = tail call i32 @isatty(i32 noundef %87) #11
  %.not257 = icmp eq i32 %88, 0
  br i1 %.not257, label %89, label %90

89:                                               ; preds = %85, %78
  br label %90

90:                                               ; preds = %85, %89
  %.str.5.sink348 = phi ptr [ @.str.5, %89 ], [ @.str.2, %85 ]
  store i32 %80, ptr %79, align 4, !tbaa !5
  %91 = load ptr, ptr @stderr, align 8, !tbaa !9
  %92 = load i32, ptr @test_count, align 4, !tbaa !5
  %93 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %94 = load i32, ptr %93, align 4, !tbaa !5
  %95 = tail call ptr @s2n_strerror(i32 noundef %94, ptr noundef nonnull @.str.4) #11
  %96 = load i32, ptr %93, align 4, !tbaa !5
  %97 = tail call ptr @s2n_strerror_debug(i32 noundef %96, ptr noundef nonnull @.str.4) #11
  %98 = load i32, ptr %79, align 4, !tbaa !5
  %99 = tail call ptr @strerror(i32 noundef %98) #11
  %100 = load i32, ptr %79, align 4, !tbaa !5
  %101 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %91, ptr noundef nonnull %.str.5.sink348, i32 noundef %92, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 64, ptr noundef %95, ptr noundef %97, ptr noundef %99, i32 noundef %100) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

102:                                              ; preds = %75
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %3) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(160) %3, i8 0, i64 160, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, i8 0, i64 24, i1 false)
  %103 = load i32, ptr @test_count, align 4, !tbaa !5
  %104 = add nsw i32 %103, 1
  store i32 %104, ptr @test_count, align 4, !tbaa !5
  %105 = call i32 @s2n_blob_init(ptr noundef nonnull %4, ptr noundef nonnull %3, i32 noundef 160) #11
  %106 = icmp eq i32 %105, -1
  br i1 %106, label %107, label %131

107:                                              ; preds = %102
  %108 = tail call ptr @__errno_location() #12
  %109 = load i32, ptr %108, align 4, !tbaa !5
  %110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %111 = call i32 @s2n_print_stacktrace(ptr noundef %110) #11
  %112 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %113 = trunc nuw i8 %112 to i1
  br i1 %113, label %114, label %118

114:                                              ; preds = %107
  %115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %116 = call i32 @fileno(ptr noundef %115) #11
  %117 = call i32 @isatty(i32 noundef %116) #11
  %.not256 = icmp eq i32 %117, 0
  br i1 %.not256, label %118, label %119

118:                                              ; preds = %114, %107
  br label %119

119:                                              ; preds = %114, %118
  %.str.5.sink359 = phi ptr [ @.str.5, %118 ], [ @.str.2, %114 ]
  store i32 %109, ptr %108, align 4, !tbaa !5
  %120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %121 = load i32, ptr @test_count, align 4, !tbaa !5
  %122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %123 = load i32, ptr %122, align 4, !tbaa !5
  %124 = call ptr @s2n_strerror(i32 noundef %123, ptr noundef nonnull @.str.4) #11
  %125 = load i32, ptr %122, align 4, !tbaa !5
  %126 = call ptr @s2n_strerror_debug(i32 noundef %125, ptr noundef nonnull @.str.4) #11
  %127 = load i32, ptr %108, align 4, !tbaa !5
  %128 = call ptr @strerror(i32 noundef %127) #11
  %129 = load i32, ptr %108, align 4, !tbaa !5
  %130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %120, ptr noundef nonnull %.str.5.sink359, i32 noundef %121, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef %124, ptr noundef %126, ptr noundef %128, i32 noundef %129) #13
  call void @exit(i32 noundef 1) #14
  unreachable

131:                                              ; preds = %102
  %132 = load i32, ptr @test_count, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr @test_count, align 4, !tbaa !5
  %134 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %4) #11
  %135 = call zeroext i1 @s2n_result_is_ok(i32 %134)
  br i1 %135, label %.preheader282, label %150

.preheader282:                                    ; preds = %131
  %136 = getelementptr inbounds i8, ptr %6, i64 8
  %137 = getelementptr inbounds i8, ptr %6, i64 10
  %138 = getelementptr inbounds i8, ptr %6, i64 48
  %139 = getelementptr inbounds i8, ptr %7, i64 8
  %140 = getelementptr inbounds i8, ptr %8, i64 48
  %141 = getelementptr inbounds i8, ptr %9, i64 168
  %142 = getelementptr inbounds i8, ptr %9, i64 216
  %143 = getelementptr inbounds i8, ptr %9, i64 264
  %144 = getelementptr inbounds i8, ptr %9, i64 192
  %145 = getelementptr inbounds i8, ptr %9, i64 240
  %146 = getelementptr inbounds i8, ptr %9, i64 288
  %147 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %148 = getelementptr inbounds i8, ptr %147, i64 8
  %149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  br label %.preheader281

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

157:                                              ; preds = %150
  %158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %159 = call i32 @fileno(ptr noundef %158) #11
  %160 = call i32 @isatty(i32 noundef %159) #11
  %.not = icmp eq i32 %160, 0
  br i1 %.not, label %161, label %162

161:                                              ; preds = %157, %150
  br label %162

162:                                              ; preds = %157, %161
  %.str.5.sink370 = phi ptr [ @.str.5, %161 ], [ @.str.2, %157 ]
  store i32 %152, ptr %151, align 4, !tbaa !5
  %163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %164 = load i32, ptr @test_count, align 4, !tbaa !5
  %165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = call ptr @s2n_strerror(i32 noundef %166, ptr noundef nonnull @.str.4) #11
  %168 = load i32, ptr %165, align 4, !tbaa !5
  %169 = call ptr @s2n_strerror_debug(i32 noundef %168, ptr noundef nonnull @.str.4) #11
  %170 = load i32, ptr %151, align 4, !tbaa !5
  %171 = call ptr @strerror(i32 noundef %170) #11
  %172 = load i32, ptr %151, align 4, !tbaa !5
  %173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %163, ptr noundef nonnull %.str.5.sink370, i32 noundef %164, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 70, ptr noundef %167, ptr noundef %169, ptr noundef %171, i32 noundef %172) #13
  call void @exit(i32 noundef 1) #14
  unreachable

.preheader281:                                    ; preds = %.preheader282, %.thread265
  %indvars.iv313 = phi i32 [ 0, %.preheader282 ], [ %indvars.iv.next314, %.thread265 ]
  %174 = phi i1 [ false, %.preheader282 ], [ %419, %.thread265 ]
  %175 = trunc nuw nsw i32 %indvars.iv313 to i8
  br label %.preheader280

.preheader280:                                    ; preds = %.preheader281, %412
  %indvars.iv309 = phi i32 [ 0, %.preheader281 ], [ %indvars.iv.next310, %412 ]
  %176 = add nuw nsw i32 %indvars.iv309, %indvars.iv313
  %177 = trunc nuw nsw i32 %indvars.iv309 to i8
  br label %178

178:                                              ; preds = %.preheader280, %411
  %indvars.iv = phi i32 [ 0, %.preheader280 ], [ %indvars.iv.next, %411 ]
  %179 = add nuw nsw i32 %176, %indvars.iv
  %180 = icmp ugt i32 %179, 80
  br i1 %180, label %411, label %181

181:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #11
  %182 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %182, ptr %5, align 8, !tbaa !9
  %183 = getelementptr inbounds i8, ptr %182, i64 220
  store i8 31, ptr %183, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %6) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %6, i8 0, i64 104, i1 false)
  store i32 3, ptr %6, align 8, !tbaa !42
  %184 = trunc nuw nsw i32 %indvars.iv to i8
  store i8 %184, ptr %136, align 8, !tbaa !44
  store i8 %175, ptr %137, align 2, !tbaa !46
  store i8 %177, ptr %138, align 8, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #11
  store ptr %6, ptr %7, align 8, !tbaa !48
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %139, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %8) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %8, i8 0, i64 104, i1 false)
  store ptr %7, ptr %140, align 8, !tbaa !50
  %185 = getelementptr inbounds i8, ptr %182, i64 232
  %186 = load ptr, ptr %185, align 8, !tbaa !52
  store ptr %8, ptr %186, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 304, ptr nonnull %9) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(304) %9, i8 0, i64 304, i1 false)
  %187 = load i32, ptr @test_count, align 4, !tbaa !5
  %188 = add nsw i32 %187, 1
  store i32 %188, ptr @test_count, align 4, !tbaa !5
  %189 = load ptr, ptr %5, align 8, !tbaa !9
  %190 = call i32 @s2n_key_material_init(ptr noundef nonnull %9, ptr noundef %189) #11
  %191 = call zeroext i1 @s2n_result_is_ok(i32 %190)
  br i1 %191, label %215, label %192

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

199:                                              ; preds = %192
  %200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %201 = call i32 @fileno(ptr noundef %200) #11
  %202 = call i32 @isatty(i32 noundef %201) #11
  %.not205 = icmp eq i32 %202, 0
  br i1 %.not205, label %203, label %204

203:                                              ; preds = %199, %192
  br label %204

204:                                              ; preds = %199, %203
  %.str.5.sink381 = phi ptr [ @.str.5, %203 ], [ @.str.2, %199 ]
  store i32 %194, ptr %193, align 4, !tbaa !5
  %205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %206 = load i32, ptr @test_count, align 4, !tbaa !5
  %207 = load i32, ptr %149, align 4, !tbaa !5
  %208 = call ptr @s2n_strerror(i32 noundef %207, ptr noundef nonnull @.str.4) #11
  %209 = load i32, ptr %149, align 4, !tbaa !5
  %210 = call ptr @s2n_strerror_debug(i32 noundef %209, ptr noundef nonnull @.str.4) #11
  %211 = load i32, ptr %193, align 4, !tbaa !5
  %212 = call ptr @strerror(i32 noundef %211) #11
  %213 = load i32, ptr %193, align 4, !tbaa !5
  %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %205, ptr noundef nonnull %.str.5.sink381, i32 noundef %206, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 106, ptr noundef %208, ptr noundef %210, ptr noundef %212, i32 noundef %213) #13
  call void @exit(i32 noundef 1) #14
  unreachable

215:                                              ; preds = %181
  %216 = load i32, ptr @test_count, align 4, !tbaa !5
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr @test_count, align 4, !tbaa !5
  %218 = load i32, ptr %141, align 8, !tbaa !58
  %219 = icmp eq i32 %218, %indvars.iv313
  br i1 %219, label %243, label %220

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

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

231:                                              ; preds = %227, %220
  br label %232

232:                                              ; preds = %227, %231
  %.str.5.sink390 = phi ptr [ @.str.5, %231 ], [ @.str.2, %227 ]
  store i32 %222, ptr %221, align 4, !tbaa !5
  %233 = load ptr, ptr @stderr, align 8, !tbaa !9
  %234 = load i32, ptr @test_count, align 4, !tbaa !5
  %235 = load i32, ptr %149, align 4, !tbaa !5
  %236 = call ptr @s2n_strerror(i32 noundef %235, ptr noundef nonnull @.str.4) #11
  %237 = load i32, ptr %149, align 4, !tbaa !5
  %238 = call ptr @s2n_strerror_debug(i32 noundef %237, ptr noundef nonnull @.str.4) #11
  %239 = load i32, ptr %221, align 4, !tbaa !5
  %240 = call ptr @strerror(i32 noundef %239) #11
  %241 = load i32, ptr %221, align 4, !tbaa !5
  %242 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %233, ptr noundef nonnull %.str.5.sink390, i32 noundef %234, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 109, ptr noundef %236, ptr noundef %238, ptr noundef %240, i32 noundef %241) #13
  call void @exit(i32 noundef 1) #14
  unreachable

243:                                              ; preds = %215
  %244 = add nsw i32 %216, 2
  store i32 %244, ptr @test_count, align 4, !tbaa !5
  %245 = load i32, ptr %142, align 8, !tbaa !60
  %246 = icmp eq i32 %245, %indvars.iv309
  br i1 %246, label %270, label %247

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

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

258:                                              ; preds = %254, %247
  br label %259

259:                                              ; preds = %254, %258
  %.str.5.sink399 = phi ptr [ @.str.5, %258 ], [ @.str.2, %254 ]
  store i32 %249, ptr %248, align 4, !tbaa !5
  %260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %261 = load i32, ptr @test_count, align 4, !tbaa !5
  %262 = load i32, ptr %149, align 4, !tbaa !5
  %263 = call ptr @s2n_strerror(i32 noundef %262, ptr noundef nonnull @.str.4) #11
  %264 = load i32, ptr %149, align 4, !tbaa !5
  %265 = call ptr @s2n_strerror_debug(i32 noundef %264, ptr noundef nonnull @.str.4) #11
  %266 = load i32, ptr %248, align 4, !tbaa !5
  %267 = call ptr @strerror(i32 noundef %266) #11
  %268 = load i32, ptr %248, align 4, !tbaa !5
  %269 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %260, ptr noundef nonnull %.str.5.sink399, i32 noundef %261, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 110, ptr noundef %263, ptr noundef %265, ptr noundef %267, i32 noundef %268) #13
  call void @exit(i32 noundef 1) #14
  unreachable

270:                                              ; preds = %243
  %271 = add nsw i32 %216, 3
  store i32 %271, ptr @test_count, align 4, !tbaa !5
  %272 = load i32, ptr %143, align 8, !tbaa !61
  %273 = icmp eq i32 %272, %indvars.iv
  br i1 %273, label %297, label %274

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

281:                                              ; preds = %274
  %282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %283 = call i32 @fileno(ptr noundef %282) #11
  %284 = call i32 @isatty(i32 noundef %283) #11
  %.not208 = icmp eq i32 %284, 0
  br i1 %.not208, label %285, label %286

285:                                              ; preds = %281, %274
  br label %286

286:                                              ; preds = %281, %285
  %.str.5.sink408 = phi ptr [ @.str.5, %285 ], [ @.str.2, %281 ]
  store i32 %276, ptr %275, align 4, !tbaa !5
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = load i32, ptr @test_count, align 4, !tbaa !5
  %289 = load i32, ptr %149, align 4, !tbaa !5
  %290 = call ptr @s2n_strerror(i32 noundef %289, ptr noundef nonnull @.str.4) #11
  %291 = load i32, ptr %149, align 4, !tbaa !5
  %292 = call ptr @s2n_strerror_debug(i32 noundef %291, ptr noundef nonnull @.str.4) #11
  %293 = load i32, ptr %275, align 4, !tbaa !5
  %294 = call ptr @strerror(i32 noundef %293) #11
  %295 = load i32, ptr %275, align 4, !tbaa !5
  %296 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %287, ptr noundef nonnull %.str.5.sink408, i32 noundef %288, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 111, ptr noundef %290, ptr noundef %292, ptr noundef %294, i32 noundef %295) #13
  call void @exit(i32 noundef 1) #14
  unreachable

297:                                              ; preds = %270
  %298 = add nsw i32 %216, 4
  store i32 %298, ptr @test_count, align 4, !tbaa !5
  %299 = load i32, ptr %144, align 8, !tbaa !62
  %300 = icmp eq i32 %299, %indvars.iv313
  br i1 %300, label %324, label %301

301:                                              ; preds = %297
  %302 = tail call ptr @__errno_location() #12
  %303 = load i32, ptr %302, align 4, !tbaa !5
  %304 = load ptr, ptr @stderr, align 8, !tbaa !9
  %305 = call i32 @s2n_print_stacktrace(ptr noundef %304) #11
  %306 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %307 = trunc nuw i8 %306 to i1
  br i1 %307, label %308, label %312

308:                                              ; preds = %301
  %309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %310 = call i32 @fileno(ptr noundef %309) #11
  %311 = call i32 @isatty(i32 noundef %310) #11
  %.not209 = icmp eq i32 %311, 0
  br i1 %.not209, label %312, label %313

312:                                              ; preds = %308, %301
  br label %313

313:                                              ; preds = %308, %312
  %.str.5.sink417 = phi ptr [ @.str.5, %312 ], [ @.str.2, %308 ]
  store i32 %303, ptr %302, align 4, !tbaa !5
  %314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %315 = load i32, ptr @test_count, align 4, !tbaa !5
  %316 = load i32, ptr %149, align 4, !tbaa !5
  %317 = call ptr @s2n_strerror(i32 noundef %316, ptr noundef nonnull @.str.4) #11
  %318 = load i32, ptr %149, align 4, !tbaa !5
  %319 = call ptr @s2n_strerror_debug(i32 noundef %318, ptr noundef nonnull @.str.4) #11
  %320 = load i32, ptr %302, align 4, !tbaa !5
  %321 = call ptr @strerror(i32 noundef %320) #11
  %322 = load i32, ptr %302, align 4, !tbaa !5
  %323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %314, ptr noundef nonnull %.str.5.sink417, i32 noundef %315, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 112, ptr noundef %317, ptr noundef %319, ptr noundef %321, i32 noundef %322) #13
  call void @exit(i32 noundef 1) #14
  unreachable

324:                                              ; preds = %297
  %325 = add nsw i32 %216, 5
  store i32 %325, ptr @test_count, align 4, !tbaa !5
  %326 = load i32, ptr %145, align 8, !tbaa !63
  %327 = icmp eq i32 %326, %indvars.iv309
  br i1 %327, label %351, label %328

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

335:                                              ; preds = %328
  %336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %337 = call i32 @fileno(ptr noundef %336) #11
  %338 = call i32 @isatty(i32 noundef %337) #11
  %.not210 = icmp eq i32 %338, 0
  br i1 %.not210, label %339, label %340

339:                                              ; preds = %335, %328
  br label %340

340:                                              ; preds = %335, %339
  %.str.5.sink426 = phi ptr [ @.str.5, %339 ], [ @.str.2, %335 ]
  store i32 %330, ptr %329, align 4, !tbaa !5
  %341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %342 = load i32, ptr @test_count, align 4, !tbaa !5
  %343 = load i32, ptr %149, align 4, !tbaa !5
  %344 = call ptr @s2n_strerror(i32 noundef %343, ptr noundef nonnull @.str.4) #11
  %345 = load i32, ptr %149, align 4, !tbaa !5
  %346 = call ptr @s2n_strerror_debug(i32 noundef %345, ptr noundef nonnull @.str.4) #11
  %347 = load i32, ptr %329, align 4, !tbaa !5
  %348 = call ptr @strerror(i32 noundef %347) #11
  %349 = load i32, ptr %329, align 4, !tbaa !5
  %350 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %341, ptr noundef nonnull %.str.5.sink426, i32 noundef %342, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 113, ptr noundef %344, ptr noundef %346, ptr noundef %348, i32 noundef %349) #13
  call void @exit(i32 noundef 1) #14
  unreachable

351:                                              ; preds = %324
  %352 = add nsw i32 %216, 6
  store i32 %352, ptr @test_count, align 4, !tbaa !5
  %353 = load i32, ptr %146, align 8, !tbaa !64
  %354 = icmp eq i32 %353, %indvars.iv
  br i1 %354, label %378, label %355

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

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

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

367:                                              ; preds = %362, %366
  %.str.5.sink435 = phi ptr [ @.str.5, %366 ], [ @.str.2, %362 ]
  store i32 %357, ptr %356, align 4, !tbaa !5
  %368 = load ptr, ptr @stderr, align 8, !tbaa !9
  %369 = load i32, ptr @test_count, align 4, !tbaa !5
  %370 = load i32, ptr %149, align 4, !tbaa !5
  %371 = call ptr @s2n_strerror(i32 noundef %370, ptr noundef nonnull @.str.4) #11
  %372 = load i32, ptr %149, align 4, !tbaa !5
  %373 = call ptr @s2n_strerror_debug(i32 noundef %372, ptr noundef nonnull @.str.4) #11
  %374 = load i32, ptr %356, align 4, !tbaa !5
  %375 = call ptr @strerror(i32 noundef %374) #11
  %376 = load i32, ptr %356, align 4, !tbaa !5
  %377 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %368, ptr noundef nonnull %.str.5.sink435, i32 noundef %369, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 114, ptr noundef %371, ptr noundef %373, ptr noundef %375, i32 noundef %376) #13
  call void @exit(i32 noundef 1) #14
  unreachable

378:                                              ; preds = %351
  %379 = add nsw i32 %216, 7
  store i32 %379, ptr @test_count, align 4, !tbaa !5
  %380 = call ptr @s2n_ensure_memmove_trace(ptr noundef nonnull %9, ptr noundef nonnull %3, i64 noundef 160) #11
  %.not212.not.not.not = icmp eq ptr %380, null
  br i1 %.not212.not.not.not, label %413, label %381

381:                                              ; preds = %378
  %382 = load i32, ptr @test_count, align 4, !tbaa !5
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr @test_count, align 4, !tbaa !5
  %384 = call i32 @s2n_test_validate_key_material(ptr noundef nonnull %9, ptr noundef nonnull %4, i8 noundef zeroext %175, i8 noundef zeroext %177, i8 noundef zeroext %184)
  %385 = call zeroext i1 @s2n_result_is_ok(i32 %384)
  br i1 %385, label %409, label %386

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

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

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

398:                                              ; preds = %393, %397
  %.str.5.sink444 = phi ptr [ @.str.5, %397 ], [ @.str.2, %393 ]
  store i32 %388, ptr %387, align 4, !tbaa !5
  %399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %400 = load i32, ptr @test_count, align 4, !tbaa !5
  %401 = load i32, ptr %149, align 4, !tbaa !5
  %402 = call ptr @s2n_strerror(i32 noundef %401, ptr noundef nonnull @.str.4) #11
  %403 = load i32, ptr %149, align 4, !tbaa !5
  %404 = call ptr @s2n_strerror_debug(i32 noundef %403, ptr noundef nonnull @.str.4) #11
  %405 = load i32, ptr %387, align 4, !tbaa !5
  %406 = call ptr @strerror(i32 noundef %405) #11
  %407 = load i32, ptr %387, align 4, !tbaa !5
  %408 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %399, ptr noundef nonnull %.str.5.sink444, i32 noundef %400, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 119, ptr noundef %402, ptr noundef %404, ptr noundef %406, i32 noundef %407) #13
  call void @exit(i32 noundef 1) #14
  unreachable

409:                                              ; preds = %381
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %6) #11
  %410 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  br label %411

411:                                              ; preds = %409, %178
  %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1
  %exitcond = icmp eq i32 %indvars.iv.next, 16
  br i1 %exitcond, label %412, label %178, !llvm.loop !65

412:                                              ; preds = %411
  %indvars.iv.next310 = add nuw nsw i32 %indvars.iv309, 1
  %exitcond312 = icmp eq i32 %indvars.iv.next310, 32
  br i1 %exitcond312, label %.thread265, label %.preheader280, !llvm.loop !67

413:                                              ; preds = %378
  store ptr @.str.17, ptr %147, align 8, !tbaa !68
  %414 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.17, i64 21), i32 noundef 47) #15
  %.not213 = icmp eq ptr %414, null
  %415 = getelementptr inbounds i8, ptr %414, i64 1
  %416 = select i1 %.not213, ptr getelementptr inbounds (i8, ptr @.str.17, i64 21), ptr %415
  store ptr %416, ptr %148, align 8, !tbaa !70
  store i32 402653193, ptr %149, align 4, !tbaa !5
  %417 = call i32 @s2n_calculate_stacktrace() #11
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %6) #11
  %418 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  br i1 %174, label %.preheader, label %1431

.thread265:                                       ; preds = %412
  %indvars.iv.next314 = add nuw nsw i32 %indvars.iv313, 1
  %419 = icmp ugt i32 %indvars.iv313, 62
  %exitcond315 = icmp eq i32 %indvars.iv.next314, 64
  br i1 %exitcond315, label %.loopexit, label %.preheader281, !llvm.loop !71

.loopexit:                                        ; preds = %.thread265
  br i1 %419, label %.preheader, label %1431

.preheader:                                       ; preds = %413, %.loopexit
  %420 = load i16, ptr @cipher_preferences_test_all, align 8, !tbaa !72
  %421 = zext i16 %420 to i64
  %.not220295.not = icmp eq i16 %420, 0
  br i1 %.not220295.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %422 = load ptr, ptr getelementptr inbounds (i8, ptr @cipher_preferences_test_all, i64 8), align 8
  %423 = getelementptr inbounds i8, ptr %11, i64 168
  %424 = getelementptr inbounds i8, ptr %11, i64 216
  %425 = getelementptr inbounds i8, ptr %11, i64 264
  br label %426

426:                                              ; preds = %.lr.ph, %509
  %.0196296 = phi i64 [ 0, %.lr.ph ], [ %510, %509 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  %427 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %427, ptr %10, align 8, !tbaa !9
  %428 = getelementptr inbounds ptr, ptr %422, i64 %.0196296
  %429 = load ptr, ptr %428, align 8, !tbaa !9
  %430 = load i8, ptr %429, align 8
  %431 = and i8 %430, 1
  %.not215 = icmp eq i8 %431, 0
  br i1 %.not215, label %.thread271, label %433

.thread271:                                       ; preds = %426
  %432 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  br label %509

433:                                              ; preds = %426
  %434 = getelementptr inbounds i8, ptr %427, i64 232
  %435 = load ptr, ptr %434, align 8, !tbaa !52
  store ptr %429, ptr %435, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 304, ptr nonnull %11) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(304) %11, i8 0, i64 304, i1 false)
  %436 = load i32, ptr @test_count, align 4, !tbaa !5
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr @test_count, align 4, !tbaa !5
  %438 = load ptr, ptr %10, align 8, !tbaa !9
  %439 = call i32 @s2n_key_material_init(ptr noundef nonnull %11, ptr noundef %438) #11
  %440 = call zeroext i1 @s2n_result_is_ok(i32 %439)
  br i1 %440, label %464, label %441

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

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

452:                                              ; preds = %448, %441
  br label %453

453:                                              ; preds = %448, %452
  %.str.5.sink453 = phi ptr [ @.str.5, %452 ], [ @.str.2, %448 ]
  store i32 %443, ptr %442, align 4, !tbaa !5
  %454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %455 = load i32, ptr @test_count, align 4, !tbaa !5
  %456 = load i32, ptr %149, align 4, !tbaa !5
  %457 = call ptr @s2n_strerror(i32 noundef %456, ptr noundef nonnull @.str.4) #11
  %458 = load i32, ptr %149, align 4, !tbaa !5
  %459 = call ptr @s2n_strerror_debug(i32 noundef %458, ptr noundef nonnull @.str.4) #11
  %460 = load i32, ptr %442, align 4, !tbaa !5
  %461 = call ptr @strerror(i32 noundef %460) #11
  %462 = load i32, ptr %442, align 4, !tbaa !5
  %463 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %454, ptr noundef nonnull %.str.5.sink453, i32 noundef %455, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 139, ptr noundef %457, ptr noundef %459, ptr noundef %461, i32 noundef %462) #13
  call void @exit(i32 noundef 1) #14
  unreachable

464:                                              ; preds = %433
  %465 = load i32, ptr @test_count, align 4, !tbaa !5
  %466 = add nsw i32 %465, 1
  store i32 %466, ptr @test_count, align 4, !tbaa !5
  %467 = call ptr @s2n_ensure_memmove_trace(ptr noundef nonnull %11, ptr noundef nonnull %3, i64 noundef 160) #11
  %.not217.not.not = icmp eq ptr %467, null
  br i1 %.not217.not.not, label %.thread278, label %473

.thread278:                                       ; preds = %464
  store ptr @.str.19, ptr %147, align 8, !tbaa !68
  %468 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.19, i64 21), i32 noundef 47) #15
  %.not218 = icmp eq ptr %468, null
  %469 = getelementptr inbounds i8, ptr %468, i64 1
  %470 = select i1 %.not218, ptr getelementptr inbounds (i8, ptr @.str.19, i64 21), ptr %469
  store ptr %470, ptr %148, align 8, !tbaa !70
  store i32 402653193, ptr %149, align 4, !tbaa !5
  %471 = call i32 @s2n_calculate_stacktrace() #11
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %11) #11
  %472 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  br label %1431

473:                                              ; preds = %464
  %474 = load i32, ptr @test_count, align 4, !tbaa !5
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr @test_count, align 4, !tbaa !5
  %476 = load i32, ptr %423, align 8, !tbaa !58
  %477 = trunc i32 %476 to i8
  %478 = load i32, ptr %424, align 8, !tbaa !60
  %479 = trunc i32 %478 to i8
  %480 = load i32, ptr %425, align 8, !tbaa !61
  %481 = trunc i32 %480 to i8
  %482 = call i32 @s2n_test_validate_key_material(ptr noundef nonnull %11, ptr noundef nonnull %4, i8 noundef zeroext %477, i8 noundef zeroext %479, i8 noundef zeroext %481)
  %483 = call zeroext i1 @s2n_result_is_ok(i32 %482)
  br i1 %483, label %507, label %484

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

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

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

496:                                              ; preds = %491, %495
  %.str.5.sink462 = phi ptr [ @.str.5, %495 ], [ @.str.2, %491 ]
  store i32 %486, ptr %485, align 4, !tbaa !5
  %497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %498 = load i32, ptr @test_count, align 4, !tbaa !5
  %499 = load i32, ptr %149, align 4, !tbaa !5
  %500 = call ptr @s2n_strerror(i32 noundef %499, ptr noundef nonnull @.str.4) #11
  %501 = load i32, ptr %149, align 4, !tbaa !5
  %502 = call ptr @s2n_strerror_debug(i32 noundef %501, ptr noundef nonnull @.str.4) #11
  %503 = load i32, ptr %485, align 4, !tbaa !5
  %504 = call ptr @strerror(i32 noundef %503) #11
  %505 = load i32, ptr %485, align 4, !tbaa !5
  %506 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %497, ptr noundef nonnull %.str.5.sink462, i32 noundef %498, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 150, ptr noundef %500, ptr noundef %502, ptr noundef %504, i32 noundef %505) #13
  call void @exit(i32 noundef 1) #14
  unreachable

507:                                              ; preds = %473
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %11) #11
  %508 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  br label %509

509:                                              ; preds = %507, %.thread271
  %510 = add nuw nsw i64 %.0196296, 1
  %exitcond316.not = icmp eq i64 %510, %421
  br i1 %exitcond316.not, label %._crit_edge, label %426, !llvm.loop !74

._crit_edge:                                      ; preds = %509, %.preheader
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  %511 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %511, ptr %12, align 8, !tbaa !9
  %512 = getelementptr inbounds i8, ptr %511, i64 232
  %513 = load ptr, ptr %512, align 8, !tbaa !52
  store ptr @s2n_tls13_aes_128_gcm_sha256, ptr %513, align 8, !tbaa !53
  %514 = load i32, ptr @test_count, align 4, !tbaa !5
  %515 = add nsw i32 %514, 1
  store i32 %515, ptr @test_count, align 4, !tbaa !5
  %516 = load ptr, ptr %12, align 8, !tbaa !9
  %517 = getelementptr inbounds i8, ptr %516, i64 232
  %518 = load ptr, ptr %517, align 8, !tbaa !52
  %519 = load ptr, ptr %518, align 8, !tbaa !53
  %520 = getelementptr inbounds i8, ptr %519, i64 48
  %521 = load ptr, ptr %520, align 8, !tbaa !50
  %522 = load ptr, ptr %521, align 8, !tbaa !48
  %523 = load i32, ptr %522, align 8, !tbaa !42
  %524 = icmp eq i32 %523, 2
  br i1 %524, label %548, label %525

525:                                              ; preds = %._crit_edge
  %526 = tail call ptr @__errno_location() #12
  %527 = load i32, ptr %526, align 4, !tbaa !5
  %528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %529 = call i32 @s2n_print_stacktrace(ptr noundef %528) #11
  %530 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %531 = trunc nuw i8 %530 to i1
  br i1 %531, label %532, label %536

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

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

537:                                              ; preds = %532, %536
  %.str.5.sink471 = phi ptr [ @.str.5, %536 ], [ @.str.2, %532 ]
  store i32 %527, ptr %526, align 4, !tbaa !5
  %538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %539 = load i32, ptr @test_count, align 4, !tbaa !5
  %540 = load i32, ptr %149, align 4, !tbaa !5
  %541 = call ptr @s2n_strerror(i32 noundef %540, ptr noundef nonnull @.str.4) #11
  %542 = load i32, ptr %149, align 4, !tbaa !5
  %543 = call ptr @s2n_strerror_debug(i32 noundef %542, ptr noundef nonnull @.str.4) #11
  %544 = load i32, ptr %526, align 4, !tbaa !5
  %545 = call ptr @strerror(i32 noundef %544) #11
  %546 = load i32, ptr %526, align 4, !tbaa !5
  %547 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %538, ptr noundef nonnull %.str.5.sink471, i32 noundef %539, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 161, ptr noundef %541, ptr noundef %543, ptr noundef %545, i32 noundef %546) #13
  call void @exit(i32 noundef 1) #14
  unreachable

548:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 304, ptr nonnull %13) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(304) %13, i8 0, i64 304, i1 false)
  %549 = getelementptr inbounds i8, ptr %516, i64 220
  store i8 31, ptr %549, align 4, !tbaa !15
  %550 = add nsw i32 %514, 2
  store i32 %550, ptr @test_count, align 4, !tbaa !5
  %551 = call i32 @s2n_key_material_init(ptr noundef nonnull %13, ptr noundef nonnull %516) #11
  %552 = call zeroext i1 @s2n_result_is_ok(i32 %551)
  br i1 %552, label %576, label %553

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

560:                                              ; preds = %553
  %561 = load ptr, ptr @stderr, align 8, !tbaa !9
  %562 = call i32 @fileno(ptr noundef %561) #11
  %563 = call i32 @isatty(i32 noundef %562) #11
  %.not222 = icmp eq i32 %563, 0
  br i1 %.not222, label %564, label %565

564:                                              ; preds = %560, %553
  br label %565

565:                                              ; preds = %560, %564
  %.str.5.sink480 = phi ptr [ @.str.5, %564 ], [ @.str.2, %560 ]
  store i32 %555, ptr %554, align 4, !tbaa !5
  %566 = load ptr, ptr @stderr, align 8, !tbaa !9
  %567 = load i32, ptr @test_count, align 4, !tbaa !5
  %568 = load i32, ptr %149, align 4, !tbaa !5
  %569 = call ptr @s2n_strerror(i32 noundef %568, ptr noundef nonnull @.str.4) #11
  %570 = load i32, ptr %149, align 4, !tbaa !5
  %571 = call ptr @s2n_strerror_debug(i32 noundef %570, ptr noundef nonnull @.str.4) #11
  %572 = load i32, ptr %554, align 4, !tbaa !5
  %573 = call ptr @strerror(i32 noundef %572) #11
  %574 = load i32, ptr %554, align 4, !tbaa !5
  %575 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %566, ptr noundef nonnull %.str.5.sink480, i32 noundef %567, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 171, ptr noundef %569, ptr noundef %571, ptr noundef %573, i32 noundef %574) #13
  call void @exit(i32 noundef 1) #14
  unreachable

576:                                              ; preds = %548
  %577 = load i32, ptr @test_count, align 4, !tbaa !5
  %578 = add nsw i32 %577, 1
  store i32 %578, ptr @test_count, align 4, !tbaa !5
  %579 = getelementptr inbounds i8, ptr %13, i64 168
  %580 = load i32, ptr %579, align 8, !tbaa !58
  %581 = icmp eq i32 %580, 0
  br i1 %581, label %605, label %582

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

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

593:                                              ; preds = %589, %582
  br label %594

594:                                              ; preds = %589, %593
  %.str.5.sink489 = phi ptr [ @.str.5, %593 ], [ @.str.2, %589 ]
  store i32 %584, ptr %583, align 4, !tbaa !5
  %595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %596 = load i32, ptr @test_count, align 4, !tbaa !5
  %597 = load i32, ptr %149, align 4, !tbaa !5
  %598 = call ptr @s2n_strerror(i32 noundef %597, ptr noundef nonnull @.str.4) #11
  %599 = load i32, ptr %149, align 4, !tbaa !5
  %600 = call ptr @s2n_strerror_debug(i32 noundef %599, ptr noundef nonnull @.str.4) #11
  %601 = load i32, ptr %583, align 4, !tbaa !5
  %602 = call ptr @strerror(i32 noundef %601) #11
  %603 = load i32, ptr %583, align 4, !tbaa !5
  %604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %595, ptr noundef nonnull %.str.5.sink489, i32 noundef %596, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 173, ptr noundef %598, ptr noundef %600, ptr noundef %602, i32 noundef %603) #13
  call void @exit(i32 noundef 1) #14
  unreachable

605:                                              ; preds = %576
  %606 = add nsw i32 %577, 2
  store i32 %606, ptr @test_count, align 4, !tbaa !5
  %607 = getelementptr inbounds i8, ptr %13, i64 216
  %608 = load i32, ptr %607, align 8, !tbaa !60
  %609 = icmp eq i32 %608, 16
  br i1 %609, label %633, label %610

610:                                              ; preds = %605
  %611 = tail call ptr @__errno_location() #12
  %612 = load i32, ptr %611, align 4, !tbaa !5
  %613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %614 = call i32 @s2n_print_stacktrace(ptr noundef %613) #11
  %615 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %616 = trunc nuw i8 %615 to i1
  br i1 %616, label %617, label %621

617:                                              ; preds = %610
  %618 = load ptr, ptr @stderr, align 8, !tbaa !9
  %619 = call i32 @fileno(ptr noundef %618) #11
  %620 = call i32 @isatty(i32 noundef %619) #11
  %.not224 = icmp eq i32 %620, 0
  br i1 %.not224, label %621, label %622

621:                                              ; preds = %617, %610
  br label %622

622:                                              ; preds = %617, %621
  %.str.5.sink498 = phi ptr [ @.str.5, %621 ], [ @.str.2, %617 ]
  store i32 %612, ptr %611, align 4, !tbaa !5
  %623 = load ptr, ptr @stderr, align 8, !tbaa !9
  %624 = load i32, ptr @test_count, align 4, !tbaa !5
  %625 = load i32, ptr %149, align 4, !tbaa !5
  %626 = call ptr @s2n_strerror(i32 noundef %625, ptr noundef nonnull @.str.4) #11
  %627 = load i32, ptr %149, align 4, !tbaa !5
  %628 = call ptr @s2n_strerror_debug(i32 noundef %627, ptr noundef nonnull @.str.4) #11
  %629 = load i32, ptr %611, align 4, !tbaa !5
  %630 = call ptr @strerror(i32 noundef %629) #11
  %631 = load i32, ptr %611, align 4, !tbaa !5
  %632 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %623, ptr noundef nonnull %.str.5.sink498, i32 noundef %624, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 174, ptr noundef %626, ptr noundef %628, ptr noundef %630, i32 noundef %631) #13
  call void @exit(i32 noundef 1) #14
  unreachable

633:                                              ; preds = %605
  %634 = add nsw i32 %577, 3
  store i32 %634, ptr @test_count, align 4, !tbaa !5
  %635 = getelementptr inbounds i8, ptr %13, i64 264
  %636 = load i32, ptr %635, align 8, !tbaa !61
  %637 = icmp eq i32 %636, 12
  br i1 %637, label %661, label %638

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

645:                                              ; preds = %638
  %646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %647 = call i32 @fileno(ptr noundef %646) #11
  %648 = call i32 @isatty(i32 noundef %647) #11
  %.not225 = icmp eq i32 %648, 0
  br i1 %.not225, label %649, label %650

649:                                              ; preds = %645, %638
  br label %650

650:                                              ; preds = %645, %649
  %.str.5.sink507 = phi ptr [ @.str.5, %649 ], [ @.str.2, %645 ]
  store i32 %640, ptr %639, align 4, !tbaa !5
  %651 = load ptr, ptr @stderr, align 8, !tbaa !9
  %652 = load i32, ptr @test_count, align 4, !tbaa !5
  %653 = load i32, ptr %149, align 4, !tbaa !5
  %654 = call ptr @s2n_strerror(i32 noundef %653, ptr noundef nonnull @.str.4) #11
  %655 = load i32, ptr %149, align 4, !tbaa !5
  %656 = call ptr @s2n_strerror_debug(i32 noundef %655, ptr noundef nonnull @.str.4) #11
  %657 = load i32, ptr %639, align 4, !tbaa !5
  %658 = call ptr @strerror(i32 noundef %657) #11
  %659 = load i32, ptr %639, align 4, !tbaa !5
  %660 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %651, ptr noundef nonnull %.str.5.sink507, i32 noundef %652, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 175, ptr noundef %654, ptr noundef %656, ptr noundef %658, i32 noundef %659) #13
  call void @exit(i32 noundef 1) #14
  unreachable

661:                                              ; preds = %633
  %662 = add nsw i32 %577, 4
  store i32 %662, ptr @test_count, align 4, !tbaa !5
  %663 = getelementptr inbounds i8, ptr %13, i64 192
  %664 = load i32, ptr %663, align 8, !tbaa !62
  %665 = icmp eq i32 %664, 0
  br i1 %665, label %689, label %666

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

673:                                              ; preds = %666
  %674 = load ptr, ptr @stderr, align 8, !tbaa !9
  %675 = call i32 @fileno(ptr noundef %674) #11
  %676 = call i32 @isatty(i32 noundef %675) #11
  %.not226 = icmp eq i32 %676, 0
  br i1 %.not226, label %677, label %678

677:                                              ; preds = %673, %666
  br label %678

678:                                              ; preds = %673, %677
  %.str.5.sink516 = phi ptr [ @.str.5, %677 ], [ @.str.2, %673 ]
  store i32 %668, ptr %667, align 4, !tbaa !5
  %679 = load ptr, ptr @stderr, align 8, !tbaa !9
  %680 = load i32, ptr @test_count, align 4, !tbaa !5
  %681 = load i32, ptr %149, align 4, !tbaa !5
  %682 = call ptr @s2n_strerror(i32 noundef %681, ptr noundef nonnull @.str.4) #11
  %683 = load i32, ptr %149, align 4, !tbaa !5
  %684 = call ptr @s2n_strerror_debug(i32 noundef %683, ptr noundef nonnull @.str.4) #11
  %685 = load i32, ptr %667, align 4, !tbaa !5
  %686 = call ptr @strerror(i32 noundef %685) #11
  %687 = load i32, ptr %667, align 4, !tbaa !5
  %688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %679, ptr noundef nonnull %.str.5.sink516, i32 noundef %680, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 176, ptr noundef %682, ptr noundef %684, ptr noundef %686, i32 noundef %687) #13
  call void @exit(i32 noundef 1) #14
  unreachable

689:                                              ; preds = %661
  %690 = add nsw i32 %577, 5
  store i32 %690, ptr @test_count, align 4, !tbaa !5
  %691 = getelementptr inbounds i8, ptr %13, i64 240
  %692 = load i32, ptr %691, align 8, !tbaa !63
  %693 = icmp eq i32 %692, 16
  br i1 %693, label %717, label %694

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

701:                                              ; preds = %694
  %702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %703 = call i32 @fileno(ptr noundef %702) #11
  %704 = call i32 @isatty(i32 noundef %703) #11
  %.not227 = icmp eq i32 %704, 0
  br i1 %.not227, label %705, label %706

705:                                              ; preds = %701, %694
  br label %706

706:                                              ; preds = %701, %705
  %.str.5.sink525 = phi ptr [ @.str.5, %705 ], [ @.str.2, %701 ]
  store i32 %696, ptr %695, align 4, !tbaa !5
  %707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %708 = load i32, ptr @test_count, align 4, !tbaa !5
  %709 = load i32, ptr %149, align 4, !tbaa !5
  %710 = call ptr @s2n_strerror(i32 noundef %709, ptr noundef nonnull @.str.4) #11
  %711 = load i32, ptr %149, align 4, !tbaa !5
  %712 = call ptr @s2n_strerror_debug(i32 noundef %711, ptr noundef nonnull @.str.4) #11
  %713 = load i32, ptr %695, align 4, !tbaa !5
  %714 = call ptr @strerror(i32 noundef %713) #11
  %715 = load i32, ptr %695, align 4, !tbaa !5
  %716 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %707, ptr noundef nonnull %.str.5.sink525, i32 noundef %708, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 177, ptr noundef %710, ptr noundef %712, ptr noundef %714, i32 noundef %715) #13
  call void @exit(i32 noundef 1) #14
  unreachable

717:                                              ; preds = %689
  %718 = add nsw i32 %577, 6
  store i32 %718, ptr @test_count, align 4, !tbaa !5
  %719 = getelementptr inbounds i8, ptr %13, i64 288
  %720 = load i32, ptr %719, align 8, !tbaa !64
  %721 = icmp eq i32 %720, 12
  br i1 %721, label %745, label %722

722:                                              ; preds = %717
  %723 = tail call ptr @__errno_location() #12
  %724 = load i32, ptr %723, align 4, !tbaa !5
  %725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %726 = call i32 @s2n_print_stacktrace(ptr noundef %725) #11
  %727 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %728 = trunc nuw i8 %727 to i1
  br i1 %728, label %729, label %733

729:                                              ; preds = %722
  %730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %731 = call i32 @fileno(ptr noundef %730) #11
  %732 = call i32 @isatty(i32 noundef %731) #11
  %.not228 = icmp eq i32 %732, 0
  br i1 %.not228, label %733, label %734

733:                                              ; preds = %729, %722
  br label %734

734:                                              ; preds = %729, %733
  %.str.5.sink534 = phi ptr [ @.str.5, %733 ], [ @.str.2, %729 ]
  store i32 %724, ptr %723, align 4, !tbaa !5
  %735 = load ptr, ptr @stderr, align 8, !tbaa !9
  %736 = load i32, ptr @test_count, align 4, !tbaa !5
  %737 = load i32, ptr %149, align 4, !tbaa !5
  %738 = call ptr @s2n_strerror(i32 noundef %737, ptr noundef nonnull @.str.4) #11
  %739 = load i32, ptr %149, align 4, !tbaa !5
  %740 = call ptr @s2n_strerror_debug(i32 noundef %739, ptr noundef nonnull @.str.4) #11
  %741 = load i32, ptr %723, align 4, !tbaa !5
  %742 = call ptr @strerror(i32 noundef %741) #11
  %743 = load i32, ptr %723, align 4, !tbaa !5
  %744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %735, ptr noundef nonnull %.str.5.sink534, i32 noundef %736, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 178, ptr noundef %738, ptr noundef %740, ptr noundef %742, i32 noundef %743) #13
  call void @exit(i32 noundef 1) #14
  unreachable

745:                                              ; preds = %717
  %746 = load ptr, ptr %12, align 8, !tbaa !9
  %747 = getelementptr inbounds i8, ptr %746, i64 220
  store i8 32, ptr %747, align 4, !tbaa !15
  %748 = add nsw i32 %577, 7
  store i32 %748, ptr @test_count, align 4, !tbaa !5
  %749 = call i32 @s2n_key_material_init(ptr noundef nonnull %13, ptr noundef %746) #11
  %750 = call zeroext i1 @s2n_result_is_ok(i32 %749)
  br i1 %750, label %774, label %751

751:                                              ; preds = %745
  %752 = tail call ptr @__errno_location() #12
  %753 = load i32, ptr %752, align 4, !tbaa !5
  %754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %755 = call i32 @s2n_print_stacktrace(ptr noundef %754) #11
  %756 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %757 = trunc nuw i8 %756 to i1
  br i1 %757, label %758, label %762

758:                                              ; preds = %751
  %759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %760 = call i32 @fileno(ptr noundef %759) #11
  %761 = call i32 @isatty(i32 noundef %760) #11
  %.not229 = icmp eq i32 %761, 0
  br i1 %.not229, label %762, label %763

762:                                              ; preds = %758, %751
  br label %763

763:                                              ; preds = %758, %762
  %.str.5.sink543 = phi ptr [ @.str.5, %762 ], [ @.str.2, %758 ]
  store i32 %753, ptr %752, align 4, !tbaa !5
  %764 = load ptr, ptr @stderr, align 8, !tbaa !9
  %765 = load i32, ptr @test_count, align 4, !tbaa !5
  %766 = load i32, ptr %149, align 4, !tbaa !5
  %767 = call ptr @s2n_strerror(i32 noundef %766, ptr noundef nonnull @.str.4) #11
  %768 = load i32, ptr %149, align 4, !tbaa !5
  %769 = call ptr @s2n_strerror_debug(i32 noundef %768, ptr noundef nonnull @.str.4) #11
  %770 = load i32, ptr %752, align 4, !tbaa !5
  %771 = call ptr @strerror(i32 noundef %770) #11
  %772 = load i32, ptr %752, align 4, !tbaa !5
  %773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %764, ptr noundef nonnull %.str.5.sink543, i32 noundef %765, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 182, ptr noundef %767, ptr noundef %769, ptr noundef %771, i32 noundef %772) #13
  call void @exit(i32 noundef 1) #14
  unreachable

774:                                              ; preds = %745
  %775 = load i32, ptr @test_count, align 4, !tbaa !5
  %776 = add nsw i32 %775, 1
  store i32 %776, ptr @test_count, align 4, !tbaa !5
  %777 = load i32, ptr %579, align 8, !tbaa !58
  %778 = icmp eq i32 %777, 0
  br i1 %778, label %802, label %779

779:                                              ; preds = %774
  %780 = tail call ptr @__errno_location() #12
  %781 = load i32, ptr %780, align 4, !tbaa !5
  %782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %783 = call i32 @s2n_print_stacktrace(ptr noundef %782) #11
  %784 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %785 = trunc nuw i8 %784 to i1
  br i1 %785, label %786, label %790

786:                                              ; preds = %779
  %787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %788 = call i32 @fileno(ptr noundef %787) #11
  %789 = call i32 @isatty(i32 noundef %788) #11
  %.not230 = icmp eq i32 %789, 0
  br i1 %.not230, label %790, label %791

790:                                              ; preds = %786, %779
  br label %791

791:                                              ; preds = %786, %790
  %.str.5.sink552 = phi ptr [ @.str.5, %790 ], [ @.str.2, %786 ]
  store i32 %781, ptr %780, align 4, !tbaa !5
  %792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %793 = load i32, ptr @test_count, align 4, !tbaa !5
  %794 = load i32, ptr %149, align 4, !tbaa !5
  %795 = call ptr @s2n_strerror(i32 noundef %794, ptr noundef nonnull @.str.4) #11
  %796 = load i32, ptr %149, align 4, !tbaa !5
  %797 = call ptr @s2n_strerror_debug(i32 noundef %796, ptr noundef nonnull @.str.4) #11
  %798 = load i32, ptr %780, align 4, !tbaa !5
  %799 = call ptr @strerror(i32 noundef %798) #11
  %800 = load i32, ptr %780, align 4, !tbaa !5
  %801 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %792, ptr noundef nonnull %.str.5.sink552, i32 noundef %793, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 184, ptr noundef %795, ptr noundef %797, ptr noundef %799, i32 noundef %800) #13
  call void @exit(i32 noundef 1) #14
  unreachable

802:                                              ; preds = %774
  %803 = add nsw i32 %775, 2
  store i32 %803, ptr @test_count, align 4, !tbaa !5
  %804 = load i32, ptr %607, align 8, !tbaa !60
  %805 = icmp eq i32 %804, 16
  br i1 %805, label %829, label %806

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

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

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

818:                                              ; preds = %813, %817
  %.str.5.sink561 = phi ptr [ @.str.5, %817 ], [ @.str.2, %813 ]
  store i32 %808, ptr %807, align 4, !tbaa !5
  %819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %820 = load i32, ptr @test_count, align 4, !tbaa !5
  %821 = load i32, ptr %149, align 4, !tbaa !5
  %822 = call ptr @s2n_strerror(i32 noundef %821, ptr noundef nonnull @.str.4) #11
  %823 = load i32, ptr %149, align 4, !tbaa !5
  %824 = call ptr @s2n_strerror_debug(i32 noundef %823, ptr noundef nonnull @.str.4) #11
  %825 = load i32, ptr %807, align 4, !tbaa !5
  %826 = call ptr @strerror(i32 noundef %825) #11
  %827 = load i32, ptr %807, align 4, !tbaa !5
  %828 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %819, ptr noundef nonnull %.str.5.sink561, i32 noundef %820, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 185, ptr noundef %822, ptr noundef %824, ptr noundef %826, i32 noundef %827) #13
  call void @exit(i32 noundef 1) #14
  unreachable

829:                                              ; preds = %802
  %830 = add nsw i32 %775, 3
  store i32 %830, ptr @test_count, align 4, !tbaa !5
  %831 = load i32, ptr %635, align 8, !tbaa !61
  %832 = icmp eq i32 %831, 12
  br i1 %832, label %856, label %833

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

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

844:                                              ; preds = %840, %833
  br label %845

845:                                              ; preds = %840, %844
  %.str.5.sink570 = phi ptr [ @.str.5, %844 ], [ @.str.2, %840 ]
  store i32 %835, ptr %834, align 4, !tbaa !5
  %846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %847 = load i32, ptr @test_count, align 4, !tbaa !5
  %848 = load i32, ptr %149, align 4, !tbaa !5
  %849 = call ptr @s2n_strerror(i32 noundef %848, ptr noundef nonnull @.str.4) #11
  %850 = load i32, ptr %149, align 4, !tbaa !5
  %851 = call ptr @s2n_strerror_debug(i32 noundef %850, ptr noundef nonnull @.str.4) #11
  %852 = load i32, ptr %834, align 4, !tbaa !5
  %853 = call ptr @strerror(i32 noundef %852) #11
  %854 = load i32, ptr %834, align 4, !tbaa !5
  %855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %846, ptr noundef nonnull %.str.5.sink570, i32 noundef %847, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 186, ptr noundef %849, ptr noundef %851, ptr noundef %853, i32 noundef %854) #13
  call void @exit(i32 noundef 1) #14
  unreachable

856:                                              ; preds = %829
  %857 = add nsw i32 %775, 4
  store i32 %857, ptr @test_count, align 4, !tbaa !5
  %858 = load i32, ptr %663, align 8, !tbaa !62
  %859 = icmp eq i32 %858, 0
  br i1 %859, label %883, label %860

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

867:                                              ; preds = %860
  %868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %869 = call i32 @fileno(ptr noundef %868) #11
  %870 = call i32 @isatty(i32 noundef %869) #11
  %.not233 = icmp eq i32 %870, 0
  br i1 %.not233, label %871, label %872

871:                                              ; preds = %867, %860
  br label %872

872:                                              ; preds = %867, %871
  %.str.5.sink579 = phi ptr [ @.str.5, %871 ], [ @.str.2, %867 ]
  store i32 %862, ptr %861, align 4, !tbaa !5
  %873 = load ptr, ptr @stderr, align 8, !tbaa !9
  %874 = load i32, ptr @test_count, align 4, !tbaa !5
  %875 = load i32, ptr %149, align 4, !tbaa !5
  %876 = call ptr @s2n_strerror(i32 noundef %875, ptr noundef nonnull @.str.4) #11
  %877 = load i32, ptr %149, align 4, !tbaa !5
  %878 = call ptr @s2n_strerror_debug(i32 noundef %877, ptr noundef nonnull @.str.4) #11
  %879 = load i32, ptr %861, align 4, !tbaa !5
  %880 = call ptr @strerror(i32 noundef %879) #11
  %881 = load i32, ptr %861, align 4, !tbaa !5
  %882 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %873, ptr noundef nonnull %.str.5.sink579, i32 noundef %874, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 187, ptr noundef %876, ptr noundef %878, ptr noundef %880, i32 noundef %881) #13
  call void @exit(i32 noundef 1) #14
  unreachable

883:                                              ; preds = %856
  %884 = add nsw i32 %775, 5
  store i32 %884, ptr @test_count, align 4, !tbaa !5
  %885 = load i32, ptr %691, align 8, !tbaa !63
  %886 = icmp eq i32 %885, 16
  br i1 %886, label %910, label %887

887:                                              ; preds = %883
  %888 = tail call ptr @__errno_location() #12
  %889 = load i32, ptr %888, align 4, !tbaa !5
  %890 = load ptr, ptr @stderr, align 8, !tbaa !9
  %891 = call i32 @s2n_print_stacktrace(ptr noundef %890) #11
  %892 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %893 = trunc nuw i8 %892 to i1
  br i1 %893, label %894, label %898

894:                                              ; preds = %887
  %895 = load ptr, ptr @stderr, align 8, !tbaa !9
  %896 = call i32 @fileno(ptr noundef %895) #11
  %897 = call i32 @isatty(i32 noundef %896) #11
  %.not234 = icmp eq i32 %897, 0
  br i1 %.not234, label %898, label %899

898:                                              ; preds = %894, %887
  br label %899

899:                                              ; preds = %894, %898
  %.str.5.sink588 = phi ptr [ @.str.5, %898 ], [ @.str.2, %894 ]
  store i32 %889, ptr %888, align 4, !tbaa !5
  %900 = load ptr, ptr @stderr, align 8, !tbaa !9
  %901 = load i32, ptr @test_count, align 4, !tbaa !5
  %902 = load i32, ptr %149, align 4, !tbaa !5
  %903 = call ptr @s2n_strerror(i32 noundef %902, ptr noundef nonnull @.str.4) #11
  %904 = load i32, ptr %149, align 4, !tbaa !5
  %905 = call ptr @s2n_strerror_debug(i32 noundef %904, ptr noundef nonnull @.str.4) #11
  %906 = load i32, ptr %888, align 4, !tbaa !5
  %907 = call ptr @strerror(i32 noundef %906) #11
  %908 = load i32, ptr %888, align 4, !tbaa !5
  %909 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %900, ptr noundef nonnull %.str.5.sink588, i32 noundef %901, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 188, ptr noundef %903, ptr noundef %905, ptr noundef %907, i32 noundef %908) #13
  call void @exit(i32 noundef 1) #14
  unreachable

910:                                              ; preds = %883
  %911 = add nsw i32 %775, 6
  store i32 %911, ptr @test_count, align 4, !tbaa !5
  %912 = load i32, ptr %719, align 8, !tbaa !64
  %913 = icmp eq i32 %912, 12
  br i1 %913, label %937, label %914

914:                                              ; preds = %910
  %915 = tail call ptr @__errno_location() #12
  %916 = load i32, ptr %915, align 4, !tbaa !5
  %917 = load ptr, ptr @stderr, align 8, !tbaa !9
  %918 = call i32 @s2n_print_stacktrace(ptr noundef %917) #11
  %919 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %920 = trunc nuw i8 %919 to i1
  br i1 %920, label %921, label %925

921:                                              ; preds = %914
  %922 = load ptr, ptr @stderr, align 8, !tbaa !9
  %923 = call i32 @fileno(ptr noundef %922) #11
  %924 = call i32 @isatty(i32 noundef %923) #11
  %.not235 = icmp eq i32 %924, 0
  br i1 %.not235, label %925, label %926

925:                                              ; preds = %921, %914
  br label %926

926:                                              ; preds = %921, %925
  %.str.5.sink597 = phi ptr [ @.str.5, %925 ], [ @.str.2, %921 ]
  store i32 %916, ptr %915, align 4, !tbaa !5
  %927 = load ptr, ptr @stderr, align 8, !tbaa !9
  %928 = load i32, ptr @test_count, align 4, !tbaa !5
  %929 = load i32, ptr %149, align 4, !tbaa !5
  %930 = call ptr @s2n_strerror(i32 noundef %929, ptr noundef nonnull @.str.4) #11
  %931 = load i32, ptr %149, align 4, !tbaa !5
  %932 = call ptr @s2n_strerror_debug(i32 noundef %931, ptr noundef nonnull @.str.4) #11
  %933 = load i32, ptr %915, align 4, !tbaa !5
  %934 = call ptr @strerror(i32 noundef %933) #11
  %935 = load i32, ptr %915, align 4, !tbaa !5
  %936 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %927, ptr noundef nonnull %.str.5.sink597, i32 noundef %928, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 189, ptr noundef %930, ptr noundef %932, ptr noundef %934, i32 noundef %935) #13
  call void @exit(i32 noundef 1) #14
  unreachable

937:                                              ; preds = %910
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %13) #11
  %938 = 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 %14) #11
  %939 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %939, ptr %14, align 8, !tbaa !9
  %940 = getelementptr inbounds i8, ptr %939, i64 232
  %941 = load ptr, ptr %940, align 8, !tbaa !52
  store ptr @s2n_rsa_with_aes_128_cbc_sha256, ptr %941, align 8, !tbaa !53
  %942 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_rsa_with_aes_128_cbc_sha256, i64 48), align 8, !tbaa !50
  %943 = load ptr, ptr %942, align 8, !tbaa !48
  %944 = load i32, ptr @test_count, align 4, !tbaa !5
  %945 = add nsw i32 %944, 1
  store i32 %945, ptr @test_count, align 4, !tbaa !5
  %946 = load i32, ptr %943, align 8, !tbaa !42
  switch i32 %946, label %947 [
    i32 3, label %970
    i32 1, label %970
  ]

947:                                              ; preds = %937
  %948 = tail call ptr @__errno_location() #12
  %949 = load i32, ptr %948, align 4, !tbaa !5
  %950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %951 = call i32 @s2n_print_stacktrace(ptr noundef %950) #11
  %952 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %953 = trunc nuw i8 %952 to i1
  br i1 %953, label %954, label %958

954:                                              ; preds = %947
  %955 = load ptr, ptr @stderr, align 8, !tbaa !9
  %956 = call i32 @fileno(ptr noundef %955) #11
  %957 = call i32 @isatty(i32 noundef %956) #11
  %.not236 = icmp eq i32 %957, 0
  br i1 %.not236, label %958, label %959

958:                                              ; preds = %954, %947
  br label %959

959:                                              ; preds = %954, %958
  %.str.5.sink606 = phi ptr [ @.str.5, %958 ], [ @.str.2, %954 ]
  store i32 %949, ptr %948, align 4, !tbaa !5
  %960 = load ptr, ptr @stderr, align 8, !tbaa !9
  %961 = load i32, ptr @test_count, align 4, !tbaa !5
  %962 = load i32, ptr %149, align 4, !tbaa !5
  %963 = call ptr @s2n_strerror(i32 noundef %962, ptr noundef nonnull @.str.4) #11
  %964 = load i32, ptr %149, align 4, !tbaa !5
  %965 = call ptr @s2n_strerror_debug(i32 noundef %964, ptr noundef nonnull @.str.4) #11
  %966 = load i32, ptr %948, align 4, !tbaa !5
  %967 = call ptr @strerror(i32 noundef %966) #11
  %968 = load i32, ptr %948, align 4, !tbaa !5
  %969 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %960, ptr noundef nonnull %.str.5.sink606, i32 noundef %961, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 202, ptr noundef %963, ptr noundef %965, ptr noundef %967, i32 noundef %968) #13
  call void @exit(i32 noundef 1) #14
  unreachable

970:                                              ; preds = %937, %937
  call void @llvm.lifetime.start.p0(i64 304, ptr nonnull %15) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(304) %15, i8 0, i64 304, i1 false)
  %971 = getelementptr inbounds i8, ptr %939, i64 220
  store i8 31, ptr %971, align 4, !tbaa !15
  %972 = add nsw i32 %944, 2
  store i32 %972, ptr @test_count, align 4, !tbaa !5
  %973 = call i32 @s2n_key_material_init(ptr noundef nonnull %15, ptr noundef nonnull %939) #11
  %974 = call zeroext i1 @s2n_result_is_ok(i32 %973)
  br i1 %974, label %998, label %975

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

982:                                              ; preds = %975
  %983 = load ptr, ptr @stderr, align 8, !tbaa !9
  %984 = call i32 @fileno(ptr noundef %983) #11
  %985 = call i32 @isatty(i32 noundef %984) #11
  %.not237 = icmp eq i32 %985, 0
  br i1 %.not237, label %986, label %987

986:                                              ; preds = %982, %975
  br label %987

987:                                              ; preds = %982, %986
  %.str.5.sink615 = phi ptr [ @.str.5, %986 ], [ @.str.2, %982 ]
  store i32 %977, ptr %976, align 4, !tbaa !5
  %988 = load ptr, ptr @stderr, align 8, !tbaa !9
  %989 = load i32, ptr @test_count, align 4, !tbaa !5
  %990 = load i32, ptr %149, align 4, !tbaa !5
  %991 = call ptr @s2n_strerror(i32 noundef %990, ptr noundef nonnull @.str.4) #11
  %992 = load i32, ptr %149, align 4, !tbaa !5
  %993 = call ptr @s2n_strerror_debug(i32 noundef %992, ptr noundef nonnull @.str.4) #11
  %994 = load i32, ptr %976, align 4, !tbaa !5
  %995 = call ptr @strerror(i32 noundef %994) #11
  %996 = load i32, ptr %976, align 4, !tbaa !5
  %997 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %988, ptr noundef nonnull %.str.5.sink615, i32 noundef %989, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 212, ptr noundef %991, ptr noundef %993, ptr noundef %995, i32 noundef %996) #13
  call void @exit(i32 noundef 1) #14
  unreachable

998:                                              ; preds = %970
  %999 = load i32, ptr @test_count, align 4, !tbaa !5
  %1000 = add nsw i32 %999, 1
  store i32 %1000, ptr @test_count, align 4, !tbaa !5
  %1001 = getelementptr inbounds i8, ptr %15, i64 168
  %1002 = load i32, ptr %1001, align 8, !tbaa !58
  %1003 = icmp eq i32 %1002, 32
  br i1 %1003, label %1027, label %1004

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

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

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

1016:                                             ; preds = %1011, %1015
  %.str.5.sink624 = phi ptr [ @.str.5, %1015 ], [ @.str.2, %1011 ]
  store i32 %1006, ptr %1005, align 4, !tbaa !5
  %1017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1018 = load i32, ptr @test_count, align 4, !tbaa !5
  %1019 = load i32, ptr %149, align 4, !tbaa !5
  %1020 = call ptr @s2n_strerror(i32 noundef %1019, ptr noundef nonnull @.str.4) #11
  %1021 = load i32, ptr %149, align 4, !tbaa !5
  %1022 = call ptr @s2n_strerror_debug(i32 noundef %1021, ptr noundef nonnull @.str.4) #11
  %1023 = load i32, ptr %1005, align 4, !tbaa !5
  %1024 = call ptr @strerror(i32 noundef %1023) #11
  %1025 = load i32, ptr %1005, align 4, !tbaa !5
  %1026 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1017, ptr noundef nonnull %.str.5.sink624, i32 noundef %1018, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 214, ptr noundef %1020, ptr noundef %1022, ptr noundef %1024, i32 noundef %1025) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1027:                                             ; preds = %998
  %1028 = add nsw i32 %999, 2
  store i32 %1028, ptr @test_count, align 4, !tbaa !5
  %1029 = getelementptr inbounds i8, ptr %15, i64 216
  %1030 = load i32, ptr %1029, align 8, !tbaa !60
  %1031 = icmp eq i32 %1030, 16
  br i1 %1031, label %1055, label %1032

1032:                                             ; preds = %1027
  %1033 = tail call ptr @__errno_location() #12
  %1034 = load i32, ptr %1033, align 4, !tbaa !5
  %1035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1036 = call i32 @s2n_print_stacktrace(ptr noundef %1035) #11
  %1037 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1038 = trunc nuw i8 %1037 to i1
  br i1 %1038, label %1039, label %1043

1039:                                             ; preds = %1032
  %1040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1041 = call i32 @fileno(ptr noundef %1040) #11
  %1042 = call i32 @isatty(i32 noundef %1041) #11
  %.not239 = icmp eq i32 %1042, 0
  br i1 %.not239, label %1043, label %1044

1043:                                             ; preds = %1039, %1032
  br label %1044

1044:                                             ; preds = %1039, %1043
  %.str.5.sink633 = phi ptr [ @.str.5, %1043 ], [ @.str.2, %1039 ]
  store i32 %1034, ptr %1033, align 4, !tbaa !5
  %1045 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1046 = load i32, ptr @test_count, align 4, !tbaa !5
  %1047 = load i32, ptr %149, align 4, !tbaa !5
  %1048 = call ptr @s2n_strerror(i32 noundef %1047, ptr noundef nonnull @.str.4) #11
  %1049 = load i32, ptr %149, align 4, !tbaa !5
  %1050 = call ptr @s2n_strerror_debug(i32 noundef %1049, ptr noundef nonnull @.str.4) #11
  %1051 = load i32, ptr %1033, align 4, !tbaa !5
  %1052 = call ptr @strerror(i32 noundef %1051) #11
  %1053 = load i32, ptr %1033, align 4, !tbaa !5
  %1054 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1045, ptr noundef nonnull %.str.5.sink633, i32 noundef %1046, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 215, ptr noundef %1048, ptr noundef %1050, ptr noundef %1052, i32 noundef %1053) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1055:                                             ; preds = %1027
  %1056 = add nsw i32 %999, 3
  store i32 %1056, ptr @test_count, align 4, !tbaa !5
  %1057 = getelementptr inbounds i8, ptr %15, i64 264
  %1058 = load i32, ptr %1057, align 8, !tbaa !61
  %1059 = icmp eq i32 %1058, 16
  br i1 %1059, label %1083, label %1060

1060:                                             ; preds = %1055
  %1061 = tail call ptr @__errno_location() #12
  %1062 = load i32, ptr %1061, align 4, !tbaa !5
  %1063 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1064 = call i32 @s2n_print_stacktrace(ptr noundef %1063) #11
  %1065 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1066 = trunc nuw i8 %1065 to i1
  br i1 %1066, label %1067, label %1071

1067:                                             ; preds = %1060
  %1068 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1069 = call i32 @fileno(ptr noundef %1068) #11
  %1070 = call i32 @isatty(i32 noundef %1069) #11
  %.not240 = icmp eq i32 %1070, 0
  br i1 %.not240, label %1071, label %1072

1071:                                             ; preds = %1067, %1060
  br label %1072

1072:                                             ; preds = %1067, %1071
  %.str.5.sink642 = phi ptr [ @.str.5, %1071 ], [ @.str.2, %1067 ]
  store i32 %1062, ptr %1061, align 4, !tbaa !5
  %1073 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1074 = load i32, ptr @test_count, align 4, !tbaa !5
  %1075 = load i32, ptr %149, align 4, !tbaa !5
  %1076 = call ptr @s2n_strerror(i32 noundef %1075, ptr noundef nonnull @.str.4) #11
  %1077 = load i32, ptr %149, align 4, !tbaa !5
  %1078 = call ptr @s2n_strerror_debug(i32 noundef %1077, ptr noundef nonnull @.str.4) #11
  %1079 = load i32, ptr %1061, align 4, !tbaa !5
  %1080 = call ptr @strerror(i32 noundef %1079) #11
  %1081 = load i32, ptr %1061, align 4, !tbaa !5
  %1082 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1073, ptr noundef nonnull %.str.5.sink642, i32 noundef %1074, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 216, ptr noundef %1076, ptr noundef %1078, ptr noundef %1080, i32 noundef %1081) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1083:                                             ; preds = %1055
  %1084 = add nsw i32 %999, 4
  store i32 %1084, ptr @test_count, align 4, !tbaa !5
  %1085 = getelementptr inbounds i8, ptr %15, i64 192
  %1086 = load i32, ptr %1085, align 8, !tbaa !62
  %1087 = icmp eq i32 %1086, 32
  br i1 %1087, label %1111, label %1088

1088:                                             ; preds = %1083
  %1089 = tail call ptr @__errno_location() #12
  %1090 = load i32, ptr %1089, align 4, !tbaa !5
  %1091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1092 = call i32 @s2n_print_stacktrace(ptr noundef %1091) #11
  %1093 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1094 = trunc nuw i8 %1093 to i1
  br i1 %1094, label %1095, label %1099

1095:                                             ; preds = %1088
  %1096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1097 = call i32 @fileno(ptr noundef %1096) #11
  %1098 = call i32 @isatty(i32 noundef %1097) #11
  %.not241 = icmp eq i32 %1098, 0
  br i1 %.not241, label %1099, label %1100

1099:                                             ; preds = %1095, %1088
  br label %1100

1100:                                             ; preds = %1095, %1099
  %.str.5.sink651 = phi ptr [ @.str.5, %1099 ], [ @.str.2, %1095 ]
  store i32 %1090, ptr %1089, align 4, !tbaa !5
  %1101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1102 = load i32, ptr @test_count, align 4, !tbaa !5
  %1103 = load i32, ptr %149, align 4, !tbaa !5
  %1104 = call ptr @s2n_strerror(i32 noundef %1103, ptr noundef nonnull @.str.4) #11
  %1105 = load i32, ptr %149, align 4, !tbaa !5
  %1106 = call ptr @s2n_strerror_debug(i32 noundef %1105, ptr noundef nonnull @.str.4) #11
  %1107 = load i32, ptr %1089, align 4, !tbaa !5
  %1108 = call ptr @strerror(i32 noundef %1107) #11
  %1109 = load i32, ptr %1089, align 4, !tbaa !5
  %1110 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1101, ptr noundef nonnull %.str.5.sink651, i32 noundef %1102, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 217, ptr noundef %1104, ptr noundef %1106, ptr noundef %1108, i32 noundef %1109) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1111:                                             ; preds = %1083
  %1112 = add nsw i32 %999, 5
  store i32 %1112, ptr @test_count, align 4, !tbaa !5
  %1113 = getelementptr inbounds i8, ptr %15, i64 240
  %1114 = load i32, ptr %1113, align 8, !tbaa !63
  %1115 = icmp eq i32 %1114, 16
  br i1 %1115, label %1139, label %1116

1116:                                             ; preds = %1111
  %1117 = tail call ptr @__errno_location() #12
  %1118 = load i32, ptr %1117, align 4, !tbaa !5
  %1119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1120 = call i32 @s2n_print_stacktrace(ptr noundef %1119) #11
  %1121 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1122 = trunc nuw i8 %1121 to i1
  br i1 %1122, label %1123, label %1127

1123:                                             ; preds = %1116
  %1124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1125 = call i32 @fileno(ptr noundef %1124) #11
  %1126 = call i32 @isatty(i32 noundef %1125) #11
  %.not242 = icmp eq i32 %1126, 0
  br i1 %.not242, label %1127, label %1128

1127:                                             ; preds = %1123, %1116
  br label %1128

1128:                                             ; preds = %1123, %1127
  %.str.5.sink660 = phi ptr [ @.str.5, %1127 ], [ @.str.2, %1123 ]
  store i32 %1118, ptr %1117, align 4, !tbaa !5
  %1129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1130 = load i32, ptr @test_count, align 4, !tbaa !5
  %1131 = load i32, ptr %149, align 4, !tbaa !5
  %1132 = call ptr @s2n_strerror(i32 noundef %1131, ptr noundef nonnull @.str.4) #11
  %1133 = load i32, ptr %149, align 4, !tbaa !5
  %1134 = call ptr @s2n_strerror_debug(i32 noundef %1133, ptr noundef nonnull @.str.4) #11
  %1135 = load i32, ptr %1117, align 4, !tbaa !5
  %1136 = call ptr @strerror(i32 noundef %1135) #11
  %1137 = load i32, ptr %1117, align 4, !tbaa !5
  %1138 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1129, ptr noundef nonnull %.str.5.sink660, i32 noundef %1130, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 218, ptr noundef %1132, ptr noundef %1134, ptr noundef %1136, i32 noundef %1137) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1139:                                             ; preds = %1111
  %1140 = add nsw i32 %999, 6
  store i32 %1140, ptr @test_count, align 4, !tbaa !5
  %1141 = getelementptr inbounds i8, ptr %15, i64 288
  %1142 = load i32, ptr %1141, align 8, !tbaa !64
  %1143 = icmp eq i32 %1142, 16
  br i1 %1143, label %1167, label %1144

1144:                                             ; preds = %1139
  %1145 = tail call ptr @__errno_location() #12
  %1146 = load i32, ptr %1145, align 4, !tbaa !5
  %1147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1148 = call i32 @s2n_print_stacktrace(ptr noundef %1147) #11
  %1149 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1150 = trunc nuw i8 %1149 to i1
  br i1 %1150, label %1151, label %1155

1151:                                             ; preds = %1144
  %1152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1153 = call i32 @fileno(ptr noundef %1152) #11
  %1154 = call i32 @isatty(i32 noundef %1153) #11
  %.not243 = icmp eq i32 %1154, 0
  br i1 %.not243, label %1155, label %1156

1155:                                             ; preds = %1151, %1144
  br label %1156

1156:                                             ; preds = %1151, %1155
  %.str.5.sink669 = phi ptr [ @.str.5, %1155 ], [ @.str.2, %1151 ]
  store i32 %1146, ptr %1145, align 4, !tbaa !5
  %1157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1158 = load i32, ptr @test_count, align 4, !tbaa !5
  %1159 = load i32, ptr %149, align 4, !tbaa !5
  %1160 = call ptr @s2n_strerror(i32 noundef %1159, ptr noundef nonnull @.str.4) #11
  %1161 = load i32, ptr %149, align 4, !tbaa !5
  %1162 = call ptr @s2n_strerror_debug(i32 noundef %1161, ptr noundef nonnull @.str.4) #11
  %1163 = load i32, ptr %1145, align 4, !tbaa !5
  %1164 = call ptr @strerror(i32 noundef %1163) #11
  %1165 = load i32, ptr %1145, align 4, !tbaa !5
  %1166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1157, ptr noundef nonnull %.str.5.sink669, i32 noundef %1158, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 219, ptr noundef %1160, ptr noundef %1162, ptr noundef %1164, i32 noundef %1165) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1167:                                             ; preds = %1139
  store i8 32, ptr %971, align 4, !tbaa !15
  %1168 = add nsw i32 %999, 7
  store i32 %1168, ptr @test_count, align 4, !tbaa !5
  %1169 = call i32 @s2n_key_material_init(ptr noundef nonnull %15, ptr noundef nonnull %939) #11
  %1170 = call zeroext i1 @s2n_result_is_ok(i32 %1169)
  br i1 %1170, label %1194, label %1171

1171:                                             ; preds = %1167
  %1172 = tail call ptr @__errno_location() #12
  %1173 = load i32, ptr %1172, align 4, !tbaa !5
  %1174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1175 = call i32 @s2n_print_stacktrace(ptr noundef %1174) #11
  %1176 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1177 = trunc nuw i8 %1176 to i1
  br i1 %1177, label %1178, label %1182

1178:                                             ; preds = %1171
  %1179 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1180 = call i32 @fileno(ptr noundef %1179) #11
  %1181 = call i32 @isatty(i32 noundef %1180) #11
  %.not244 = icmp eq i32 %1181, 0
  br i1 %.not244, label %1182, label %1183

1182:                                             ; preds = %1178, %1171
  br label %1183

1183:                                             ; preds = %1178, %1182
  %.str.5.sink678 = phi ptr [ @.str.5, %1182 ], [ @.str.2, %1178 ]
  store i32 %1173, ptr %1172, align 4, !tbaa !5
  %1184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1185 = load i32, ptr @test_count, align 4, !tbaa !5
  %1186 = load i32, ptr %149, align 4, !tbaa !5
  %1187 = call ptr @s2n_strerror(i32 noundef %1186, ptr noundef nonnull @.str.4) #11
  %1188 = load i32, ptr %149, align 4, !tbaa !5
  %1189 = call ptr @s2n_strerror_debug(i32 noundef %1188, ptr noundef nonnull @.str.4) #11
  %1190 = load i32, ptr %1172, align 4, !tbaa !5
  %1191 = call ptr @strerror(i32 noundef %1190) #11
  %1192 = load i32, ptr %1172, align 4, !tbaa !5
  %1193 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1184, ptr noundef nonnull %.str.5.sink678, i32 noundef %1185, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 223, ptr noundef %1187, ptr noundef %1189, ptr noundef %1191, i32 noundef %1192) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1194:                                             ; preds = %1167
  %1195 = load i32, ptr @test_count, align 4, !tbaa !5
  %1196 = add nsw i32 %1195, 1
  store i32 %1196, ptr @test_count, align 4, !tbaa !5
  %1197 = load i32, ptr %1001, align 8, !tbaa !58
  %1198 = icmp eq i32 %1197, 32
  br i1 %1198, label %1222, label %1199

1199:                                             ; preds = %1194
  %1200 = tail call ptr @__errno_location() #12
  %1201 = load i32, ptr %1200, align 4, !tbaa !5
  %1202 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1203 = call i32 @s2n_print_stacktrace(ptr noundef %1202) #11
  %1204 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1205 = trunc nuw i8 %1204 to i1
  br i1 %1205, label %1206, label %1210

1206:                                             ; preds = %1199
  %1207 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1208 = call i32 @fileno(ptr noundef %1207) #11
  %1209 = call i32 @isatty(i32 noundef %1208) #11
  %.not245 = icmp eq i32 %1209, 0
  br i1 %.not245, label %1210, label %1211

1210:                                             ; preds = %1206, %1199
  br label %1211

1211:                                             ; preds = %1206, %1210
  %.str.5.sink687 = phi ptr [ @.str.5, %1210 ], [ @.str.2, %1206 ]
  store i32 %1201, ptr %1200, align 4, !tbaa !5
  %1212 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1213 = load i32, ptr @test_count, align 4, !tbaa !5
  %1214 = load i32, ptr %149, align 4, !tbaa !5
  %1215 = call ptr @s2n_strerror(i32 noundef %1214, ptr noundef nonnull @.str.4) #11
  %1216 = load i32, ptr %149, align 4, !tbaa !5
  %1217 = call ptr @s2n_strerror_debug(i32 noundef %1216, ptr noundef nonnull @.str.4) #11
  %1218 = load i32, ptr %1200, align 4, !tbaa !5
  %1219 = call ptr @strerror(i32 noundef %1218) #11
  %1220 = load i32, ptr %1200, align 4, !tbaa !5
  %1221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1212, ptr noundef nonnull %.str.5.sink687, i32 noundef %1213, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 226, ptr noundef %1215, ptr noundef %1217, ptr noundef %1219, i32 noundef %1220) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1222:                                             ; preds = %1194
  %1223 = add nsw i32 %1195, 2
  store i32 %1223, ptr @test_count, align 4, !tbaa !5
  %1224 = load i32, ptr %1029, align 8, !tbaa !60
  %1225 = icmp eq i32 %1224, 16
  br i1 %1225, label %1249, label %1226

1226:                                             ; preds = %1222
  %1227 = tail call ptr @__errno_location() #12
  %1228 = load i32, ptr %1227, align 4, !tbaa !5
  %1229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1230 = call i32 @s2n_print_stacktrace(ptr noundef %1229) #11
  %1231 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1232 = trunc nuw i8 %1231 to i1
  br i1 %1232, label %1233, label %1237

1233:                                             ; preds = %1226
  %1234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1235 = call i32 @fileno(ptr noundef %1234) #11
  %1236 = call i32 @isatty(i32 noundef %1235) #11
  %.not246 = icmp eq i32 %1236, 0
  br i1 %.not246, label %1237, label %1238

1237:                                             ; preds = %1233, %1226
  br label %1238

1238:                                             ; preds = %1233, %1237
  %.str.5.sink696 = phi ptr [ @.str.5, %1237 ], [ @.str.2, %1233 ]
  store i32 %1228, ptr %1227, align 4, !tbaa !5
  %1239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1240 = load i32, ptr @test_count, align 4, !tbaa !5
  %1241 = load i32, ptr %149, align 4, !tbaa !5
  %1242 = call ptr @s2n_strerror(i32 noundef %1241, ptr noundef nonnull @.str.4) #11
  %1243 = load i32, ptr %149, align 4, !tbaa !5
  %1244 = call ptr @s2n_strerror_debug(i32 noundef %1243, ptr noundef nonnull @.str.4) #11
  %1245 = load i32, ptr %1227, align 4, !tbaa !5
  %1246 = call ptr @strerror(i32 noundef %1245) #11
  %1247 = load i32, ptr %1227, align 4, !tbaa !5
  %1248 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1239, ptr noundef nonnull %.str.5.sink696, i32 noundef %1240, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 227, ptr noundef %1242, ptr noundef %1244, ptr noundef %1246, i32 noundef %1247) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1249:                                             ; preds = %1222
  %1250 = add nsw i32 %1195, 3
  store i32 %1250, ptr @test_count, align 4, !tbaa !5
  %1251 = load i32, ptr %1057, align 8, !tbaa !61
  %1252 = icmp eq i32 %1251, 0
  br i1 %1252, label %1276, label %1253

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

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

1264:                                             ; preds = %1260, %1253
  br label %1265

1265:                                             ; preds = %1260, %1264
  %.str.5.sink705 = phi ptr [ @.str.5, %1264 ], [ @.str.2, %1260 ]
  store i32 %1255, ptr %1254, align 4, !tbaa !5
  %1266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1267 = load i32, ptr @test_count, align 4, !tbaa !5
  %1268 = load i32, ptr %149, align 4, !tbaa !5
  %1269 = call ptr @s2n_strerror(i32 noundef %1268, ptr noundef nonnull @.str.4) #11
  %1270 = load i32, ptr %149, align 4, !tbaa !5
  %1271 = call ptr @s2n_strerror_debug(i32 noundef %1270, ptr noundef nonnull @.str.4) #11
  %1272 = load i32, ptr %1254, align 4, !tbaa !5
  %1273 = call ptr @strerror(i32 noundef %1272) #11
  %1274 = load i32, ptr %1254, align 4, !tbaa !5
  %1275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1266, ptr noundef nonnull %.str.5.sink705, i32 noundef %1267, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 228, ptr noundef %1269, ptr noundef %1271, ptr noundef %1273, i32 noundef %1274) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1276:                                             ; preds = %1249
  %1277 = add nsw i32 %1195, 4
  store i32 %1277, ptr @test_count, align 4, !tbaa !5
  %1278 = load i32, ptr %1085, align 8, !tbaa !62
  %1279 = icmp eq i32 %1278, 32
  br i1 %1279, label %1303, label %1280

1280:                                             ; preds = %1276
  %1281 = tail call ptr @__errno_location() #12
  %1282 = load i32, ptr %1281, align 4, !tbaa !5
  %1283 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1284 = call i32 @s2n_print_stacktrace(ptr noundef %1283) #11
  %1285 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1286 = trunc nuw i8 %1285 to i1
  br i1 %1286, label %1287, label %1291

1287:                                             ; preds = %1280
  %1288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1289 = call i32 @fileno(ptr noundef %1288) #11
  %1290 = call i32 @isatty(i32 noundef %1289) #11
  %.not248 = icmp eq i32 %1290, 0
  br i1 %.not248, label %1291, label %1292

1291:                                             ; preds = %1287, %1280
  br label %1292

1292:                                             ; preds = %1287, %1291
  %.str.5.sink714 = phi ptr [ @.str.5, %1291 ], [ @.str.2, %1287 ]
  store i32 %1282, ptr %1281, align 4, !tbaa !5
  %1293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1294 = load i32, ptr @test_count, align 4, !tbaa !5
  %1295 = load i32, ptr %149, align 4, !tbaa !5
  %1296 = call ptr @s2n_strerror(i32 noundef %1295, ptr noundef nonnull @.str.4) #11
  %1297 = load i32, ptr %149, align 4, !tbaa !5
  %1298 = call ptr @s2n_strerror_debug(i32 noundef %1297, ptr noundef nonnull @.str.4) #11
  %1299 = load i32, ptr %1281, align 4, !tbaa !5
  %1300 = call ptr @strerror(i32 noundef %1299) #11
  %1301 = load i32, ptr %1281, align 4, !tbaa !5
  %1302 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1293, ptr noundef nonnull %.str.5.sink714, i32 noundef %1294, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 229, ptr noundef %1296, ptr noundef %1298, ptr noundef %1300, i32 noundef %1301) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1303:                                             ; preds = %1276
  %1304 = add nsw i32 %1195, 5
  store i32 %1304, ptr @test_count, align 4, !tbaa !5
  %1305 = load i32, ptr %1113, align 8, !tbaa !63
  %1306 = icmp eq i32 %1305, 16
  br i1 %1306, label %1330, label %1307

1307:                                             ; preds = %1303
  %1308 = tail call ptr @__errno_location() #12
  %1309 = load i32, ptr %1308, align 4, !tbaa !5
  %1310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1311 = call i32 @s2n_print_stacktrace(ptr noundef %1310) #11
  %1312 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1313 = trunc nuw i8 %1312 to i1
  br i1 %1313, label %1314, label %1318

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

1318:                                             ; preds = %1314, %1307
  br label %1319

1319:                                             ; preds = %1314, %1318
  %.str.5.sink723 = phi ptr [ @.str.5, %1318 ], [ @.str.2, %1314 ]
  store i32 %1309, ptr %1308, align 4, !tbaa !5
  %1320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1321 = load i32, ptr @test_count, align 4, !tbaa !5
  %1322 = load i32, ptr %149, align 4, !tbaa !5
  %1323 = call ptr @s2n_strerror(i32 noundef %1322, ptr noundef nonnull @.str.4) #11
  %1324 = load i32, ptr %149, align 4, !tbaa !5
  %1325 = call ptr @s2n_strerror_debug(i32 noundef %1324, ptr noundef nonnull @.str.4) #11
  %1326 = load i32, ptr %1308, align 4, !tbaa !5
  %1327 = call ptr @strerror(i32 noundef %1326) #11
  %1328 = load i32, ptr %1308, align 4, !tbaa !5
  %1329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1320, ptr noundef nonnull %.str.5.sink723, i32 noundef %1321, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 230, ptr noundef %1323, ptr noundef %1325, ptr noundef %1327, i32 noundef %1328) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1330:                                             ; preds = %1303
  %1331 = add nsw i32 %1195, 6
  store i32 %1331, ptr @test_count, align 4, !tbaa !5
  %1332 = load i32, ptr %1141, align 8, !tbaa !64
  %1333 = icmp eq i32 %1332, 0
  br i1 %1333, label %1357, label %1334

1334:                                             ; preds = %1330
  %1335 = tail call ptr @__errno_location() #12
  %1336 = load i32, ptr %1335, align 4, !tbaa !5
  %1337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1338 = call i32 @s2n_print_stacktrace(ptr noundef %1337) #11
  %1339 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1340 = trunc nuw i8 %1339 to i1
  br i1 %1340, label %1341, label %1345

1341:                                             ; preds = %1334
  %1342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1343 = call i32 @fileno(ptr noundef %1342) #11
  %1344 = call i32 @isatty(i32 noundef %1343) #11
  %.not250 = icmp eq i32 %1344, 0
  br i1 %.not250, label %1345, label %1346

1345:                                             ; preds = %1341, %1334
  br label %1346

1346:                                             ; preds = %1341, %1345
  %.str.5.sink732 = phi ptr [ @.str.5, %1345 ], [ @.str.2, %1341 ]
  store i32 %1336, ptr %1335, align 4, !tbaa !5
  %1347 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1348 = load i32, ptr @test_count, align 4, !tbaa !5
  %1349 = load i32, ptr %149, align 4, !tbaa !5
  %1350 = call ptr @s2n_strerror(i32 noundef %1349, ptr noundef nonnull @.str.4) #11
  %1351 = load i32, ptr %149, align 4, !tbaa !5
  %1352 = call ptr @s2n_strerror_debug(i32 noundef %1351, ptr noundef nonnull @.str.4) #11
  %1353 = load i32, ptr %1335, align 4, !tbaa !5
  %1354 = call ptr @strerror(i32 noundef %1353) #11
  %1355 = load i32, ptr %1335, align 4, !tbaa !5
  %1356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1347, ptr noundef nonnull %.str.5.sink732, i32 noundef %1348, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 231, ptr noundef %1350, ptr noundef %1352, ptr noundef %1354, i32 noundef %1355) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1357:                                             ; preds = %1330
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %15) #11
  %1358 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  %1359 = call i32 @s2n_cleanup() #11
  %1360 = icmp eq i32 %1359, -1
  br i1 %1360, label %1361, label %1384

1361:                                             ; preds = %1357
  %1362 = tail call ptr @__errno_location() #12
  %1363 = load i32, ptr %1362, align 4, !tbaa !5
  %1364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1365 = call i32 @s2n_print_stacktrace(ptr noundef %1364) #11
  %1366 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1367 = trunc nuw i8 %1366 to i1
  br i1 %1367, label %1368, label %1372

1368:                                             ; preds = %1361
  %1369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1370 = call i32 @fileno(ptr noundef %1369) #11
  %1371 = call i32 @isatty(i32 noundef %1370) #11
  %.not255 = icmp eq i32 %1371, 0
  br i1 %.not255, label %1372, label %1373

1372:                                             ; preds = %1368, %1361
  br label %1373

1373:                                             ; preds = %1368, %1372
  %.str.5.sink741 = phi ptr [ @.str.5, %1372 ], [ @.str.2, %1368 ]
  store i32 %1363, ptr %1362, align 4, !tbaa !5
  %1374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1375 = load i32, ptr @test_count, align 4, !tbaa !5
  %1376 = load i32, ptr %149, align 4, !tbaa !5
  %1377 = call ptr @s2n_strerror(i32 noundef %1376, ptr noundef nonnull @.str.4) #11
  %1378 = load i32, ptr %149, align 4, !tbaa !5
  %1379 = call ptr @s2n_strerror_debug(i32 noundef %1378, ptr noundef nonnull @.str.4) #11
  %1380 = load i32, ptr %1362, align 4, !tbaa !5
  %1381 = call ptr @strerror(i32 noundef %1380) #11
  %1382 = load i32, ptr %1362, align 4, !tbaa !5
  %1383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1374, ptr noundef nonnull %.str.5.sink741, i32 noundef %1375, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 234, ptr noundef %1377, ptr noundef %1379, ptr noundef %1381, i32 noundef %1382) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1384:                                             ; preds = %1357
  %1385 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #11
  %1386 = icmp eq i32 %1385, -1
  br i1 %1386, label %1387, label %1410

1387:                                             ; preds = %1384
  %1388 = tail call ptr @__errno_location() #12
  %1389 = load i32, ptr %1388, align 4, !tbaa !5
  %1390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1391 = call i32 @s2n_print_stacktrace(ptr noundef %1390) #11
  %1392 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1393 = trunc nuw i8 %1392 to i1
  br i1 %1393, label %1394, label %1398

1394:                                             ; preds = %1387
  %1395 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1396 = call i32 @fileno(ptr noundef %1395) #11
  %1397 = call i32 @isatty(i32 noundef %1396) #11
  %.not254 = icmp eq i32 %1397, 0
  br i1 %.not254, label %1398, label %1399

1398:                                             ; preds = %1394, %1387
  br label %1399

1399:                                             ; preds = %1394, %1398
  %.str.5.sink750 = phi ptr [ @.str.5, %1398 ], [ @.str.2, %1394 ]
  store i32 %1389, ptr %1388, align 4, !tbaa !5
  %1400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1401 = load i32, ptr @test_count, align 4, !tbaa !5
  %1402 = load i32, ptr %149, align 4, !tbaa !5
  %1403 = call ptr @s2n_strerror(i32 noundef %1402, ptr noundef nonnull @.str.4) #11
  %1404 = load i32, ptr %149, align 4, !tbaa !5
  %1405 = call ptr @s2n_strerror_debug(i32 noundef %1404, ptr noundef nonnull @.str.4) #11
  %1406 = load i32, ptr %1388, align 4, !tbaa !5
  %1407 = call ptr @strerror(i32 noundef %1406) #11
  %1408 = load i32, ptr %1388, align 4, !tbaa !5
  %1409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1400, ptr noundef nonnull %.str.5.sink750, i32 noundef %1401, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 234, ptr noundef %1403, ptr noundef %1405, ptr noundef %1407, i32 noundef %1408) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1410:                                             ; preds = %1384
  %1411 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1412 = trunc nuw i8 %1411 to i1
  br i1 %1412, label %1413, label %1424

1413:                                             ; preds = %1410
  %1414 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1415 = call i32 @fileno(ptr noundef %1414) #11
  %1416 = call i32 @isatty(i32 noundef %1415) #11
  %.not251 = icmp eq i32 %1416, 0
  br i1 %.not251, label %1424, label %1417

1417:                                             ; preds = %1413
  %1418 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not253 = icmp eq i32 %1418, 0
  %1419 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not253, label %1422, label %1420

1420:                                             ; preds = %1417
  %1421 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1419, ptr noundef nonnull @.str.31, i32 noundef %1418) #11
  br label %1431

1422:                                             ; preds = %1417
  %1423 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1419, ptr noundef nonnull @.str.32) #11
  br label %1431

1424:                                             ; preds = %1413, %1410
  %1425 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not252 = icmp eq i32 %1425, 0
  %1426 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not252, label %1429, label %1427

1427:                                             ; preds = %1424
  %1428 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1426, ptr noundef nonnull @.str.33, i32 noundef %1425) #11
  br label %1431

1429:                                             ; preds = %1424
  %1430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1426, ptr noundef nonnull @.str.34) #11
  br label %1431

1431:                                             ; preds = %413, %.thread278, %1422, %1420, %1429, %1427, %.loopexit
  %.16 = phi i32 [ 0, %.loopexit ], [ 0, %1427 ], [ 0, %1429 ], [ 0, %1420 ], [ 0, %1422 ], [ -1, %.thread278 ], [ -1, %413 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %3) #11
  ret i32 %.16
}

; 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

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

declare i32 @s2n_get_public_random_data(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_key_material_init(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s2n_calculate_stacktrace() local_unnamed_addr #2

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

declare i32 @s2n_cleanup() local_unnamed_addr #2

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


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