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

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

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

@s2n_use_color_in_output = external dso_local global i8, align 1
@s2n_errno = external thread_local global i32, align 4
@hello = external dso_local global [15 x i8], align 1
@s2n_tls13_aes_128_gcm_sha256 = external global %struct.s2n_cipher_suite, align 8
@test_count = external dso_local global i32, align 4
@stderr = external global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [137 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [159 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [137 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [159 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [197 x i8], align 1

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @s2n_cert_verify_connection_setup_and_send(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca %struct.s2n_result, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %struct.s2n_result, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %struct.s2n_result, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, 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
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  %29 = load ptr, ptr %11, align 8, !tbaa !5
  %30 = load ptr, ptr %8, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.s2n_connection, ptr %30, i32 0, i32 32
  %32 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %31, i32 0, i32 7
  store ptr %29, ptr %32, align 8, !tbaa !9
  %33 = load ptr, ptr %12, align 8, !tbaa !5
  %34 = load ptr, ptr %8, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.s2n_connection, ptr %34, i32 0, i32 32
  %36 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %35, i32 0, i32 5
  store ptr %33, ptr %36, align 8, !tbaa !38
  %37 = load ptr, ptr %12, align 8, !tbaa !5
  %38 = load ptr, ptr %8, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.s2n_connection, ptr %38, i32 0, i32 32
  %40 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %39, i32 0, i32 6
  store ptr %37, ptr %40, align 8, !tbaa !39
  %41 = load ptr, ptr %8, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.s2n_connection, ptr %41, i32 0, i32 27
  %43 = load ptr, ptr %42, align 8, !tbaa !40
  %44 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %43, i32 0, i32 0
  store ptr @s2n_tls13_aes_128_gcm_sha256, ptr %44, align 8, !tbaa !41
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.s2n_connection, ptr %45, i32 0, i32 23
  store i8 34, ptr %46, align 4, !tbaa !46
  br label %47

47:                                               ; preds = %6
  %48 = load i32, ptr @test_count, align 4, !tbaa !47
  %49 = add nsw i32 %48, 1
  store i32 %49, ptr @test_count, align 4, !tbaa !47
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = load ptr, ptr %10, align 8, !tbaa !5
  %52 = call i32 @s2n_connection_set_config(ptr noundef %50, ptr noundef %51)
  %53 = icmp eq i32 %52, -1
  br i1 %53, label %54, label %105

54:                                               ; preds = %47
  br label %55

55:                                               ; preds = %54
  br label %56

56:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %57 = call ptr @__errno_location() #9
  %58 = load i32, ptr %57, align 4, !tbaa !47
  store i32 %58, ptr %14, align 4, !tbaa !47
  %59 = load ptr, ptr @stderr, align 8, !tbaa !5
  %60 = call i32 @s2n_print_stacktrace(ptr noundef %59)
  %61 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %62 = trunc i8 %61 to i1
  br i1 %62, label %63, label %85

63:                                               ; preds = %56
  %64 = load ptr, ptr @stderr, align 8, !tbaa !5
  %65 = call i32 @fileno(ptr noundef %64) #8
  %66 = call i32 @isatty(i32 noundef %65) #8
  %67 = icmp ne i32 %66, 0
  br i1 %67, label %68, label %85

68:                                               ; preds = %63
  %69 = load i32, ptr %14, align 4, !tbaa !47
  %70 = call ptr @__errno_location() #9
  store i32 %69, ptr %70, align 4, !tbaa !47
  %71 = load ptr, ptr @stderr, align 8, !tbaa !5
  %72 = load i32, ptr @test_count, align 4, !tbaa !47
  %73 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %74 = load i32, ptr %73, align 4, !tbaa !47
  %75 = call ptr @s2n_strerror(i32 noundef %74, ptr noundef @.str.6)
  %76 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %77 = load i32, ptr %76, align 4, !tbaa !47
  %78 = call ptr @s2n_strerror_debug(i32 noundef %77, ptr noundef @.str.6)
  %79 = call ptr @__errno_location() #9
  %80 = load i32, ptr %79, align 4, !tbaa !47
  %81 = call ptr @strerror(i32 noundef %80) #8
  %82 = call ptr @__errno_location() #9
  %83 = load i32, ptr %82, align 4, !tbaa !47
  %84 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %71, ptr noundef @.str.3, i32 noundef %72, ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 63, ptr noundef %75, ptr noundef %78, ptr noundef %81, i32 noundef %83) #8
  br label %102

85:                                               ; preds = %63, %56
  %86 = load i32, ptr %14, align 4, !tbaa !47
  %87 = call ptr @__errno_location() #9
  store i32 %86, ptr %87, align 4, !tbaa !47
  %88 = load ptr, ptr @stderr, align 8, !tbaa !5
  %89 = load i32, ptr @test_count, align 4, !tbaa !47
  %90 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %91 = load i32, ptr %90, align 4, !tbaa !47
  %92 = call ptr @s2n_strerror(i32 noundef %91, ptr noundef @.str.6)
  %93 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %94 = load i32, ptr %93, align 4, !tbaa !47
  %95 = call ptr @s2n_strerror_debug(i32 noundef %94, ptr noundef @.str.6)
  %96 = call ptr @__errno_location() #9
  %97 = load i32, ptr %96, align 4, !tbaa !47
  %98 = call ptr @strerror(i32 noundef %97) #8
  %99 = call ptr @__errno_location() #9
  %100 = load i32, ptr %99, align 4, !tbaa !47
  %101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %88, ptr noundef @.str.7, i32 noundef %89, ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 63, ptr noundef %92, ptr noundef %95, ptr noundef %98, i32 noundef %100) #8
  br label %102

102:                                              ; preds = %85, %68
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %103

103:                                              ; preds = %102
  call void @exit(i32 noundef 1) #10
  unreachable

104:                                              ; No predecessors!
  br label %105

105:                                              ; preds = %104, %47
  br label %106

106:                                              ; preds = %105
  %107 = load ptr, ptr %9, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.s2n_connection, ptr %107, i32 0, i32 27
  %109 = load ptr, ptr %108, align 8, !tbaa !40
  %110 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %109, i32 0, i32 0
  store ptr @s2n_tls13_aes_128_gcm_sha256, ptr %110, align 8, !tbaa !41
  %111 = load ptr, ptr %9, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.s2n_connection, ptr %111, i32 0, i32 23
  store i8 34, ptr %112, align 4, !tbaa !46
  br label %113

113:                                              ; preds = %106
  %114 = load i32, ptr @test_count, align 4, !tbaa !47
  %115 = add nsw i32 %114, 1
  store i32 %115, ptr @test_count, align 4, !tbaa !47
  %116 = load ptr, ptr %9, align 8, !tbaa !5
  %117 = load ptr, ptr %10, align 8, !tbaa !5
  %118 = call i32 @s2n_connection_set_config(ptr noundef %116, ptr noundef %117)
  %119 = icmp eq i32 %118, -1
  br i1 %119, label %120, label %171

120:                                              ; preds = %113
  br label %121

121:                                              ; preds = %120
  br label %122

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  %123 = call ptr @__errno_location() #9
  %124 = load i32, ptr %123, align 4, !tbaa !47
  store i32 %124, ptr %15, align 4, !tbaa !47
  %125 = load ptr, ptr @stderr, align 8, !tbaa !5
  %126 = call i32 @s2n_print_stacktrace(ptr noundef %125)
  %127 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %128 = trunc i8 %127 to i1
  br i1 %128, label %129, label %151

129:                                              ; preds = %122
  %130 = load ptr, ptr @stderr, align 8, !tbaa !5
  %131 = call i32 @fileno(ptr noundef %130) #8
  %132 = call i32 @isatty(i32 noundef %131) #8
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %151

134:                                              ; preds = %129
  %135 = load i32, ptr %15, align 4, !tbaa !47
  %136 = call ptr @__errno_location() #9
  store i32 %135, ptr %136, align 4, !tbaa !47
  %137 = load ptr, ptr @stderr, align 8, !tbaa !5
  %138 = load i32, ptr @test_count, align 4, !tbaa !47
  %139 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %140 = load i32, ptr %139, align 4, !tbaa !47
  %141 = call ptr @s2n_strerror(i32 noundef %140, ptr noundef @.str.6)
  %142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %143 = load i32, ptr %142, align 4, !tbaa !47
  %144 = call ptr @s2n_strerror_debug(i32 noundef %143, ptr noundef @.str.6)
  %145 = call ptr @__errno_location() #9
  %146 = load i32, ptr %145, align 4, !tbaa !47
  %147 = call ptr @strerror(i32 noundef %146) #8
  %148 = call ptr @__errno_location() #9
  %149 = load i32, ptr %148, align 4, !tbaa !47
  %150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %137, ptr noundef @.str.3, i32 noundef %138, ptr noundef @.str.8, ptr noundef @.str.5, i32 noundef 67, ptr noundef %141, ptr noundef %144, ptr noundef %147, i32 noundef %149) #8
  br label %168

151:                                              ; preds = %129, %122
  %152 = load i32, ptr %15, align 4, !tbaa !47
  %153 = call ptr @__errno_location() #9
  store i32 %152, ptr %153, align 4, !tbaa !47
  %154 = load ptr, ptr @stderr, align 8, !tbaa !5
  %155 = load i32, ptr @test_count, align 4, !tbaa !47
  %156 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %157 = load i32, ptr %156, align 4, !tbaa !47
  %158 = call ptr @s2n_strerror(i32 noundef %157, ptr noundef @.str.6)
  %159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %160 = load i32, ptr %159, align 4, !tbaa !47
  %161 = call ptr @s2n_strerror_debug(i32 noundef %160, ptr noundef @.str.6)
  %162 = call ptr @__errno_location() #9
  %163 = load i32, ptr %162, align 4, !tbaa !47
  %164 = call ptr @strerror(i32 noundef %163) #8
  %165 = call ptr @__errno_location() #9
  %166 = load i32, ptr %165, align 4, !tbaa !47
  %167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %154, ptr noundef @.str.7, i32 noundef %155, ptr noundef @.str.8, ptr noundef @.str.5, i32 noundef 67, ptr noundef %158, ptr noundef %161, ptr noundef %164, i32 noundef %166) #8
  br label %168

168:                                              ; preds = %151, %134
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %169

169:                                              ; preds = %168
  call void @exit(i32 noundef 1) #10
  unreachable

170:                                              ; No predecessors!
  br label %171

171:                                              ; preds = %170, %113
  br label %172

172:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !47
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.s2n_connection, ptr %173, i32 0, i32 13
  %175 = load i32, ptr %174, align 4, !tbaa !51
  %176 = icmp eq i32 %175, 1
  br i1 %176, label %177, label %316

177:                                              ; preds = %172
  br label %178

178:                                              ; preds = %177
  %179 = load i32, ptr @test_count, align 4, !tbaa !47
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr @test_count, align 4, !tbaa !47
  %181 = load ptr, ptr %9, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.s2n_connection, ptr %181, i32 0, i32 32
  %183 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %182, i32 0, i32 0
  %184 = load ptr, ptr %13, align 8, !tbaa !5
  %185 = call i32 @s2n_asn1der_to_public_key_and_type(ptr noundef %183, ptr noundef %16, ptr noundef %184)
  %186 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  store i32 %185, ptr %186, align 4
  %187 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  %188 = load i32, ptr %187, align 4
  %189 = call zeroext i1 @s2n_result_is_ok(i32 %188)
  br i1 %189, label %243, label %190

190:                                              ; preds = %178
  br label %191

191:                                              ; preds = %190
  br label %192

192:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %193 = call ptr @__errno_location() #9
  %194 = load i32, ptr %193, align 4, !tbaa !47
  store i32 %194, ptr %18, align 4, !tbaa !47
  %195 = load ptr, ptr @stderr, align 8, !tbaa !5
  %196 = call i32 @s2n_print_stacktrace(ptr noundef %195)
  %197 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %198 = trunc i8 %197 to i1
  br i1 %198, label %199, label %221

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

204:                                              ; preds = %199
  %205 = load i32, ptr %18, align 4, !tbaa !47
  %206 = call ptr @__errno_location() #9
  store i32 %205, ptr %206, align 4, !tbaa !47
  %207 = load ptr, ptr @stderr, align 8, !tbaa !5
  %208 = load i32, ptr @test_count, align 4, !tbaa !47
  %209 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %210 = load i32, ptr %209, align 4, !tbaa !47
  %211 = call ptr @s2n_strerror(i32 noundef %210, ptr noundef @.str.6)
  %212 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %213 = load i32, ptr %212, align 4, !tbaa !47
  %214 = call ptr @s2n_strerror_debug(i32 noundef %213, ptr noundef @.str.6)
  %215 = call ptr @__errno_location() #9
  %216 = load i32, ptr %215, align 4, !tbaa !47
  %217 = call ptr @strerror(i32 noundef %216) #8
  %218 = call ptr @__errno_location() #9
  %219 = load i32, ptr %218, align 4, !tbaa !47
  %220 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %207, ptr noundef @.str.3, i32 noundef %208, ptr noundef @.str.9, ptr noundef @.str.5, i32 noundef 72, ptr noundef %211, ptr noundef %214, ptr noundef %217, i32 noundef %219) #8
  br label %238

221:                                              ; preds = %199, %192
  %222 = load i32, ptr %18, align 4, !tbaa !47
  %223 = call ptr @__errno_location() #9
  store i32 %222, ptr %223, align 4, !tbaa !47
  %224 = load ptr, ptr @stderr, align 8, !tbaa !5
  %225 = load i32, ptr @test_count, align 4, !tbaa !47
  %226 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %227 = load i32, ptr %226, align 4, !tbaa !47
  %228 = call ptr @s2n_strerror(i32 noundef %227, ptr noundef @.str.6)
  %229 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %230 = load i32, ptr %229, align 4, !tbaa !47
  %231 = call ptr @s2n_strerror_debug(i32 noundef %230, ptr noundef @.str.6)
  %232 = call ptr @__errno_location() #9
  %233 = load i32, ptr %232, align 4, !tbaa !47
  %234 = call ptr @strerror(i32 noundef %233) #8
  %235 = call ptr @__errno_location() #9
  %236 = load i32, ptr %235, align 4, !tbaa !47
  %237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %224, ptr noundef @.str.7, i32 noundef %225, ptr noundef @.str.9, ptr noundef @.str.5, i32 noundef 72, ptr noundef %228, ptr noundef %231, ptr noundef %234, i32 noundef %236) #8
  br label %238

238:                                              ; preds = %221, %204
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %239

239:                                              ; preds = %238
  br label %240

240:                                              ; preds = %239
  call void @exit(i32 noundef 1) #10
  unreachable

241:                                              ; No predecessors!
  br label %242

242:                                              ; preds = %241
  br label %243

243:                                              ; preds = %242, %178
  br label %244

244:                                              ; preds = %243
  br label %245

245:                                              ; preds = %244
  br label %246

246:                                              ; preds = %245
  %247 = load i32, ptr @test_count, align 4, !tbaa !47
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr @test_count, align 4, !tbaa !47
  %249 = load ptr, ptr %9, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.s2n_connection, ptr %249, i32 0, i32 32
  %251 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %250, i32 0, i32 0
  %252 = load ptr, ptr %8, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.s2n_connection, ptr %252, i32 0, i32 32
  %254 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %253, i32 0, i32 7
  %255 = load ptr, ptr %254, align 8, !tbaa !9
  %256 = getelementptr inbounds %struct.s2n_cert_chain_and_key, ptr %255, i32 0, i32 1
  %257 = load ptr, ptr %256, align 8, !tbaa !52
  %258 = call i32 @s2n_pkey_match(ptr noundef %251, ptr noundef %257)
  %259 = icmp eq i32 %258, -1
  br i1 %259, label %260, label %313

260:                                              ; preds = %246
  br label %261

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  %263 = call ptr @__errno_location() #9
  %264 = load i32, ptr %263, align 4, !tbaa !47
  store i32 %264, ptr %19, align 4, !tbaa !47
  %265 = load ptr, ptr @stderr, align 8, !tbaa !5
  %266 = call i32 @s2n_print_stacktrace(ptr noundef %265)
  %267 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %268 = trunc i8 %267 to i1
  br i1 %268, label %269, label %291

269:                                              ; preds = %262
  %270 = load ptr, ptr @stderr, align 8, !tbaa !5
  %271 = call i32 @fileno(ptr noundef %270) #8
  %272 = call i32 @isatty(i32 noundef %271) #8
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %274, label %291

274:                                              ; preds = %269
  %275 = load i32, ptr %19, align 4, !tbaa !47
  %276 = call ptr @__errno_location() #9
  store i32 %275, ptr %276, align 4, !tbaa !47
  %277 = load ptr, ptr @stderr, align 8, !tbaa !5
  %278 = load i32, ptr @test_count, align 4, !tbaa !47
  %279 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %280 = load i32, ptr %279, align 4, !tbaa !47
  %281 = call ptr @s2n_strerror(i32 noundef %280, ptr noundef @.str.6)
  %282 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %283 = load i32, ptr %282, align 4, !tbaa !47
  %284 = call ptr @s2n_strerror_debug(i32 noundef %283, ptr noundef @.str.6)
  %285 = call ptr @__errno_location() #9
  %286 = load i32, ptr %285, align 4, !tbaa !47
  %287 = call ptr @strerror(i32 noundef %286) #8
  %288 = call ptr @__errno_location() #9
  %289 = load i32, ptr %288, align 4, !tbaa !47
  %290 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %277, ptr noundef @.str.3, i32 noundef %278, ptr noundef @.str.10, ptr noundef @.str.5, i32 noundef 73, ptr noundef %281, ptr noundef %284, ptr noundef %287, i32 noundef %289) #8
  br label %308

291:                                              ; preds = %269, %262
  %292 = load i32, ptr %19, align 4, !tbaa !47
  %293 = call ptr @__errno_location() #9
  store i32 %292, ptr %293, align 4, !tbaa !47
  %294 = load ptr, ptr @stderr, align 8, !tbaa !5
  %295 = load i32, ptr @test_count, align 4, !tbaa !47
  %296 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %297 = load i32, ptr %296, align 4, !tbaa !47
  %298 = call ptr @s2n_strerror(i32 noundef %297, ptr noundef @.str.6)
  %299 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %300 = load i32, ptr %299, align 4, !tbaa !47
  %301 = call ptr @s2n_strerror_debug(i32 noundef %300, ptr noundef @.str.6)
  %302 = call ptr @__errno_location() #9
  %303 = load i32, ptr %302, align 4, !tbaa !47
  %304 = call ptr @strerror(i32 noundef %303) #8
  %305 = call ptr @__errno_location() #9
  %306 = load i32, ptr %305, align 4, !tbaa !47
  %307 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %294, ptr noundef @.str.7, i32 noundef %295, ptr noundef @.str.10, ptr noundef @.str.5, i32 noundef 73, ptr noundef %298, ptr noundef %301, ptr noundef %304, i32 noundef %306) #8
  br label %308

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

309:                                              ; preds = %308
  br label %310

310:                                              ; preds = %309
  call void @exit(i32 noundef 1) #10
  unreachable

311:                                              ; No predecessors!
  br label %312

312:                                              ; preds = %311
  br label %313

313:                                              ; preds = %312, %246
  br label %314

314:                                              ; preds = %313
  br label %315

315:                                              ; preds = %314
  br label %455

316:                                              ; preds = %172
  br label %317

317:                                              ; preds = %316
  %318 = load i32, ptr @test_count, align 4, !tbaa !47
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr @test_count, align 4, !tbaa !47
  %320 = load ptr, ptr %9, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.s2n_connection, ptr %320, i32 0, i32 32
  %322 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %321, i32 0, i32 1
  %323 = load ptr, ptr %13, align 8, !tbaa !5
  %324 = call i32 @s2n_asn1der_to_public_key_and_type(ptr noundef %322, ptr noundef %16, ptr noundef %323)
  %325 = getelementptr inbounds %struct.s2n_result, ptr %20, i32 0, i32 0
  store i32 %324, ptr %325, align 4
  %326 = getelementptr inbounds %struct.s2n_result, ptr %20, i32 0, i32 0
  %327 = load i32, ptr %326, align 4
  %328 = call zeroext i1 @s2n_result_is_ok(i32 %327)
  br i1 %328, label %382, label %329

329:                                              ; preds = %317
  br label %330

330:                                              ; preds = %329
  br label %331

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %332 = call ptr @__errno_location() #9
  %333 = load i32, ptr %332, align 4, !tbaa !47
  store i32 %333, ptr %21, align 4, !tbaa !47
  %334 = load ptr, ptr @stderr, align 8, !tbaa !5
  %335 = call i32 @s2n_print_stacktrace(ptr noundef %334)
  %336 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %337 = trunc i8 %336 to i1
  br i1 %337, label %338, label %360

338:                                              ; preds = %331
  %339 = load ptr, ptr @stderr, align 8, !tbaa !5
  %340 = call i32 @fileno(ptr noundef %339) #8
  %341 = call i32 @isatty(i32 noundef %340) #8
  %342 = icmp ne i32 %341, 0
  br i1 %342, label %343, label %360

343:                                              ; preds = %338
  %344 = load i32, ptr %21, align 4, !tbaa !47
  %345 = call ptr @__errno_location() #9
  store i32 %344, ptr %345, align 4, !tbaa !47
  %346 = load ptr, ptr @stderr, align 8, !tbaa !5
  %347 = load i32, ptr @test_count, align 4, !tbaa !47
  %348 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %349 = load i32, ptr %348, align 4, !tbaa !47
  %350 = call ptr @s2n_strerror(i32 noundef %349, ptr noundef @.str.6)
  %351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %352 = load i32, ptr %351, align 4, !tbaa !47
  %353 = call ptr @s2n_strerror_debug(i32 noundef %352, ptr noundef @.str.6)
  %354 = call ptr @__errno_location() #9
  %355 = load i32, ptr %354, align 4, !tbaa !47
  %356 = call ptr @strerror(i32 noundef %355) #8
  %357 = call ptr @__errno_location() #9
  %358 = load i32, ptr %357, align 4, !tbaa !47
  %359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %346, ptr noundef @.str.3, i32 noundef %347, ptr noundef @.str.11, ptr noundef @.str.5, i32 noundef 75, ptr noundef %350, ptr noundef %353, ptr noundef %356, i32 noundef %358) #8
  br label %377

360:                                              ; preds = %338, %331
  %361 = load i32, ptr %21, align 4, !tbaa !47
  %362 = call ptr @__errno_location() #9
  store i32 %361, ptr %362, align 4, !tbaa !47
  %363 = load ptr, ptr @stderr, align 8, !tbaa !5
  %364 = load i32, ptr @test_count, align 4, !tbaa !47
  %365 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %366 = load i32, ptr %365, align 4, !tbaa !47
  %367 = call ptr @s2n_strerror(i32 noundef %366, ptr noundef @.str.6)
  %368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %369 = load i32, ptr %368, align 4, !tbaa !47
  %370 = call ptr @s2n_strerror_debug(i32 noundef %369, ptr noundef @.str.6)
  %371 = call ptr @__errno_location() #9
  %372 = load i32, ptr %371, align 4, !tbaa !47
  %373 = call ptr @strerror(i32 noundef %372) #8
  %374 = call ptr @__errno_location() #9
  %375 = load i32, ptr %374, align 4, !tbaa !47
  %376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %363, ptr noundef @.str.7, i32 noundef %364, ptr noundef @.str.11, ptr noundef @.str.5, i32 noundef 75, ptr noundef %367, ptr noundef %370, ptr noundef %373, i32 noundef %375) #8
  br label %377

377:                                              ; preds = %360, %343
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %378

378:                                              ; preds = %377
  br label %379

379:                                              ; preds = %378
  call void @exit(i32 noundef 1) #10
  unreachable

380:                                              ; No predecessors!
  br label %381

381:                                              ; preds = %380
  br label %382

382:                                              ; preds = %381, %317
  br label %383

383:                                              ; preds = %382
  br label %384

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  %386 = load i32, ptr @test_count, align 4, !tbaa !47
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr @test_count, align 4, !tbaa !47
  %388 = load ptr, ptr %9, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.s2n_connection, ptr %388, i32 0, i32 32
  %390 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %389, i32 0, i32 1
  %391 = load ptr, ptr %8, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.s2n_connection, ptr %391, i32 0, i32 32
  %393 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %392, i32 0, i32 7
  %394 = load ptr, ptr %393, align 8, !tbaa !9
  %395 = getelementptr inbounds %struct.s2n_cert_chain_and_key, ptr %394, i32 0, i32 1
  %396 = load ptr, ptr %395, align 8, !tbaa !52
  %397 = call i32 @s2n_pkey_match(ptr noundef %390, ptr noundef %396)
  %398 = icmp eq i32 %397, -1
  br i1 %398, label %399, label %452

399:                                              ; preds = %385
  br label %400

400:                                              ; preds = %399
  br label %401

401:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %402 = call ptr @__errno_location() #9
  %403 = load i32, ptr %402, align 4, !tbaa !47
  store i32 %403, ptr %22, align 4, !tbaa !47
  %404 = load ptr, ptr @stderr, align 8, !tbaa !5
  %405 = call i32 @s2n_print_stacktrace(ptr noundef %404)
  %406 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %407 = trunc i8 %406 to i1
  br i1 %407, label %408, label %430

408:                                              ; preds = %401
  %409 = load ptr, ptr @stderr, align 8, !tbaa !5
  %410 = call i32 @fileno(ptr noundef %409) #8
  %411 = call i32 @isatty(i32 noundef %410) #8
  %412 = icmp ne i32 %411, 0
  br i1 %412, label %413, label %430

413:                                              ; preds = %408
  %414 = load i32, ptr %22, align 4, !tbaa !47
  %415 = call ptr @__errno_location() #9
  store i32 %414, ptr %415, align 4, !tbaa !47
  %416 = load ptr, ptr @stderr, align 8, !tbaa !5
  %417 = load i32, ptr @test_count, align 4, !tbaa !47
  %418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %419 = load i32, ptr %418, align 4, !tbaa !47
  %420 = call ptr @s2n_strerror(i32 noundef %419, ptr noundef @.str.6)
  %421 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %422 = load i32, ptr %421, align 4, !tbaa !47
  %423 = call ptr @s2n_strerror_debug(i32 noundef %422, ptr noundef @.str.6)
  %424 = call ptr @__errno_location() #9
  %425 = load i32, ptr %424, align 4, !tbaa !47
  %426 = call ptr @strerror(i32 noundef %425) #8
  %427 = call ptr @__errno_location() #9
  %428 = load i32, ptr %427, align 4, !tbaa !47
  %429 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %416, ptr noundef @.str.3, i32 noundef %417, ptr noundef @.str.12, ptr noundef @.str.5, i32 noundef 76, ptr noundef %420, ptr noundef %423, ptr noundef %426, i32 noundef %428) #8
  br label %447

430:                                              ; preds = %408, %401
  %431 = load i32, ptr %22, align 4, !tbaa !47
  %432 = call ptr @__errno_location() #9
  store i32 %431, ptr %432, align 4, !tbaa !47
  %433 = load ptr, ptr @stderr, align 8, !tbaa !5
  %434 = load i32, ptr @test_count, align 4, !tbaa !47
  %435 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %436 = load i32, ptr %435, align 4, !tbaa !47
  %437 = call ptr @s2n_strerror(i32 noundef %436, ptr noundef @.str.6)
  %438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %439 = load i32, ptr %438, align 4, !tbaa !47
  %440 = call ptr @s2n_strerror_debug(i32 noundef %439, ptr noundef @.str.6)
  %441 = call ptr @__errno_location() #9
  %442 = load i32, ptr %441, align 4, !tbaa !47
  %443 = call ptr @strerror(i32 noundef %442) #8
  %444 = call ptr @__errno_location() #9
  %445 = load i32, ptr %444, align 4, !tbaa !47
  %446 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %433, ptr noundef @.str.7, i32 noundef %434, ptr noundef @.str.12, ptr noundef @.str.5, i32 noundef 76, ptr noundef %437, ptr noundef %440, ptr noundef %443, i32 noundef %445) #8
  br label %447

447:                                              ; preds = %430, %413
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %448

448:                                              ; preds = %447
  br label %449

449:                                              ; preds = %448
  call void @exit(i32 noundef 1) #10
  unreachable

450:                                              ; No predecessors!
  br label %451

451:                                              ; preds = %450
  br label %452

452:                                              ; preds = %451, %385
  br label %453

453:                                              ; preds = %452
  br label %454

454:                                              ; preds = %453
  br label %455

455:                                              ; preds = %454, %315
  br label %456

456:                                              ; preds = %455
  %457 = load i32, ptr @test_count, align 4, !tbaa !47
  %458 = add nsw i32 %457, 1
  store i32 %458, ptr @test_count, align 4, !tbaa !47
  %459 = load ptr, ptr %8, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.s2n_connection, ptr %459, i32 0, i32 52
  %461 = getelementptr inbounds %struct.s2n_handshake, ptr %460, i32 0, i32 1
  %462 = load ptr, ptr %461, align 8, !tbaa !54
  %463 = getelementptr inbounds %struct.s2n_handshake_hashes, ptr %462, i32 0, i32 3
  %464 = call i32 @s2n_hash_init(ptr noundef %463, i32 noundef 4)
  %465 = icmp eq i32 %464, -1
  br i1 %465, label %466, label %519

466:                                              ; preds = %456
  br label %467

467:                                              ; preds = %466
  br label %468

468:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  %469 = call ptr @__errno_location() #9
  %470 = load i32, ptr %469, align 4, !tbaa !47
  store i32 %470, ptr %23, align 4, !tbaa !47
  %471 = load ptr, ptr @stderr, align 8, !tbaa !5
  %472 = call i32 @s2n_print_stacktrace(ptr noundef %471)
  %473 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %474 = trunc i8 %473 to i1
  br i1 %474, label %475, label %497

475:                                              ; preds = %468
  %476 = load ptr, ptr @stderr, align 8, !tbaa !5
  %477 = call i32 @fileno(ptr noundef %476) #8
  %478 = call i32 @isatty(i32 noundef %477) #8
  %479 = icmp ne i32 %478, 0
  br i1 %479, label %480, label %497

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

497:                                              ; preds = %475, %468
  %498 = load i32, ptr %23, align 4, !tbaa !47
  %499 = call ptr @__errno_location() #9
  store i32 %498, ptr %499, align 4, !tbaa !47
  %500 = load ptr, ptr @stderr, align 8, !tbaa !5
  %501 = load i32, ptr @test_count, align 4, !tbaa !47
  %502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %503 = load i32, ptr %502, align 4, !tbaa !47
  %504 = call ptr @s2n_strerror(i32 noundef %503, ptr noundef @.str.6)
  %505 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %506 = load i32, ptr %505, align 4, !tbaa !47
  %507 = call ptr @s2n_strerror_debug(i32 noundef %506, ptr noundef @.str.6)
  %508 = call ptr @__errno_location() #9
  %509 = load i32, ptr %508, align 4, !tbaa !47
  %510 = call ptr @strerror(i32 noundef %509) #8
  %511 = call ptr @__errno_location() #9
  %512 = load i32, ptr %511, align 4, !tbaa !47
  %513 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %500, ptr noundef @.str.7, i32 noundef %501, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 80, ptr noundef %504, ptr noundef %507, ptr noundef %510, i32 noundef %512) #8
  br label %514

514:                                              ; preds = %497, %480
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %515

515:                                              ; preds = %514
  br label %516

516:                                              ; preds = %515
  call void @exit(i32 noundef 1) #10
  unreachable

517:                                              ; No predecessors!
  br label %518

518:                                              ; preds = %517
  br label %519

519:                                              ; preds = %518, %456
  br label %520

520:                                              ; preds = %519
  br label %521

521:                                              ; preds = %520
  br label %522

522:                                              ; preds = %521
  %523 = load i32, ptr @test_count, align 4, !tbaa !47
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr @test_count, align 4, !tbaa !47
  %525 = load ptr, ptr %8, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.s2n_connection, ptr %525, i32 0, i32 52
  %527 = getelementptr inbounds %struct.s2n_handshake, ptr %526, i32 0, i32 1
  %528 = load ptr, ptr %527, align 8, !tbaa !54
  %529 = getelementptr inbounds %struct.s2n_handshake_hashes, ptr %528, i32 0, i32 3
  %530 = call i32 @s2n_hash_update(ptr noundef %529, ptr noundef @hello, i32 noundef 15)
  %531 = icmp eq i32 %530, -1
  br i1 %531, label %532, label %585

532:                                              ; preds = %522
  br label %533

533:                                              ; preds = %532
  br label %534

534:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %535 = call ptr @__errno_location() #9
  %536 = load i32, ptr %535, align 4, !tbaa !47
  store i32 %536, ptr %24, align 4, !tbaa !47
  %537 = load ptr, ptr @stderr, align 8, !tbaa !5
  %538 = call i32 @s2n_print_stacktrace(ptr noundef %537)
  %539 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %540 = trunc i8 %539 to i1
  br i1 %540, label %541, label %563

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

546:                                              ; preds = %541
  %547 = load i32, ptr %24, align 4, !tbaa !47
  %548 = call ptr @__errno_location() #9
  store i32 %547, ptr %548, align 4, !tbaa !47
  %549 = load ptr, ptr @stderr, align 8, !tbaa !5
  %550 = load i32, ptr @test_count, align 4, !tbaa !47
  %551 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %552 = load i32, ptr %551, align 4, !tbaa !47
  %553 = call ptr @s2n_strerror(i32 noundef %552, ptr noundef @.str.6)
  %554 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %555 = load i32, ptr %554, align 4, !tbaa !47
  %556 = call ptr @s2n_strerror_debug(i32 noundef %555, ptr noundef @.str.6)
  %557 = call ptr @__errno_location() #9
  %558 = load i32, ptr %557, align 4, !tbaa !47
  %559 = call ptr @strerror(i32 noundef %558) #8
  %560 = call ptr @__errno_location() #9
  %561 = load i32, ptr %560, align 4, !tbaa !47
  %562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %549, ptr noundef @.str.3, i32 noundef %550, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 81, ptr noundef %553, ptr noundef %556, ptr noundef %559, i32 noundef %561) #8
  br label %580

563:                                              ; preds = %541, %534
  %564 = load i32, ptr %24, align 4, !tbaa !47
  %565 = call ptr @__errno_location() #9
  store i32 %564, ptr %565, align 4, !tbaa !47
  %566 = load ptr, ptr @stderr, align 8, !tbaa !5
  %567 = load i32, ptr @test_count, align 4, !tbaa !47
  %568 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %569 = load i32, ptr %568, align 4, !tbaa !47
  %570 = call ptr @s2n_strerror(i32 noundef %569, ptr noundef @.str.6)
  %571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %572 = load i32, ptr %571, align 4, !tbaa !47
  %573 = call ptr @s2n_strerror_debug(i32 noundef %572, ptr noundef @.str.6)
  %574 = call ptr @__errno_location() #9
  %575 = load i32, ptr %574, align 4, !tbaa !47
  %576 = call ptr @strerror(i32 noundef %575) #8
  %577 = call ptr @__errno_location() #9
  %578 = load i32, ptr %577, align 4, !tbaa !47
  %579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %566, ptr noundef @.str.7, i32 noundef %567, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 81, ptr noundef %570, ptr noundef %573, ptr noundef %576, i32 noundef %578) #8
  br label %580

580:                                              ; preds = %563, %546
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %581

581:                                              ; preds = %580
  br label %582

582:                                              ; preds = %581
  call void @exit(i32 noundef 1) #10
  unreachable

583:                                              ; No predecessors!
  br label %584

584:                                              ; preds = %583
  br label %585

585:                                              ; preds = %584, %522
  br label %586

586:                                              ; preds = %585
  br label %587

587:                                              ; preds = %586
  br label %588

588:                                              ; preds = %587
  %589 = load i32, ptr @test_count, align 4, !tbaa !47
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr @test_count, align 4, !tbaa !47
  %591 = load ptr, ptr %9, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.s2n_connection, ptr %591, i32 0, i32 52
  %593 = getelementptr inbounds %struct.s2n_handshake, ptr %592, i32 0, i32 1
  %594 = load ptr, ptr %593, align 8, !tbaa !54
  %595 = getelementptr inbounds %struct.s2n_handshake_hashes, ptr %594, i32 0, i32 3
  %596 = call i32 @s2n_hash_init(ptr noundef %595, i32 noundef 4)
  %597 = icmp eq i32 %596, -1
  br i1 %597, label %598, label %651

598:                                              ; preds = %588
  br label %599

599:                                              ; preds = %598
  br label %600

600:                                              ; preds = %599
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %601 = call ptr @__errno_location() #9
  %602 = load i32, ptr %601, align 4, !tbaa !47
  store i32 %602, ptr %25, align 4, !tbaa !47
  %603 = load ptr, ptr @stderr, align 8, !tbaa !5
  %604 = call i32 @s2n_print_stacktrace(ptr noundef %603)
  %605 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %606 = trunc i8 %605 to i1
  br i1 %606, label %607, label %629

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

612:                                              ; preds = %607
  %613 = load i32, ptr %25, align 4, !tbaa !47
  %614 = call ptr @__errno_location() #9
  store i32 %613, ptr %614, align 4, !tbaa !47
  %615 = load ptr, ptr @stderr, align 8, !tbaa !5
  %616 = load i32, ptr @test_count, align 4, !tbaa !47
  %617 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %618 = load i32, ptr %617, align 4, !tbaa !47
  %619 = call ptr @s2n_strerror(i32 noundef %618, ptr noundef @.str.6)
  %620 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %621 = load i32, ptr %620, align 4, !tbaa !47
  %622 = call ptr @s2n_strerror_debug(i32 noundef %621, ptr noundef @.str.6)
  %623 = call ptr @__errno_location() #9
  %624 = load i32, ptr %623, align 4, !tbaa !47
  %625 = call ptr @strerror(i32 noundef %624) #8
  %626 = call ptr @__errno_location() #9
  %627 = load i32, ptr %626, align 4, !tbaa !47
  %628 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %615, ptr noundef @.str.3, i32 noundef %616, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 82, ptr noundef %619, ptr noundef %622, ptr noundef %625, i32 noundef %627) #8
  br label %646

629:                                              ; preds = %607, %600
  %630 = load i32, ptr %25, align 4, !tbaa !47
  %631 = call ptr @__errno_location() #9
  store i32 %630, ptr %631, align 4, !tbaa !47
  %632 = load ptr, ptr @stderr, align 8, !tbaa !5
  %633 = load i32, ptr @test_count, align 4, !tbaa !47
  %634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %635 = load i32, ptr %634, align 4, !tbaa !47
  %636 = call ptr @s2n_strerror(i32 noundef %635, ptr noundef @.str.6)
  %637 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %638 = load i32, ptr %637, align 4, !tbaa !47
  %639 = call ptr @s2n_strerror_debug(i32 noundef %638, ptr noundef @.str.6)
  %640 = call ptr @__errno_location() #9
  %641 = load i32, ptr %640, align 4, !tbaa !47
  %642 = call ptr @strerror(i32 noundef %641) #8
  %643 = call ptr @__errno_location() #9
  %644 = load i32, ptr %643, align 4, !tbaa !47
  %645 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %632, ptr noundef @.str.7, i32 noundef %633, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 82, ptr noundef %636, ptr noundef %639, ptr noundef %642, i32 noundef %644) #8
  br label %646

646:                                              ; preds = %629, %612
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %647

647:                                              ; preds = %646
  br label %648

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

649:                                              ; No predecessors!
  br label %650

650:                                              ; preds = %649
  br label %651

651:                                              ; preds = %650, %588
  br label %652

652:                                              ; preds = %651
  br label %653

653:                                              ; preds = %652
  br label %654

654:                                              ; preds = %653
  %655 = load i32, ptr @test_count, align 4, !tbaa !47
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr @test_count, align 4, !tbaa !47
  %657 = load ptr, ptr %9, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.s2n_connection, ptr %657, i32 0, i32 52
  %659 = getelementptr inbounds %struct.s2n_handshake, ptr %658, i32 0, i32 1
  %660 = load ptr, ptr %659, align 8, !tbaa !54
  %661 = getelementptr inbounds %struct.s2n_handshake_hashes, ptr %660, i32 0, i32 3
  %662 = call i32 @s2n_hash_update(ptr noundef %661, ptr noundef @hello, i32 noundef 15)
  %663 = icmp eq i32 %662, -1
  br i1 %663, label %664, label %717

664:                                              ; preds = %654
  br label %665

665:                                              ; preds = %664
  br label %666

666:                                              ; preds = %665
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %667 = call ptr @__errno_location() #9
  %668 = load i32, ptr %667, align 4, !tbaa !47
  store i32 %668, ptr %26, align 4, !tbaa !47
  %669 = load ptr, ptr @stderr, align 8, !tbaa !5
  %670 = call i32 @s2n_print_stacktrace(ptr noundef %669)
  %671 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %672 = trunc i8 %671 to i1
  br i1 %672, label %673, label %695

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

678:                                              ; preds = %673
  %679 = load i32, ptr %26, align 4, !tbaa !47
  %680 = call ptr @__errno_location() #9
  store i32 %679, ptr %680, align 4, !tbaa !47
  %681 = load ptr, ptr @stderr, align 8, !tbaa !5
  %682 = load i32, ptr @test_count, align 4, !tbaa !47
  %683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %684 = load i32, ptr %683, align 4, !tbaa !47
  %685 = call ptr @s2n_strerror(i32 noundef %684, ptr noundef @.str.6)
  %686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %687 = load i32, ptr %686, align 4, !tbaa !47
  %688 = call ptr @s2n_strerror_debug(i32 noundef %687, ptr noundef @.str.6)
  %689 = call ptr @__errno_location() #9
  %690 = load i32, ptr %689, align 4, !tbaa !47
  %691 = call ptr @strerror(i32 noundef %690) #8
  %692 = call ptr @__errno_location() #9
  %693 = load i32, ptr %692, align 4, !tbaa !47
  %694 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %681, ptr noundef @.str.3, i32 noundef %682, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 83, ptr noundef %685, ptr noundef %688, ptr noundef %691, i32 noundef %693) #8
  br label %712

695:                                              ; preds = %673, %666
  %696 = load i32, ptr %26, align 4, !tbaa !47
  %697 = call ptr @__errno_location() #9
  store i32 %696, ptr %697, align 4, !tbaa !47
  %698 = load ptr, ptr @stderr, align 8, !tbaa !5
  %699 = load i32, ptr @test_count, align 4, !tbaa !47
  %700 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %701 = load i32, ptr %700, align 4, !tbaa !47
  %702 = call ptr @s2n_strerror(i32 noundef %701, ptr noundef @.str.6)
  %703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %704 = load i32, ptr %703, align 4, !tbaa !47
  %705 = call ptr @s2n_strerror_debug(i32 noundef %704, ptr noundef @.str.6)
  %706 = call ptr @__errno_location() #9
  %707 = load i32, ptr %706, align 4, !tbaa !47
  %708 = call ptr @strerror(i32 noundef %707) #8
  %709 = call ptr @__errno_location() #9
  %710 = load i32, ptr %709, align 4, !tbaa !47
  %711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %698, ptr noundef @.str.7, i32 noundef %699, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 83, ptr noundef %702, ptr noundef %705, ptr noundef %708, i32 noundef %710) #8
  br label %712

712:                                              ; preds = %695, %678
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %713

713:                                              ; preds = %712
  br label %714

714:                                              ; preds = %713
  call void @exit(i32 noundef 1) #10
  unreachable

715:                                              ; No predecessors!
  br label %716

716:                                              ; preds = %715
  br label %717

717:                                              ; preds = %716, %654
  br label %718

718:                                              ; preds = %717
  br label %719

719:                                              ; preds = %718
  br label %720

720:                                              ; preds = %719
  %721 = load i32, ptr @test_count, align 4, !tbaa !47
  %722 = add nsw i32 %721, 1
  store i32 %722, ptr @test_count, align 4, !tbaa !47
  %723 = load ptr, ptr %8, align 8, !tbaa !5
  %724 = call i32 @s2n_tls13_cert_verify_send(ptr noundef %723)
  %725 = icmp eq i32 %724, -1
  br i1 %725, label %726, label %779

726:                                              ; preds = %720
  br label %727

727:                                              ; preds = %726
  br label %728

728:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %729 = call ptr @__errno_location() #9
  %730 = load i32, ptr %729, align 4, !tbaa !47
  store i32 %730, ptr %27, align 4, !tbaa !47
  %731 = load ptr, ptr @stderr, align 8, !tbaa !5
  %732 = call i32 @s2n_print_stacktrace(ptr noundef %731)
  %733 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %734 = trunc i8 %733 to i1
  br i1 %734, label %735, label %757

735:                                              ; preds = %728
  %736 = load ptr, ptr @stderr, align 8, !tbaa !5
  %737 = call i32 @fileno(ptr noundef %736) #8
  %738 = call i32 @isatty(i32 noundef %737) #8
  %739 = icmp ne i32 %738, 0
  br i1 %739, label %740, label %757

740:                                              ; preds = %735
  %741 = load i32, ptr %27, align 4, !tbaa !47
  %742 = call ptr @__errno_location() #9
  store i32 %741, ptr %742, align 4, !tbaa !47
  %743 = load ptr, ptr @stderr, align 8, !tbaa !5
  %744 = load i32, ptr @test_count, align 4, !tbaa !47
  %745 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %746 = load i32, ptr %745, align 4, !tbaa !47
  %747 = call ptr @s2n_strerror(i32 noundef %746, ptr noundef @.str.6)
  %748 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %749 = load i32, ptr %748, align 4, !tbaa !47
  %750 = call ptr @s2n_strerror_debug(i32 noundef %749, ptr noundef @.str.6)
  %751 = call ptr @__errno_location() #9
  %752 = load i32, ptr %751, align 4, !tbaa !47
  %753 = call ptr @strerror(i32 noundef %752) #8
  %754 = call ptr @__errno_location() #9
  %755 = load i32, ptr %754, align 4, !tbaa !47
  %756 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %743, ptr noundef @.str.3, i32 noundef %744, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 86, ptr noundef %747, ptr noundef %750, ptr noundef %753, i32 noundef %755) #8
  br label %774

757:                                              ; preds = %735, %728
  %758 = load i32, ptr %27, align 4, !tbaa !47
  %759 = call ptr @__errno_location() #9
  store i32 %758, ptr %759, align 4, !tbaa !47
  %760 = load ptr, ptr @stderr, align 8, !tbaa !5
  %761 = load i32, ptr @test_count, align 4, !tbaa !47
  %762 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %763 = load i32, ptr %762, align 4, !tbaa !47
  %764 = call ptr @s2n_strerror(i32 noundef %763, ptr noundef @.str.6)
  %765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %766 = load i32, ptr %765, align 4, !tbaa !47
  %767 = call ptr @s2n_strerror_debug(i32 noundef %766, ptr noundef @.str.6)
  %768 = call ptr @__errno_location() #9
  %769 = load i32, ptr %768, align 4, !tbaa !47
  %770 = call ptr @strerror(i32 noundef %769) #8
  %771 = call ptr @__errno_location() #9
  %772 = load i32, ptr %771, align 4, !tbaa !47
  %773 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %760, ptr noundef @.str.7, i32 noundef %761, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 86, ptr noundef %764, ptr noundef %767, ptr noundef %770, i32 noundef %772) #8
  br label %774

774:                                              ; preds = %757, %740
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %775

775:                                              ; preds = %774
  br label %776

776:                                              ; preds = %775
  call void @exit(i32 noundef 1) #10
  unreachable

777:                                              ; No predecessors!
  br label %778

778:                                              ; preds = %777
  br label %779

779:                                              ; preds = %778, %720
  br label %780

780:                                              ; preds = %779
  br label %781

781:                                              ; preds = %780
  br label %782

782:                                              ; preds = %781
  %783 = load i32, ptr @test_count, align 4, !tbaa !47
  %784 = add nsw i32 %783, 1
  store i32 %784, ptr @test_count, align 4, !tbaa !47
  %785 = load ptr, ptr %8, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.s2n_connection, ptr %785, i32 0, i32 52
  %787 = getelementptr inbounds %struct.s2n_handshake, ptr %786, i32 0, i32 0
  %788 = load ptr, ptr %9, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.s2n_connection, ptr %788, i32 0, i32 52
  %790 = getelementptr inbounds %struct.s2n_handshake, ptr %789, i32 0, i32 0
  %791 = load ptr, ptr %8, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.s2n_connection, ptr %791, i32 0, i32 52
  %793 = getelementptr inbounds %struct.s2n_handshake, ptr %792, i32 0, i32 0
  %794 = getelementptr inbounds %struct.s2n_stuffer, ptr %793, i32 0, i32 2
  %795 = load i32, ptr %794, align 4, !tbaa !55
  %796 = load ptr, ptr %8, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.s2n_connection, ptr %796, i32 0, i32 52
  %798 = getelementptr inbounds %struct.s2n_handshake, ptr %797, i32 0, i32 0
  %799 = getelementptr inbounds %struct.s2n_stuffer, ptr %798, i32 0, i32 1
  %800 = load i32, ptr %799, align 8, !tbaa !56
  %801 = sub i32 %795, %800
  %802 = call i32 @s2n_stuffer_copy(ptr noundef %787, ptr noundef %790, i32 noundef %801)
  %803 = icmp eq i32 %802, -1
  br i1 %803, label %804, label %857

804:                                              ; preds = %782
  br label %805

805:                                              ; preds = %804
  br label %806

806:                                              ; preds = %805
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  %807 = call ptr @__errno_location() #9
  %808 = load i32, ptr %807, align 4, !tbaa !47
  store i32 %808, ptr %28, align 4, !tbaa !47
  %809 = load ptr, ptr @stderr, align 8, !tbaa !5
  %810 = call i32 @s2n_print_stacktrace(ptr noundef %809)
  %811 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %812 = trunc i8 %811 to i1
  br i1 %812, label %813, label %835

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

818:                                              ; preds = %813
  %819 = load i32, ptr %28, align 4, !tbaa !47
  %820 = call ptr @__errno_location() #9
  store i32 %819, ptr %820, align 4, !tbaa !47
  %821 = load ptr, ptr @stderr, align 8, !tbaa !5
  %822 = load i32, ptr @test_count, align 4, !tbaa !47
  %823 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %824 = load i32, ptr %823, align 4, !tbaa !47
  %825 = call ptr @s2n_strerror(i32 noundef %824, ptr noundef @.str.6)
  %826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %827 = load i32, ptr %826, align 4, !tbaa !47
  %828 = call ptr @s2n_strerror_debug(i32 noundef %827, ptr noundef @.str.6)
  %829 = call ptr @__errno_location() #9
  %830 = load i32, ptr %829, align 4, !tbaa !47
  %831 = call ptr @strerror(i32 noundef %830) #8
  %832 = call ptr @__errno_location() #9
  %833 = load i32, ptr %832, align 4, !tbaa !47
  %834 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %821, ptr noundef @.str.3, i32 noundef %822, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 88, ptr noundef %825, ptr noundef %828, ptr noundef %831, i32 noundef %833) #8
  br label %852

835:                                              ; preds = %813, %806
  %836 = load i32, ptr %28, align 4, !tbaa !47
  %837 = call ptr @__errno_location() #9
  store i32 %836, ptr %837, align 4, !tbaa !47
  %838 = load ptr, ptr @stderr, align 8, !tbaa !5
  %839 = load i32, ptr @test_count, align 4, !tbaa !47
  %840 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %841 = load i32, ptr %840, align 4, !tbaa !47
  %842 = call ptr @s2n_strerror(i32 noundef %841, ptr noundef @.str.6)
  %843 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %844 = load i32, ptr %843, align 4, !tbaa !47
  %845 = call ptr @s2n_strerror_debug(i32 noundef %844, ptr noundef @.str.6)
  %846 = call ptr @__errno_location() #9
  %847 = load i32, ptr %846, align 4, !tbaa !47
  %848 = call ptr @strerror(i32 noundef %847) #8
  %849 = call ptr @__errno_location() #9
  %850 = load i32, ptr %849, align 4, !tbaa !47
  %851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %838, ptr noundef @.str.7, i32 noundef %839, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 88, ptr noundef %842, ptr noundef %845, ptr noundef %848, i32 noundef %850) #8
  br label %852

852:                                              ; preds = %835, %818
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %853

853:                                              ; preds = %852
  br label %854

854:                                              ; preds = %853
  call void @exit(i32 noundef 1) #10
  unreachable

855:                                              ; No predecessors!
  br label %856

856:                                              ; preds = %855
  br label %857

857:                                              ; preds = %856, %782
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858
  %860 = getelementptr inbounds %struct.s2n_result, ptr %7, i32 0, i32 0
  store i32 0, ptr %860, align 4, !tbaa !57
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  %861 = getelementptr inbounds %struct.s2n_result, ptr %7, i32 0, i32 0
  %862 = load i32, ptr %861, align 4
  ret i32 %862
}

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #4

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

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

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

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

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

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

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

declare i32 @s2n_asn1der_to_public_key_and_type(ptr noundef, ptr noundef, ptr noundef) #4

declare i32 @s2n_pkey_match(ptr noundef, ptr noundef) #4

declare i32 @s2n_hash_init(ptr noundef, i32 noundef) #4

declare i32 @s2n_hash_update(ptr noundef, ptr noundef, i32 noundef) #4

declare i32 @s2n_stuffer_copy(ptr noundef, ptr noundef, i32 noundef) #4

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

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

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


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

%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@hello = external dso_local global [15 x i8], align 1
@s2n_tls13_aes_128_gcm_sha256 = external global %struct.s2n_cipher_suite, align 8
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [137 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [159 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [137 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [159 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [100 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [197 x i8], align 1

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @s2n_cert_verify_connection_setup_and_send(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 {
  %7 = alloca i32, align 4
  %8 = getelementptr inbounds i8, ptr %0, i64 1544
  store ptr %3, ptr %8, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 1528
  store ptr %4, ptr %9, align 8, !tbaa !37
  %10 = getelementptr inbounds i8, ptr %0, i64 1536
  store ptr %4, ptr %10, align 8, !tbaa !38
  %11 = getelementptr inbounds i8, ptr %0, i64 232
  %12 = load ptr, ptr %11, align 8, !tbaa !39
  store ptr @s2n_tls13_aes_128_gcm_sha256, ptr %12, align 8, !tbaa !40
  %13 = getelementptr inbounds i8, ptr %0, i64 220
  store i8 34, ptr %13, align 4, !tbaa !45
  %14 = load i32, ptr @test_count, align 4, !tbaa !46
  %15 = add nsw i32 %14, 1
  store i32 %15, ptr @test_count, align 4, !tbaa !46
  %16 = tail call i32 @s2n_connection_set_config(ptr noundef %0, ptr noundef %2) #9
  %17 = icmp eq i32 %16, -1
  br i1 %17, label %18, label %42

18:                                               ; preds = %6
  %19 = tail call ptr @__errno_location() #10
  %20 = load i32, ptr %19, align 4, !tbaa !46
  %21 = load ptr, ptr @stderr, align 8, !tbaa !47
  %22 = tail call i32 @s2n_print_stacktrace(ptr noundef %21) #9
  %23 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %24 = trunc nuw i8 %23 to i1
  br i1 %24, label %25, label %29

25:                                               ; preds = %18
  %26 = load ptr, ptr @stderr, align 8, !tbaa !47
  %27 = tail call i32 @fileno(ptr noundef %26) #9
  %28 = tail call i32 @isatty(i32 noundef %27) #9
  %.not67 = icmp eq i32 %28, 0
  br i1 %.not67, label %29, label %30

29:                                               ; preds = %25, %18
  br label %30

30:                                               ; preds = %25, %29
  %.str.7.sink = phi ptr [ @.str.7, %29 ], [ @.str.3, %25 ]
  store i32 %20, ptr %19, align 4, !tbaa !46
  %31 = load ptr, ptr @stderr, align 8, !tbaa !47
  %32 = load i32, ptr @test_count, align 4, !tbaa !46
  %33 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %34 = load i32, ptr %33, align 4, !tbaa !46
  %35 = tail call ptr @s2n_strerror(i32 noundef %34, ptr noundef nonnull @.str.6) #9
  %36 = load i32, ptr %33, align 4, !tbaa !46
  %37 = tail call ptr @s2n_strerror_debug(i32 noundef %36, ptr noundef nonnull @.str.6) #9
  %38 = load i32, ptr %19, align 4, !tbaa !46
  %39 = tail call ptr @strerror(i32 noundef %38) #9
  %40 = load i32, ptr %19, align 4, !tbaa !46
  %41 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %31, ptr noundef nonnull %.str.7.sink, i32 noundef %32, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 63, ptr noundef %35, ptr noundef %37, ptr noundef %39, i32 noundef %40) #11
  tail call void @exit(i32 noundef 1) #12
  unreachable

42:                                               ; preds = %6
  %43 = getelementptr inbounds i8, ptr %1, i64 232
  %44 = load ptr, ptr %43, align 8, !tbaa !39
  store ptr @s2n_tls13_aes_128_gcm_sha256, ptr %44, align 8, !tbaa !40
  %45 = getelementptr inbounds i8, ptr %1, i64 220
  store i8 34, ptr %45, align 4, !tbaa !45
  %46 = load i32, ptr @test_count, align 4, !tbaa !46
  %47 = add nsw i32 %46, 1
  store i32 %47, ptr @test_count, align 4, !tbaa !46
  %48 = tail call i32 @s2n_connection_set_config(ptr noundef %1, ptr noundef %2) #9
  %49 = icmp eq i32 %48, -1
  br i1 %49, label %50, label %74

50:                                               ; preds = %42
  %51 = tail call ptr @__errno_location() #10
  %52 = load i32, ptr %51, align 4, !tbaa !46
  %53 = load ptr, ptr @stderr, align 8, !tbaa !47
  %54 = tail call i32 @s2n_print_stacktrace(ptr noundef %53) #9
  %55 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %56 = trunc nuw i8 %55 to i1
  br i1 %56, label %57, label %61

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

61:                                               ; preds = %57, %50
  br label %62

62:                                               ; preds = %57, %61
  %.str.7.sink78 = phi ptr [ @.str.7, %61 ], [ @.str.3, %57 ]
  store i32 %52, ptr %51, align 4, !tbaa !46
  %63 = load ptr, ptr @stderr, align 8, !tbaa !47
  %64 = load i32, ptr @test_count, align 4, !tbaa !46
  %65 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %66 = load i32, ptr %65, align 4, !tbaa !46
  %67 = tail call ptr @s2n_strerror(i32 noundef %66, ptr noundef nonnull @.str.6) #9
  %68 = load i32, ptr %65, align 4, !tbaa !46
  %69 = tail call ptr @s2n_strerror_debug(i32 noundef %68, ptr noundef nonnull @.str.6) #9
  %70 = load i32, ptr %51, align 4, !tbaa !46
  %71 = tail call ptr @strerror(i32 noundef %70) #9
  %72 = load i32, ptr %51, align 4, !tbaa !46
  %73 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %63, ptr noundef nonnull %.str.7.sink78, i32 noundef %64, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.5, i32 noundef 67, ptr noundef %67, ptr noundef %69, ptr noundef %71, i32 noundef %72) #11
  tail call void @exit(i32 noundef 1) #12
  unreachable

74:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9
  store i32 0, ptr %7, align 4, !tbaa !46
  %75 = getelementptr inbounds i8, ptr %1, i64 148
  %76 = load i32, ptr %75, align 4, !tbaa !51
  %77 = icmp eq i32 %76, 1
  %78 = load i32, ptr @test_count, align 4, !tbaa !46
  %79 = add nsw i32 %78, 1
  store i32 %79, ptr @test_count, align 4, !tbaa !46
  br i1 %77, label %80, label %140

80:                                               ; preds = %74
  %81 = getelementptr inbounds i8, ptr %1, i64 1144
  %82 = call i32 @s2n_asn1der_to_public_key_and_type(ptr noundef nonnull %81, ptr noundef nonnull %7, ptr noundef %5) #9
  %83 = call zeroext i1 @s2n_result_is_ok(i32 %82)
  br i1 %83, label %108, label %84

84:                                               ; preds = %80
  %85 = tail call ptr @__errno_location() #10
  %86 = load i32, ptr %85, align 4, !tbaa !46
  %87 = load ptr, ptr @stderr, align 8, !tbaa !47
  %88 = call i32 @s2n_print_stacktrace(ptr noundef %87) #9
  %89 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %90 = trunc nuw i8 %89 to i1
  br i1 %90, label %91, label %95

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

95:                                               ; preds = %91, %84
  br label %96

96:                                               ; preds = %91, %95
  %.str.7.sink89 = phi ptr [ @.str.7, %95 ], [ @.str.3, %91 ]
  store i32 %86, ptr %85, align 4, !tbaa !46
  %97 = load ptr, ptr @stderr, align 8, !tbaa !47
  %98 = load i32, ptr @test_count, align 4, !tbaa !46
  %99 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %100 = load i32, ptr %99, align 4, !tbaa !46
  %101 = call ptr @s2n_strerror(i32 noundef %100, ptr noundef nonnull @.str.6) #9
  %102 = load i32, ptr %99, align 4, !tbaa !46
  %103 = call ptr @s2n_strerror_debug(i32 noundef %102, ptr noundef nonnull @.str.6) #9
  %104 = load i32, ptr %85, align 4, !tbaa !46
  %105 = call ptr @strerror(i32 noundef %104) #9
  %106 = load i32, ptr %85, align 4, !tbaa !46
  %107 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %97, ptr noundef nonnull %.str.7.sink89, i32 noundef %98, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.5, i32 noundef 72, ptr noundef %101, ptr noundef %103, ptr noundef %105, i32 noundef %106) #11
  call void @exit(i32 noundef 1) #12
  unreachable

108:                                              ; preds = %80
  %109 = load i32, ptr @test_count, align 4, !tbaa !46
  %110 = add nsw i32 %109, 1
  store i32 %110, ptr @test_count, align 4, !tbaa !46
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %111, i64 8
  %113 = load ptr, ptr %112, align 8, !tbaa !52
  %114 = call i32 @s2n_pkey_match(ptr noundef nonnull %81, ptr noundef %113) #9
  %115 = icmp eq i32 %114, -1
  br i1 %115, label %116, label %200

116:                                              ; preds = %108
  %117 = tail call ptr @__errno_location() #10
  %118 = load i32, ptr %117, align 4, !tbaa !46
  %119 = load ptr, ptr @stderr, align 8, !tbaa !47
  %120 = call i32 @s2n_print_stacktrace(ptr noundef %119) #9
  %121 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %122 = trunc nuw i8 %121 to i1
  br i1 %122, label %123, label %127

123:                                              ; preds = %116
  %124 = load ptr, ptr @stderr, align 8, !tbaa !47
  %125 = call i32 @fileno(ptr noundef %124) #9
  %126 = call i32 @isatty(i32 noundef %125) #9
  %.not65 = icmp eq i32 %126, 0
  br i1 %.not65, label %127, label %128

127:                                              ; preds = %123, %116
  br label %128

128:                                              ; preds = %123, %127
  %.str.7.sink100 = phi ptr [ @.str.7, %127 ], [ @.str.3, %123 ]
  store i32 %118, ptr %117, align 4, !tbaa !46
  %129 = load ptr, ptr @stderr, align 8, !tbaa !47
  %130 = load i32, ptr @test_count, align 4, !tbaa !46
  %131 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %132 = load i32, ptr %131, align 4, !tbaa !46
  %133 = call ptr @s2n_strerror(i32 noundef %132, ptr noundef nonnull @.str.6) #9
  %134 = load i32, ptr %131, align 4, !tbaa !46
  %135 = call ptr @s2n_strerror_debug(i32 noundef %134, ptr noundef nonnull @.str.6) #9
  %136 = load i32, ptr %117, align 4, !tbaa !46
  %137 = call ptr @strerror(i32 noundef %136) #9
  %138 = load i32, ptr %117, align 4, !tbaa !46
  %139 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %129, ptr noundef nonnull %.str.7.sink100, i32 noundef %130, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.5, i32 noundef 73, ptr noundef %133, ptr noundef %135, ptr noundef %137, i32 noundef %138) #11
  call void @exit(i32 noundef 1) #12
  unreachable

140:                                              ; preds = %74
  %141 = getelementptr inbounds i8, ptr %1, i64 1192
  %142 = call i32 @s2n_asn1der_to_public_key_and_type(ptr noundef nonnull %141, ptr noundef nonnull %7, ptr noundef %5) #9
  %143 = call zeroext i1 @s2n_result_is_ok(i32 %142)
  br i1 %143, label %168, label %144

144:                                              ; preds = %140
  %145 = tail call ptr @__errno_location() #10
  %146 = load i32, ptr %145, align 4, !tbaa !46
  %147 = load ptr, ptr @stderr, align 8, !tbaa !47
  %148 = call i32 @s2n_print_stacktrace(ptr noundef %147) #9
  %149 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %150 = trunc nuw i8 %149 to i1
  br i1 %150, label %151, label %155

151:                                              ; preds = %144
  %152 = load ptr, ptr @stderr, align 8, !tbaa !47
  %153 = call i32 @fileno(ptr noundef %152) #9
  %154 = call i32 @isatty(i32 noundef %153) #9
  %.not = icmp eq i32 %154, 0
  br i1 %.not, label %155, label %156

155:                                              ; preds = %151, %144
  br label %156

156:                                              ; preds = %151, %155
  %.str.7.sink111 = phi ptr [ @.str.7, %155 ], [ @.str.3, %151 ]
  store i32 %146, ptr %145, align 4, !tbaa !46
  %157 = load ptr, ptr @stderr, align 8, !tbaa !47
  %158 = load i32, ptr @test_count, align 4, !tbaa !46
  %159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %160 = load i32, ptr %159, align 4, !tbaa !46
  %161 = call ptr @s2n_strerror(i32 noundef %160, ptr noundef nonnull @.str.6) #9
  %162 = load i32, ptr %159, align 4, !tbaa !46
  %163 = call ptr @s2n_strerror_debug(i32 noundef %162, ptr noundef nonnull @.str.6) #9
  %164 = load i32, ptr %145, align 4, !tbaa !46
  %165 = call ptr @strerror(i32 noundef %164) #9
  %166 = load i32, ptr %145, align 4, !tbaa !46
  %167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %157, ptr noundef nonnull %.str.7.sink111, i32 noundef %158, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.5, i32 noundef 75, ptr noundef %161, ptr noundef %163, ptr noundef %165, i32 noundef %166) #11
  call void @exit(i32 noundef 1) #12
  unreachable

168:                                              ; preds = %140
  %169 = load i32, ptr @test_count, align 4, !tbaa !46
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr @test_count, align 4, !tbaa !46
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  %172 = getelementptr inbounds i8, ptr %171, i64 8
  %173 = load ptr, ptr %172, align 8, !tbaa !52
  %174 = call i32 @s2n_pkey_match(ptr noundef nonnull %141, ptr noundef %173) #9
  %175 = icmp eq i32 %174, -1
  br i1 %175, label %176, label %200

176:                                              ; preds = %168
  %177 = tail call ptr @__errno_location() #10
  %178 = load i32, ptr %177, align 4, !tbaa !46
  %179 = load ptr, ptr @stderr, align 8, !tbaa !47
  %180 = call i32 @s2n_print_stacktrace(ptr noundef %179) #9
  %181 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %182 = trunc nuw i8 %181 to i1
  br i1 %182, label %183, label %187

183:                                              ; preds = %176
  %184 = load ptr, ptr @stderr, align 8, !tbaa !47
  %185 = call i32 @fileno(ptr noundef %184) #9
  %186 = call i32 @isatty(i32 noundef %185) #9
  %.not57 = icmp eq i32 %186, 0
  br i1 %.not57, label %187, label %188

187:                                              ; preds = %183, %176
  br label %188

188:                                              ; preds = %183, %187
  %.str.7.sink122 = phi ptr [ @.str.7, %187 ], [ @.str.3, %183 ]
  store i32 %178, ptr %177, align 4, !tbaa !46
  %189 = load ptr, ptr @stderr, align 8, !tbaa !47
  %190 = load i32, ptr @test_count, align 4, !tbaa !46
  %191 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %192 = load i32, ptr %191, align 4, !tbaa !46
  %193 = call ptr @s2n_strerror(i32 noundef %192, ptr noundef nonnull @.str.6) #9
  %194 = load i32, ptr %191, align 4, !tbaa !46
  %195 = call ptr @s2n_strerror_debug(i32 noundef %194, ptr noundef nonnull @.str.6) #9
  %196 = load i32, ptr %177, align 4, !tbaa !46
  %197 = call ptr @strerror(i32 noundef %196) #9
  %198 = load i32, ptr %177, align 4, !tbaa !46
  %199 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %189, ptr noundef nonnull %.str.7.sink122, i32 noundef %190, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.5, i32 noundef 76, ptr noundef %193, ptr noundef %195, ptr noundef %197, i32 noundef %198) #11
  call void @exit(i32 noundef 1) #12
  unreachable

200:                                              ; preds = %108, %168
  %201 = load i32, ptr @test_count, align 4, !tbaa !46
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr @test_count, align 4, !tbaa !46
  %203 = getelementptr inbounds i8, ptr %0, i64 2016
  %204 = getelementptr inbounds i8, ptr %0, i64 2056
  %205 = load ptr, ptr %204, align 8, !tbaa !54
  %206 = getelementptr inbounds i8, ptr %205, i64 168
  %207 = call i32 @s2n_hash_init(ptr noundef nonnull %206, i32 noundef 4) #9
  %208 = icmp eq i32 %207, -1
  br i1 %208, label %209, label %233

209:                                              ; preds = %200
  %210 = tail call ptr @__errno_location() #10
  %211 = load i32, ptr %210, align 4, !tbaa !46
  %212 = load ptr, ptr @stderr, align 8, !tbaa !47
  %213 = call i32 @s2n_print_stacktrace(ptr noundef %212) #9
  %214 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %215 = trunc nuw i8 %214 to i1
  br i1 %215, label %216, label %220

216:                                              ; preds = %209
  %217 = load ptr, ptr @stderr, align 8, !tbaa !47
  %218 = call i32 @fileno(ptr noundef %217) #9
  %219 = call i32 @isatty(i32 noundef %218) #9
  %.not64 = icmp eq i32 %219, 0
  br i1 %.not64, label %220, label %221

220:                                              ; preds = %216, %209
  br label %221

221:                                              ; preds = %216, %220
  %.str.7.sink133 = phi ptr [ @.str.7, %220 ], [ @.str.3, %216 ]
  store i32 %211, ptr %210, align 4, !tbaa !46
  %222 = load ptr, ptr @stderr, align 8, !tbaa !47
  %223 = load i32, ptr @test_count, align 4, !tbaa !46
  %224 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %225 = load i32, ptr %224, align 4, !tbaa !46
  %226 = call ptr @s2n_strerror(i32 noundef %225, ptr noundef nonnull @.str.6) #9
  %227 = load i32, ptr %224, align 4, !tbaa !46
  %228 = call ptr @s2n_strerror_debug(i32 noundef %227, ptr noundef nonnull @.str.6) #9
  %229 = load i32, ptr %210, align 4, !tbaa !46
  %230 = call ptr @strerror(i32 noundef %229) #9
  %231 = load i32, ptr %210, align 4, !tbaa !46
  %232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %222, ptr noundef nonnull %.str.7.sink133, i32 noundef %223, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 80, ptr noundef %226, ptr noundef %228, ptr noundef %230, i32 noundef %231) #11
  call void @exit(i32 noundef 1) #12
  unreachable

233:                                              ; preds = %200
  %234 = load i32, ptr @test_count, align 4, !tbaa !46
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr @test_count, align 4, !tbaa !46
  %236 = load ptr, ptr %204, align 8, !tbaa !54
  %237 = getelementptr inbounds i8, ptr %236, i64 168
  %238 = call i32 @s2n_hash_update(ptr noundef nonnull %237, ptr noundef nonnull @hello, i32 noundef 15) #9
  %239 = icmp eq i32 %238, -1
  br i1 %239, label %240, label %264

240:                                              ; preds = %233
  %241 = tail call ptr @__errno_location() #10
  %242 = load i32, ptr %241, align 4, !tbaa !46
  %243 = load ptr, ptr @stderr, align 8, !tbaa !47
  %244 = call i32 @s2n_print_stacktrace(ptr noundef %243) #9
  %245 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %246 = trunc nuw i8 %245 to i1
  br i1 %246, label %247, label %251

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

251:                                              ; preds = %247, %240
  br label %252

252:                                              ; preds = %247, %251
  %.str.7.sink144 = phi ptr [ @.str.7, %251 ], [ @.str.3, %247 ]
  store i32 %242, ptr %241, align 4, !tbaa !46
  %253 = load ptr, ptr @stderr, align 8, !tbaa !47
  %254 = load i32, ptr @test_count, align 4, !tbaa !46
  %255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %256 = load i32, ptr %255, align 4, !tbaa !46
  %257 = call ptr @s2n_strerror(i32 noundef %256, ptr noundef nonnull @.str.6) #9
  %258 = load i32, ptr %255, align 4, !tbaa !46
  %259 = call ptr @s2n_strerror_debug(i32 noundef %258, ptr noundef nonnull @.str.6) #9
  %260 = load i32, ptr %241, align 4, !tbaa !46
  %261 = call ptr @strerror(i32 noundef %260) #9
  %262 = load i32, ptr %241, align 4, !tbaa !46
  %263 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %253, ptr noundef nonnull %.str.7.sink144, i32 noundef %254, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.5, i32 noundef 81, ptr noundef %257, ptr noundef %259, ptr noundef %261, i32 noundef %262) #11
  call void @exit(i32 noundef 1) #12
  unreachable

264:                                              ; preds = %233
  %265 = load i32, ptr @test_count, align 4, !tbaa !46
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr @test_count, align 4, !tbaa !46
  %267 = getelementptr inbounds i8, ptr %1, i64 2016
  %268 = getelementptr inbounds i8, ptr %1, i64 2056
  %269 = load ptr, ptr %268, align 8, !tbaa !54
  %270 = getelementptr inbounds i8, ptr %269, i64 168
  %271 = call i32 @s2n_hash_init(ptr noundef nonnull %270, i32 noundef 4) #9
  %272 = icmp eq i32 %271, -1
  br i1 %272, label %273, label %297

273:                                              ; preds = %264
  %274 = tail call ptr @__errno_location() #10
  %275 = load i32, ptr %274, align 4, !tbaa !46
  %276 = load ptr, ptr @stderr, align 8, !tbaa !47
  %277 = call i32 @s2n_print_stacktrace(ptr noundef %276) #9
  %278 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %279 = trunc nuw i8 %278 to i1
  br i1 %279, label %280, label %284

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

284:                                              ; preds = %280, %273
  br label %285

285:                                              ; preds = %280, %284
  %.str.7.sink155 = phi ptr [ @.str.7, %284 ], [ @.str.3, %280 ]
  store i32 %275, ptr %274, align 4, !tbaa !46
  %286 = load ptr, ptr @stderr, align 8, !tbaa !47
  %287 = load i32, ptr @test_count, align 4, !tbaa !46
  %288 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %289 = load i32, ptr %288, align 4, !tbaa !46
  %290 = call ptr @s2n_strerror(i32 noundef %289, ptr noundef nonnull @.str.6) #9
  %291 = load i32, ptr %288, align 4, !tbaa !46
  %292 = call ptr @s2n_strerror_debug(i32 noundef %291, ptr noundef nonnull @.str.6) #9
  %293 = load i32, ptr %274, align 4, !tbaa !46
  %294 = call ptr @strerror(i32 noundef %293) #9
  %295 = load i32, ptr %274, align 4, !tbaa !46
  %296 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %286, ptr noundef nonnull %.str.7.sink155, i32 noundef %287, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 82, ptr noundef %290, ptr noundef %292, ptr noundef %294, i32 noundef %295) #11
  call void @exit(i32 noundef 1) #12
  unreachable

297:                                              ; preds = %264
  %298 = load i32, ptr @test_count, align 4, !tbaa !46
  %299 = add nsw i32 %298, 1
  store i32 %299, ptr @test_count, align 4, !tbaa !46
  %300 = load ptr, ptr %268, align 8, !tbaa !54
  %301 = getelementptr inbounds i8, ptr %300, i64 168
  %302 = call i32 @s2n_hash_update(ptr noundef nonnull %301, ptr noundef nonnull @hello, i32 noundef 15) #9
  %303 = icmp eq i32 %302, -1
  br i1 %303, label %304, label %328

304:                                              ; preds = %297
  %305 = tail call ptr @__errno_location() #10
  %306 = load i32, ptr %305, align 4, !tbaa !46
  %307 = load ptr, ptr @stderr, align 8, !tbaa !47
  %308 = call i32 @s2n_print_stacktrace(ptr noundef %307) #9
  %309 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %310 = trunc nuw i8 %309 to i1
  br i1 %310, label %311, label %315

311:                                              ; preds = %304
  %312 = load ptr, ptr @stderr, align 8, !tbaa !47
  %313 = call i32 @fileno(ptr noundef %312) #9
  %314 = call i32 @isatty(i32 noundef %313) #9
  %.not61 = icmp eq i32 %314, 0
  br i1 %.not61, label %315, label %316

315:                                              ; preds = %311, %304
  br label %316

316:                                              ; preds = %311, %315
  %.str.7.sink166 = phi ptr [ @.str.7, %315 ], [ @.str.3, %311 ]
  store i32 %306, ptr %305, align 4, !tbaa !46
  %317 = load ptr, ptr @stderr, align 8, !tbaa !47
  %318 = load i32, ptr @test_count, align 4, !tbaa !46
  %319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %320 = load i32, ptr %319, align 4, !tbaa !46
  %321 = call ptr @s2n_strerror(i32 noundef %320, ptr noundef nonnull @.str.6) #9
  %322 = load i32, ptr %319, align 4, !tbaa !46
  %323 = call ptr @s2n_strerror_debug(i32 noundef %322, ptr noundef nonnull @.str.6) #9
  %324 = load i32, ptr %305, align 4, !tbaa !46
  %325 = call ptr @strerror(i32 noundef %324) #9
  %326 = load i32, ptr %305, align 4, !tbaa !46
  %327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef nonnull %.str.7.sink166, i32 noundef %318, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.5, i32 noundef 83, ptr noundef %321, ptr noundef %323, ptr noundef %325, i32 noundef %326) #11
  call void @exit(i32 noundef 1) #12
  unreachable

328:                                              ; preds = %297
  %329 = load i32, ptr @test_count, align 4, !tbaa !46
  %330 = add nsw i32 %329, 1
  store i32 %330, ptr @test_count, align 4, !tbaa !46
  %331 = call i32 @s2n_tls13_cert_verify_send(ptr noundef nonnull %0)
  %332 = icmp eq i32 %331, -1
  br i1 %332, label %333, label %357

333:                                              ; preds = %328
  %334 = tail call ptr @__errno_location() #10
  %335 = load i32, ptr %334, align 4, !tbaa !46
  %336 = load ptr, ptr @stderr, align 8, !tbaa !47
  %337 = call i32 @s2n_print_stacktrace(ptr noundef %336) #9
  %338 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %339 = trunc nuw i8 %338 to i1
  br i1 %339, label %340, label %344

340:                                              ; preds = %333
  %341 = load ptr, ptr @stderr, align 8, !tbaa !47
  %342 = call i32 @fileno(ptr noundef %341) #9
  %343 = call i32 @isatty(i32 noundef %342) #9
  %.not60 = icmp eq i32 %343, 0
  br i1 %.not60, label %344, label %345

344:                                              ; preds = %340, %333
  br label %345

345:                                              ; preds = %340, %344
  %.str.7.sink177 = phi ptr [ @.str.7, %344 ], [ @.str.3, %340 ]
  store i32 %335, ptr %334, align 4, !tbaa !46
  %346 = load ptr, ptr @stderr, align 8, !tbaa !47
  %347 = load i32, ptr @test_count, align 4, !tbaa !46
  %348 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %349 = load i32, ptr %348, align 4, !tbaa !46
  %350 = call ptr @s2n_strerror(i32 noundef %349, ptr noundef nonnull @.str.6) #9
  %351 = load i32, ptr %348, align 4, !tbaa !46
  %352 = call ptr @s2n_strerror_debug(i32 noundef %351, ptr noundef nonnull @.str.6) #9
  %353 = load i32, ptr %334, align 4, !tbaa !46
  %354 = call ptr @strerror(i32 noundef %353) #9
  %355 = load i32, ptr %334, align 4, !tbaa !46
  %356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %346, ptr noundef nonnull %.str.7.sink177, i32 noundef %347, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.5, i32 noundef 86, ptr noundef %350, ptr noundef %352, ptr noundef %354, i32 noundef %355) #11
  call void @exit(i32 noundef 1) #12
  unreachable

357:                                              ; preds = %328
  %358 = load i32, ptr @test_count, align 4, !tbaa !46
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr @test_count, align 4, !tbaa !46
  %360 = getelementptr inbounds i8, ptr %0, i64 2044
  %361 = load i32, ptr %360, align 4, !tbaa !55
  %362 = getelementptr inbounds i8, ptr %0, i64 2040
  %363 = load i32, ptr %362, align 8, !tbaa !56
  %364 = sub i32 %361, %363
  %365 = call i32 @s2n_stuffer_copy(ptr noundef nonnull %203, ptr noundef nonnull %267, i32 noundef %364) #9
  %366 = icmp eq i32 %365, -1
  br i1 %366, label %367, label %391

367:                                              ; preds = %357
  %368 = tail call ptr @__errno_location() #10
  %369 = load i32, ptr %368, align 4, !tbaa !46
  %370 = load ptr, ptr @stderr, align 8, !tbaa !47
  %371 = call i32 @s2n_print_stacktrace(ptr noundef %370) #9
  %372 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !48, !range !49, !noundef !50
  %373 = trunc nuw i8 %372 to i1
  br i1 %373, label %374, label %378

374:                                              ; preds = %367
  %375 = load ptr, ptr @stderr, align 8, !tbaa !47
  %376 = call i32 @fileno(ptr noundef %375) #9
  %377 = call i32 @isatty(i32 noundef %376) #9
  %.not59 = icmp eq i32 %377, 0
  br i1 %.not59, label %378, label %379

378:                                              ; preds = %374, %367
  br label %379

379:                                              ; preds = %374, %378
  %.str.7.sink188 = phi ptr [ @.str.7, %378 ], [ @.str.3, %374 ]
  store i32 %369, ptr %368, align 4, !tbaa !46
  %380 = load ptr, ptr @stderr, align 8, !tbaa !47
  %381 = load i32, ptr @test_count, align 4, !tbaa !46
  %382 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %383 = load i32, ptr %382, align 4, !tbaa !46
  %384 = call ptr @s2n_strerror(i32 noundef %383, ptr noundef nonnull @.str.6) #9
  %385 = load i32, ptr %382, align 4, !tbaa !46
  %386 = call ptr @s2n_strerror_debug(i32 noundef %385, ptr noundef nonnull @.str.6) #9
  %387 = load i32, ptr %368, align 4, !tbaa !46
  %388 = call ptr @strerror(i32 noundef %387) #9
  %389 = load i32, ptr %368, align 4, !tbaa !46
  %390 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %380, ptr noundef nonnull %.str.7.sink188, i32 noundef %381, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.5, i32 noundef 88, ptr noundef %384, ptr noundef %386, ptr noundef %388, i32 noundef %389) #11
  call void @exit(i32 noundef 1) #12
  unreachable

391:                                              ; preds = %357
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  ret i32 0
}

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

declare i32 @s2n_asn1der_to_public_key_and_type(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_pkey_match(ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_hash_init(ptr noundef, i32 noundef) local_unnamed_addr #4

declare i32 @s2n_hash_update(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

declare i32 @s2n_stuffer_copy(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass