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

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

%struct.s2n_debug_info = type { ptr, ptr }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_tls13_keys = type { i32, i32, i8, %struct.s2n_blob, %struct.s2n_blob, [48 x i8], [48 x i8], %struct.s2n_hmac_state }
%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_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_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_kem_group = type { ptr, i16, ptr, ptr, i8 }
%struct.s2n_ecc_named_curve = type { i16, i32, ptr, i8, ptr }
%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 }

@_s2n_debug_info = external thread_local global %struct.s2n_debug_info, align 8
@s2n_errno = external thread_local global i32, align 4
@.str.32 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [111 x i8], align 1
@s2n_tls13_aes_256_gcm_sha384 = external global %struct.s2n_cipher_suite, align 8
@.str.101 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [111 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @s2n_conn_get_current_message_type(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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.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) #3

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

declare i32 @s2n_calculate_stacktrace() #5

declare zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef, i32 noundef) #5

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #4

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @s2n_test_tls13_pq_handshake(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i1 noundef zeroext %4, i1 noundef zeroext %5) #0 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca [12000 x i8], align 16
  %20 = alloca [12000 x i8], align 16
  %21 = alloca ptr, align 8
  %22 = alloca %struct.s2n_stuffer, align 8
  %23 = alloca %struct.s2n_stuffer, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca %struct.s2n_tls13_keys, align 8
  %29 = alloca %struct.s2n_tls13_keys, align 8
  %30 = alloca [48 x i8], align 16
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i8, align 1
  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
  %36 = zext i1 %4 to i8
  store i8 %36, ptr %12, align 1, !tbaa !9
  %37 = zext i1 %5 to i8
  store i8 %37, ptr %13, align 1, !tbaa !9
  br label %38

38:                                               ; preds = %6
  %39 = load ptr, ptr %10, align 8, !tbaa !5
  %40 = icmp eq ptr %39, null
  %41 = zext i1 %40 to i32
  %42 = load ptr, ptr %11, align 8, !tbaa !5
  %43 = icmp eq ptr %42, null
  %44 = zext i1 %43 to i32
  %45 = icmp ne i32 %41, %44
  br i1 %45, label %77, label %46

46:                                               ; preds = %38
  br label %47

47:                                               ; preds = %46
  br label %48

48:                                               ; preds = %47
  %49 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %50 = getelementptr inbounds %struct.s2n_debug_info, ptr %49, i32 0, i32 0
  store ptr @.str.32, ptr %50, align 8, !tbaa !11
  %51 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %52 = getelementptr inbounds %struct.s2n_debug_info, ptr %51, i32 0, i32 0
  %53 = load ptr, ptr %52, align 8, !tbaa !11
  %54 = getelementptr inbounds i8, ptr %53, i64 21
  %55 = call ptr @strrchr(ptr noundef %54, i32 noundef 47) #7
  %56 = icmp ne ptr %55, null
  br i1 %56, label %57, label %64

57:                                               ; preds = %48
  %58 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %59 = getelementptr inbounds %struct.s2n_debug_info, ptr %58, i32 0, i32 0
  %60 = load ptr, ptr %59, align 8, !tbaa !11
  %61 = getelementptr inbounds i8, ptr %60, i64 21
  %62 = call ptr @strrchr(ptr noundef %61, i32 noundef 47) #7
  %63 = getelementptr inbounds i8, ptr %62, i64 1
  br label %69

64:                                               ; preds = %48
  %65 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %66 = getelementptr inbounds %struct.s2n_debug_info, ptr %65, i32 0, i32 0
  %67 = load ptr, ptr %66, align 8, !tbaa !11
  %68 = getelementptr inbounds i8, ptr %67, i64 21
  br label %69

69:                                               ; preds = %64, %57
  %70 = phi ptr [ %63, %57 ], [ %68, %64 ]
  %71 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %72 = getelementptr inbounds %struct.s2n_debug_info, ptr %71, i32 0, i32 1
  store ptr %70, ptr %72, align 8, !tbaa !13
  %73 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %73, align 4, !tbaa !14
  %74 = call i32 @s2n_calculate_stacktrace()
  br label %75

75:                                               ; preds = %69
  store i32 -1, ptr %7, align 4
  br label %4095

76:                                               ; No predecessors!
  br label %77

77:                                               ; preds = %76, %38
  br label %78

78:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  store ptr null, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  store ptr null, ptr %15, align 8, !tbaa !5
  br label %79

79:                                               ; preds = %78
  %80 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %80, ptr %14, align 8, !tbaa !5
  %81 = icmp ne ptr %80, null
  br i1 %81, label %115, label %82

82:                                               ; preds = %79
  br label %83

83:                                               ; preds = %82
  br label %84

84:                                               ; preds = %83
  %85 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %86 = getelementptr inbounds %struct.s2n_debug_info, ptr %85, i32 0, i32 0
  store ptr @.str.33, ptr %86, align 8, !tbaa !11
  %87 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %88 = getelementptr inbounds %struct.s2n_debug_info, ptr %87, i32 0, i32 0
  %89 = load ptr, ptr %88, align 8, !tbaa !11
  %90 = getelementptr inbounds i8, ptr %89, i64 21
  %91 = call ptr @strrchr(ptr noundef %90, i32 noundef 47) #7
  %92 = icmp ne ptr %91, null
  br i1 %92, label %93, label %100

93:                                               ; preds = %84
  %94 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %95 = getelementptr inbounds %struct.s2n_debug_info, ptr %94, i32 0, i32 0
  %96 = load ptr, ptr %95, align 8, !tbaa !11
  %97 = getelementptr inbounds i8, ptr %96, i64 21
  %98 = call ptr @strrchr(ptr noundef %97, i32 noundef 47) #7
  %99 = getelementptr inbounds i8, ptr %98, i64 1
  br label %105

100:                                              ; preds = %84
  %101 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %102 = getelementptr inbounds %struct.s2n_debug_info, ptr %101, i32 0, i32 0
  %103 = load ptr, ptr %102, align 8, !tbaa !11
  %104 = getelementptr inbounds i8, ptr %103, i64 21
  br label %105

105:                                              ; preds = %100, %93
  %106 = phi ptr [ %99, %93 ], [ %104, %100 ]
  %107 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %108 = getelementptr inbounds %struct.s2n_debug_info, ptr %107, i32 0, i32 1
  store ptr %106, ptr %108, align 8, !tbaa !13
  %109 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %109, align 4, !tbaa !14
  %110 = call i32 @s2n_calculate_stacktrace()
  br label %111

111:                                              ; preds = %105
  br label %112

112:                                              ; preds = %111
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4094

113:                                              ; No predecessors!
  br label %114

114:                                              ; preds = %113
  br label %115

115:                                              ; preds = %114, %79
  br label %116

116:                                              ; preds = %115
  br label %117

117:                                              ; preds = %116
  br label %118

118:                                              ; preds = %117
  %119 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %119, ptr %15, align 8, !tbaa !5
  %120 = icmp ne ptr %119, null
  br i1 %120, label %154, label %121

121:                                              ; preds = %118
  br label %122

122:                                              ; preds = %121
  br label %123

123:                                              ; preds = %122
  %124 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %125 = getelementptr inbounds %struct.s2n_debug_info, ptr %124, i32 0, i32 0
  store ptr @.str.34, ptr %125, align 8, !tbaa !11
  %126 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %127 = getelementptr inbounds %struct.s2n_debug_info, ptr %126, i32 0, i32 0
  %128 = load ptr, ptr %127, align 8, !tbaa !11
  %129 = getelementptr inbounds i8, ptr %128, i64 21
  %130 = call ptr @strrchr(ptr noundef %129, i32 noundef 47) #7
  %131 = icmp ne ptr %130, null
  br i1 %131, label %132, label %139

132:                                              ; preds = %123
  %133 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %134 = getelementptr inbounds %struct.s2n_debug_info, ptr %133, i32 0, i32 0
  %135 = load ptr, ptr %134, align 8, !tbaa !11
  %136 = getelementptr inbounds i8, ptr %135, i64 21
  %137 = call ptr @strrchr(ptr noundef %136, i32 noundef 47) #7
  %138 = getelementptr inbounds i8, ptr %137, i64 1
  br label %144

139:                                              ; preds = %123
  %140 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %141 = getelementptr inbounds %struct.s2n_debug_info, ptr %140, i32 0, i32 0
  %142 = load ptr, ptr %141, align 8, !tbaa !11
  %143 = getelementptr inbounds i8, ptr %142, i64 21
  br label %144

144:                                              ; preds = %139, %132
  %145 = phi ptr [ %138, %132 ], [ %143, %139 ]
  %146 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %147 = getelementptr inbounds %struct.s2n_debug_info, ptr %146, i32 0, i32 1
  store ptr %145, ptr %147, align 8, !tbaa !13
  %148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %148, align 4, !tbaa !14
  %149 = call i32 @s2n_calculate_stacktrace()
  br label %150

150:                                              ; preds = %144
  br label %151

151:                                              ; preds = %150
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4094

152:                                              ; No predecessors!
  br label %153

153:                                              ; preds = %152
  br label %154

154:                                              ; preds = %153, %118
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  store ptr null, ptr %18, align 8, !tbaa !5
  br label %157

157:                                              ; preds = %156
  %158 = call ptr @s2n_config_new()
  store ptr %158, ptr %17, align 8, !tbaa !5
  %159 = icmp ne ptr %158, null
  br i1 %159, label %193, label %160

160:                                              ; preds = %157
  br label %161

161:                                              ; preds = %160
  br label %162

162:                                              ; preds = %161
  %163 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %164 = getelementptr inbounds %struct.s2n_debug_info, ptr %163, i32 0, i32 0
  store ptr @.str.35, ptr %164, align 8, !tbaa !11
  %165 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %166 = getelementptr inbounds %struct.s2n_debug_info, ptr %165, i32 0, i32 0
  %167 = load ptr, ptr %166, align 8, !tbaa !11
  %168 = getelementptr inbounds i8, ptr %167, i64 21
  %169 = call ptr @strrchr(ptr noundef %168, i32 noundef 47) #7
  %170 = icmp ne ptr %169, null
  br i1 %170, label %171, label %178

171:                                              ; preds = %162
  %172 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %173 = getelementptr inbounds %struct.s2n_debug_info, ptr %172, i32 0, i32 0
  %174 = load ptr, ptr %173, align 8, !tbaa !11
  %175 = getelementptr inbounds i8, ptr %174, i64 21
  %176 = call ptr @strrchr(ptr noundef %175, i32 noundef 47) #7
  %177 = getelementptr inbounds i8, ptr %176, i64 1
  br label %183

178:                                              ; preds = %162
  %179 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %180 = getelementptr inbounds %struct.s2n_debug_info, ptr %179, i32 0, i32 0
  %181 = load ptr, ptr %180, align 8, !tbaa !11
  %182 = getelementptr inbounds i8, ptr %181, i64 21
  br label %183

183:                                              ; preds = %178, %171
  %184 = phi ptr [ %177, %171 ], [ %182, %178 ]
  %185 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %186 = getelementptr inbounds %struct.s2n_debug_info, ptr %185, i32 0, i32 1
  store ptr %184, ptr %186, align 8, !tbaa !13
  %187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %187, align 4, !tbaa !14
  %188 = call i32 @s2n_calculate_stacktrace()
  br label %189

189:                                              ; preds = %183
  br label %190

190:                                              ; preds = %189
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4093

191:                                              ; No predecessors!
  br label %192

192:                                              ; preds = %191
  br label %193

193:                                              ; preds = %192, %157
  br label %194

194:                                              ; preds = %193
  br label %195

195:                                              ; preds = %194
  br label %196

196:                                              ; preds = %195
  %197 = call ptr @s2n_config_new()
  store ptr %197, ptr %18, align 8, !tbaa !5
  %198 = icmp ne ptr %197, null
  br i1 %198, label %232, label %199

199:                                              ; preds = %196
  br label %200

200:                                              ; preds = %199
  br label %201

201:                                              ; preds = %200
  %202 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %203 = getelementptr inbounds %struct.s2n_debug_info, ptr %202, i32 0, i32 0
  store ptr @.str.36, ptr %203, align 8, !tbaa !11
  %204 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %205 = getelementptr inbounds %struct.s2n_debug_info, ptr %204, i32 0, i32 0
  %206 = load ptr, ptr %205, align 8, !tbaa !11
  %207 = getelementptr inbounds i8, ptr %206, i64 21
  %208 = call ptr @strrchr(ptr noundef %207, i32 noundef 47) #7
  %209 = icmp ne ptr %208, null
  br i1 %209, label %210, label %217

210:                                              ; preds = %201
  %211 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %212 = getelementptr inbounds %struct.s2n_debug_info, ptr %211, i32 0, i32 0
  %213 = load ptr, ptr %212, align 8, !tbaa !11
  %214 = getelementptr inbounds i8, ptr %213, i64 21
  %215 = call ptr @strrchr(ptr noundef %214, i32 noundef 47) #7
  %216 = getelementptr inbounds i8, ptr %215, i64 1
  br label %222

217:                                              ; preds = %201
  %218 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %219 = getelementptr inbounds %struct.s2n_debug_info, ptr %218, i32 0, i32 0
  %220 = load ptr, ptr %219, align 8, !tbaa !11
  %221 = getelementptr inbounds i8, ptr %220, i64 21
  br label %222

222:                                              ; preds = %217, %210
  %223 = phi ptr [ %216, %210 ], [ %221, %217 ]
  %224 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %225 = getelementptr inbounds %struct.s2n_debug_info, ptr %224, i32 0, i32 1
  store ptr %223, ptr %225, align 8, !tbaa !13
  %226 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %226, align 4, !tbaa !14
  %227 = call i32 @s2n_calculate_stacktrace()
  br label %228

228:                                              ; preds = %222
  br label %229

229:                                              ; preds = %228
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4093

230:                                              ; No predecessors!
  br label %231

231:                                              ; preds = %230
  br label %232

232:                                              ; preds = %231, %196
  br label %233

233:                                              ; preds = %232
  br label %234

234:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 12000, ptr %19) #8
  call void @llvm.memset.p0.i64(ptr align 16 %19, i8 0, i64 12000, i1 false)
  call void @llvm.lifetime.start.p0(i64 12000, ptr %20) #8
  call void @llvm.memset.p0.i64(ptr align 16 %20, i8 0, i64 12000, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  store ptr null, ptr %21, align 8, !tbaa !5
  br label %235

235:                                              ; preds = %234
  %236 = call ptr @s2n_cert_chain_and_key_new()
  store ptr %236, ptr %21, align 8, !tbaa !5
  %237 = icmp ne ptr %236, null
  br i1 %237, label %271, label %238

238:                                              ; preds = %235
  br label %239

239:                                              ; preds = %238
  br label %240

240:                                              ; preds = %239
  %241 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %242 = getelementptr inbounds %struct.s2n_debug_info, ptr %241, i32 0, i32 0
  store ptr @.str.37, ptr %242, align 8, !tbaa !11
  %243 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %244 = getelementptr inbounds %struct.s2n_debug_info, ptr %243, i32 0, i32 0
  %245 = load ptr, ptr %244, align 8, !tbaa !11
  %246 = getelementptr inbounds i8, ptr %245, i64 21
  %247 = call ptr @strrchr(ptr noundef %246, i32 noundef 47) #7
  %248 = icmp ne ptr %247, null
  br i1 %248, label %249, label %256

249:                                              ; preds = %240
  %250 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %251 = getelementptr inbounds %struct.s2n_debug_info, ptr %250, i32 0, i32 0
  %252 = load ptr, ptr %251, align 8, !tbaa !11
  %253 = getelementptr inbounds i8, ptr %252, i64 21
  %254 = call ptr @strrchr(ptr noundef %253, i32 noundef 47) #7
  %255 = getelementptr inbounds i8, ptr %254, i64 1
  br label %261

256:                                              ; preds = %240
  %257 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %258 = getelementptr inbounds %struct.s2n_debug_info, ptr %257, i32 0, i32 0
  %259 = load ptr, ptr %258, align 8, !tbaa !11
  %260 = getelementptr inbounds i8, ptr %259, i64 21
  br label %261

261:                                              ; preds = %256, %249
  %262 = phi ptr [ %255, %249 ], [ %260, %256 ]
  %263 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %264 = getelementptr inbounds %struct.s2n_debug_info, ptr %263, i32 0, i32 1
  store ptr %262, ptr %264, align 8, !tbaa !13
  %265 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %265, align 4, !tbaa !14
  %266 = call i32 @s2n_calculate_stacktrace()
  br label %267

267:                                              ; preds = %261
  br label %268

268:                                              ; preds = %267
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4092

269:                                              ; No predecessors!
  br label %270

270:                                              ; preds = %269
  br label %271

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

272:                                              ; preds = %271
  br label %273

273:                                              ; preds = %272
  br label %274

274:                                              ; preds = %273
  %275 = getelementptr inbounds [12000 x i8], ptr %19, i64 0, i64 0
  %276 = call i32 @s2n_read_test_pem(ptr noundef @.str.38, ptr noundef %275, i64 noundef 12000)
  %277 = icmp sgt i32 %276, -1
  br i1 %277, label %279, label %278

278:                                              ; preds = %274
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4092

279:                                              ; preds = %274
  br label %280

280:                                              ; preds = %279
  br label %281

281:                                              ; preds = %280
  br label %282

282:                                              ; preds = %281
  %283 = getelementptr inbounds [12000 x i8], ptr %20, i64 0, i64 0
  %284 = call i32 @s2n_read_test_pem(ptr noundef @.str.39, ptr noundef %283, i64 noundef 12000)
  %285 = icmp sgt i32 %284, -1
  br i1 %285, label %287, label %286

286:                                              ; preds = %282
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4092

287:                                              ; preds = %282
  br label %288

288:                                              ; preds = %287
  br label %289

289:                                              ; preds = %288
  br label %290

290:                                              ; preds = %289
  %291 = load ptr, ptr %21, align 8, !tbaa !5
  %292 = getelementptr inbounds [12000 x i8], ptr %19, i64 0, i64 0
  %293 = getelementptr inbounds [12000 x i8], ptr %20, i64 0, i64 0
  %294 = call i32 @s2n_cert_chain_and_key_load_pem(ptr noundef %291, ptr noundef %292, ptr noundef %293)
  %295 = icmp sgt i32 %294, -1
  br i1 %295, label %297, label %296

296:                                              ; preds = %290
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4092

297:                                              ; preds = %290
  br label %298

298:                                              ; preds = %297
  br label %299

299:                                              ; preds = %298
  br label %300

300:                                              ; preds = %299
  %301 = load ptr, ptr %17, align 8, !tbaa !5
  %302 = load ptr, ptr %21, align 8, !tbaa !5
  %303 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %301, ptr noundef %302)
  %304 = icmp sgt i32 %303, -1
  br i1 %304, label %306, label %305

305:                                              ; preds = %300
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4092

306:                                              ; preds = %300
  br label %307

307:                                              ; preds = %306
  br label %308

308:                                              ; preds = %307
  br label %309

309:                                              ; preds = %308
  %310 = load ptr, ptr %18, align 8, !tbaa !5
  %311 = load ptr, ptr %21, align 8, !tbaa !5
  %312 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %310, ptr noundef %311)
  %313 = icmp sgt i32 %312, -1
  br i1 %313, label %315, label %314

314:                                              ; preds = %309
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4092

315:                                              ; preds = %309
  br label %316

316:                                              ; preds = %315
  br label %317

317:                                              ; preds = %316
  br label %318

318:                                              ; preds = %317
  %319 = load ptr, ptr %14, align 8, !tbaa !5
  %320 = load ptr, ptr %17, align 8, !tbaa !5
  %321 = call i32 @s2n_connection_set_config(ptr noundef %319, ptr noundef %320)
  %322 = icmp sgt i32 %321, -1
  br i1 %322, label %324, label %323

323:                                              ; preds = %318
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4092

324:                                              ; preds = %318
  br label %325

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325
  br label %327

327:                                              ; preds = %326
  %328 = load ptr, ptr %15, align 8, !tbaa !5
  %329 = load ptr, ptr %18, align 8, !tbaa !5
  %330 = call i32 @s2n_connection_set_config(ptr noundef %328, ptr noundef %329)
  %331 = icmp sgt i32 %330, -1
  br i1 %331, label %333, label %332

332:                                              ; preds = %327
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4092

333:                                              ; preds = %327
  br label %334

334:                                              ; preds = %333
  br label %335

335:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 40, ptr %22) #8
  call void @llvm.memset.p0.i64(ptr align 8 %22, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr %23) #8
  call void @llvm.memset.p0.i64(ptr align 8 %23, i8 0, i64 40, i1 false)
  br label %336

336:                                              ; preds = %335
  %337 = call i32 @s2n_stuffer_growable_alloc(ptr noundef %22, i32 noundef 2048)
  %338 = icmp sgt i32 %337, -1
  br i1 %338, label %340, label %339

339:                                              ; preds = %336
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

340:                                              ; preds = %336
  br label %341

341:                                              ; preds = %340
  br label %342

342:                                              ; preds = %341
  br label %343

343:                                              ; preds = %342
  %344 = call i32 @s2n_stuffer_growable_alloc(ptr noundef %23, i32 noundef 2048)
  %345 = icmp sgt i32 %344, -1
  br i1 %345, label %347, label %346

346:                                              ; preds = %343
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

347:                                              ; preds = %343
  br label %348

348:                                              ; preds = %347
  br label %349

349:                                              ; preds = %348
  br label %350

350:                                              ; preds = %349
  %351 = load ptr, ptr %14, align 8, !tbaa !5
  %352 = call i32 @s2n_connection_set_io_stuffers(ptr noundef %23, ptr noundef %22, ptr noundef %351)
  %353 = icmp sgt i32 %352, -1
  br i1 %353, label %355, label %354

354:                                              ; preds = %350
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

355:                                              ; preds = %350
  br label %356

356:                                              ; preds = %355
  br label %357

357:                                              ; preds = %356
  br label %358

358:                                              ; preds = %357
  %359 = load ptr, ptr %15, align 8, !tbaa !5
  %360 = call i32 @s2n_connection_set_io_stuffers(ptr noundef %22, ptr noundef %23, ptr noundef %359)
  %361 = icmp sgt i32 %360, -1
  br i1 %361, label %363, label %362

362:                                              ; preds = %358
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

363:                                              ; preds = %358
  br label %364

364:                                              ; preds = %363
  br label %365

365:                                              ; preds = %364
  %366 = load ptr, ptr %8, align 8, !tbaa !5
  %367 = load ptr, ptr %14, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.s2n_connection, ptr %367, i32 0, i32 2
  store ptr %366, ptr %368, align 8, !tbaa !16
  %369 = load ptr, ptr %9, align 8, !tbaa !5
  %370 = load ptr, ptr %15, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.s2n_connection, ptr %370, i32 0, i32 2
  store ptr %369, ptr %371, align 8, !tbaa !16
  br label %372

372:                                              ; preds = %365
  %373 = load ptr, ptr %14, align 8, !tbaa !5
  %374 = call i32 @s2n_conn_get_current_message_type(ptr noundef %373)
  %375 = icmp eq i32 %374, 0
  br i1 %375, label %409, label %376

376:                                              ; preds = %372
  br label %377

377:                                              ; preds = %376
  br label %378

378:                                              ; preds = %377
  %379 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %380 = getelementptr inbounds %struct.s2n_debug_info, ptr %379, i32 0, i32 0
  store ptr @.str.40, ptr %380, align 8, !tbaa !11
  %381 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %382 = getelementptr inbounds %struct.s2n_debug_info, ptr %381, i32 0, i32 0
  %383 = load ptr, ptr %382, align 8, !tbaa !11
  %384 = getelementptr inbounds i8, ptr %383, i64 21
  %385 = call ptr @strrchr(ptr noundef %384, i32 noundef 47) #7
  %386 = icmp ne ptr %385, null
  br i1 %386, label %387, label %394

387:                                              ; preds = %378
  %388 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %389 = getelementptr inbounds %struct.s2n_debug_info, ptr %388, i32 0, i32 0
  %390 = load ptr, ptr %389, align 8, !tbaa !11
  %391 = getelementptr inbounds i8, ptr %390, i64 21
  %392 = call ptr @strrchr(ptr noundef %391, i32 noundef 47) #7
  %393 = getelementptr inbounds i8, ptr %392, i64 1
  br label %399

394:                                              ; preds = %378
  %395 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %396 = getelementptr inbounds %struct.s2n_debug_info, ptr %395, i32 0, i32 0
  %397 = load ptr, ptr %396, align 8, !tbaa !11
  %398 = getelementptr inbounds i8, ptr %397, i64 21
  br label %399

399:                                              ; preds = %394, %387
  %400 = phi ptr [ %393, %387 ], [ %398, %394 ]
  %401 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %402 = getelementptr inbounds %struct.s2n_debug_info, ptr %401, i32 0, i32 1
  store ptr %400, ptr %402, align 8, !tbaa !13
  %403 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %403, align 4, !tbaa !14
  %404 = call i32 @s2n_calculate_stacktrace()
  br label %405

405:                                              ; preds = %399
  br label %406

406:                                              ; preds = %405
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

407:                                              ; No predecessors!
  br label %408

408:                                              ; preds = %407
  br label %409

409:                                              ; preds = %408, %372
  br label %410

410:                                              ; preds = %409
  br label %411

411:                                              ; preds = %410
  br label %412

412:                                              ; preds = %411
  %413 = load ptr, ptr %14, align 8, !tbaa !5
  %414 = call i32 @s2n_handshake_write_io(ptr noundef %413)
  %415 = icmp sgt i32 %414, -1
  br i1 %415, label %417, label %416

416:                                              ; preds = %412
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

417:                                              ; preds = %412
  br label %418

418:                                              ; preds = %417
  br label %419

419:                                              ; preds = %418
  br label %420

420:                                              ; preds = %419
  %421 = load ptr, ptr %14, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.s2n_connection, ptr %421, i32 0, i32 23
  %423 = load i8, ptr %422, align 4, !tbaa !43
  %424 = zext i8 %423 to i32
  %425 = icmp eq i32 %424, 34
  br i1 %425, label %459, label %426

426:                                              ; preds = %420
  br label %427

427:                                              ; preds = %426
  br label %428

428:                                              ; preds = %427
  %429 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %430 = getelementptr inbounds %struct.s2n_debug_info, ptr %429, i32 0, i32 0
  store ptr @.str.41, ptr %430, align 8, !tbaa !11
  %431 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %432 = getelementptr inbounds %struct.s2n_debug_info, ptr %431, i32 0, i32 0
  %433 = load ptr, ptr %432, align 8, !tbaa !11
  %434 = getelementptr inbounds i8, ptr %433, i64 21
  %435 = call ptr @strrchr(ptr noundef %434, i32 noundef 47) #7
  %436 = icmp ne ptr %435, null
  br i1 %436, label %437, label %444

437:                                              ; preds = %428
  %438 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %439 = getelementptr inbounds %struct.s2n_debug_info, ptr %438, i32 0, i32 0
  %440 = load ptr, ptr %439, align 8, !tbaa !11
  %441 = getelementptr inbounds i8, ptr %440, i64 21
  %442 = call ptr @strrchr(ptr noundef %441, i32 noundef 47) #7
  %443 = getelementptr inbounds i8, ptr %442, i64 1
  br label %449

444:                                              ; preds = %428
  %445 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %446 = getelementptr inbounds %struct.s2n_debug_info, ptr %445, i32 0, i32 0
  %447 = load ptr, ptr %446, align 8, !tbaa !11
  %448 = getelementptr inbounds i8, ptr %447, i64 21
  br label %449

449:                                              ; preds = %444, %437
  %450 = phi ptr [ %443, %437 ], [ %448, %444 ]
  %451 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %452 = getelementptr inbounds %struct.s2n_debug_info, ptr %451, i32 0, i32 1
  store ptr %450, ptr %452, align 8, !tbaa !13
  %453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %453, align 4, !tbaa !14
  %454 = call i32 @s2n_calculate_stacktrace()
  br label %455

455:                                              ; preds = %449
  br label %456

456:                                              ; preds = %455
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

457:                                              ; No predecessors!
  br label %458

458:                                              ; preds = %457
  br label %459

459:                                              ; preds = %458, %420
  br label %460

460:                                              ; preds = %459
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  %463 = load ptr, ptr %15, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.s2n_connection, ptr %463, i32 0, i32 23
  %465 = load i8, ptr %464, align 4, !tbaa !43
  %466 = zext i8 %465 to i32
  %467 = icmp eq i32 %466, 0
  br i1 %467, label %501, label %468

468:                                              ; preds = %462
  br label %469

469:                                              ; preds = %468
  br label %470

470:                                              ; preds = %469
  %471 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %472 = getelementptr inbounds %struct.s2n_debug_info, ptr %471, i32 0, i32 0
  store ptr @.str.42, ptr %472, align 8, !tbaa !11
  %473 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %474 = getelementptr inbounds %struct.s2n_debug_info, ptr %473, i32 0, i32 0
  %475 = load ptr, ptr %474, align 8, !tbaa !11
  %476 = getelementptr inbounds i8, ptr %475, i64 21
  %477 = call ptr @strrchr(ptr noundef %476, i32 noundef 47) #7
  %478 = icmp ne ptr %477, null
  br i1 %478, label %479, label %486

479:                                              ; preds = %470
  %480 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %481 = getelementptr inbounds %struct.s2n_debug_info, ptr %480, i32 0, i32 0
  %482 = load ptr, ptr %481, align 8, !tbaa !11
  %483 = getelementptr inbounds i8, ptr %482, i64 21
  %484 = call ptr @strrchr(ptr noundef %483, i32 noundef 47) #7
  %485 = getelementptr inbounds i8, ptr %484, i64 1
  br label %491

486:                                              ; preds = %470
  %487 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %488 = getelementptr inbounds %struct.s2n_debug_info, ptr %487, i32 0, i32 0
  %489 = load ptr, ptr %488, align 8, !tbaa !11
  %490 = getelementptr inbounds i8, ptr %489, i64 21
  br label %491

491:                                              ; preds = %486, %479
  %492 = phi ptr [ %485, %479 ], [ %490, %486 ]
  %493 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %494 = getelementptr inbounds %struct.s2n_debug_info, ptr %493, i32 0, i32 1
  store ptr %492, ptr %494, align 8, !tbaa !13
  %495 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %495, align 4, !tbaa !14
  %496 = call i32 @s2n_calculate_stacktrace()
  br label %497

497:                                              ; preds = %491
  br label %498

498:                                              ; preds = %497
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

499:                                              ; No predecessors!
  br label %500

500:                                              ; preds = %499
  br label %501

501:                                              ; preds = %500, %462
  br label %502

502:                                              ; preds = %501
  br label %503

503:                                              ; preds = %502
  br label %504

504:                                              ; preds = %503
  %505 = load ptr, ptr %14, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.s2n_connection, ptr %505, i32 0, i32 52
  %507 = getelementptr inbounds %struct.s2n_handshake, ptr %506, i32 0, i32 6
  %508 = load i32, ptr %507, align 4, !tbaa !44
  %509 = icmp eq i32 %508, 0
  br i1 %509, label %543, label %510

510:                                              ; preds = %504
  br label %511

511:                                              ; preds = %510
  br label %512

512:                                              ; preds = %511
  %513 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %514 = getelementptr inbounds %struct.s2n_debug_info, ptr %513, i32 0, i32 0
  store ptr @.str.43, ptr %514, align 8, !tbaa !11
  %515 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %516 = getelementptr inbounds %struct.s2n_debug_info, ptr %515, i32 0, i32 0
  %517 = load ptr, ptr %516, align 8, !tbaa !11
  %518 = getelementptr inbounds i8, ptr %517, i64 21
  %519 = call ptr @strrchr(ptr noundef %518, i32 noundef 47) #7
  %520 = icmp ne ptr %519, null
  br i1 %520, label %521, label %528

521:                                              ; preds = %512
  %522 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %523 = getelementptr inbounds %struct.s2n_debug_info, ptr %522, i32 0, i32 0
  %524 = load ptr, ptr %523, align 8, !tbaa !11
  %525 = getelementptr inbounds i8, ptr %524, i64 21
  %526 = call ptr @strrchr(ptr noundef %525, i32 noundef 47) #7
  %527 = getelementptr inbounds i8, ptr %526, i64 1
  br label %533

528:                                              ; preds = %512
  %529 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %530 = getelementptr inbounds %struct.s2n_debug_info, ptr %529, i32 0, i32 0
  %531 = load ptr, ptr %530, align 8, !tbaa !11
  %532 = getelementptr inbounds i8, ptr %531, i64 21
  br label %533

533:                                              ; preds = %528, %521
  %534 = phi ptr [ %527, %521 ], [ %532, %528 ]
  %535 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %536 = getelementptr inbounds %struct.s2n_debug_info, ptr %535, i32 0, i32 1
  store ptr %534, ptr %536, align 8, !tbaa !13
  %537 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %537, align 4, !tbaa !14
  %538 = call i32 @s2n_calculate_stacktrace()
  br label %539

539:                                              ; preds = %533
  br label %540

540:                                              ; preds = %539
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

541:                                              ; No predecessors!
  br label %542

542:                                              ; preds = %541
  br label %543

543:                                              ; preds = %542, %504
  br label %544

544:                                              ; preds = %543
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545
  %547 = load ptr, ptr %15, align 8, !tbaa !5
  %548 = call i32 @s2n_conn_get_current_message_type(ptr noundef %547)
  %549 = icmp eq i32 %548, 0
  br i1 %549, label %583, label %550

550:                                              ; preds = %546
  br label %551

551:                                              ; preds = %550
  br label %552

552:                                              ; preds = %551
  %553 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %554 = getelementptr inbounds %struct.s2n_debug_info, ptr %553, i32 0, i32 0
  store ptr @.str.44, ptr %554, align 8, !tbaa !11
  %555 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %556 = getelementptr inbounds %struct.s2n_debug_info, ptr %555, i32 0, i32 0
  %557 = load ptr, ptr %556, align 8, !tbaa !11
  %558 = getelementptr inbounds i8, ptr %557, i64 21
  %559 = call ptr @strrchr(ptr noundef %558, i32 noundef 47) #7
  %560 = icmp ne ptr %559, null
  br i1 %560, label %561, label %568

561:                                              ; preds = %552
  %562 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %563 = getelementptr inbounds %struct.s2n_debug_info, ptr %562, i32 0, i32 0
  %564 = load ptr, ptr %563, align 8, !tbaa !11
  %565 = getelementptr inbounds i8, ptr %564, i64 21
  %566 = call ptr @strrchr(ptr noundef %565, i32 noundef 47) #7
  %567 = getelementptr inbounds i8, ptr %566, i64 1
  br label %573

568:                                              ; preds = %552
  %569 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %570 = getelementptr inbounds %struct.s2n_debug_info, ptr %569, i32 0, i32 0
  %571 = load ptr, ptr %570, align 8, !tbaa !11
  %572 = getelementptr inbounds i8, ptr %571, i64 21
  br label %573

573:                                              ; preds = %568, %561
  %574 = phi ptr [ %567, %561 ], [ %572, %568 ]
  %575 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %576 = getelementptr inbounds %struct.s2n_debug_info, ptr %575, i32 0, i32 1
  store ptr %574, ptr %576, align 8, !tbaa !13
  %577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %577, align 4, !tbaa !14
  %578 = call i32 @s2n_calculate_stacktrace()
  br label %579

579:                                              ; preds = %573
  br label %580

580:                                              ; preds = %579
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

581:                                              ; No predecessors!
  br label %582

582:                                              ; preds = %581
  br label %583

583:                                              ; preds = %582, %546
  br label %584

584:                                              ; preds = %583
  br label %585

585:                                              ; preds = %584
  br label %586

586:                                              ; preds = %585
  %587 = load ptr, ptr %15, align 8, !tbaa !5
  %588 = call i32 @s2n_handshake_read_io(ptr noundef %587)
  %589 = icmp sgt i32 %588, -1
  br i1 %589, label %591, label %590

590:                                              ; preds = %586
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

591:                                              ; preds = %586
  br label %592

592:                                              ; preds = %591
  br label %593

593:                                              ; preds = %592
  br label %594

594:                                              ; preds = %593
  %595 = load ptr, ptr %15, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.s2n_connection, ptr %595, i32 0, i32 23
  %597 = load i8, ptr %596, align 4, !tbaa !43
  %598 = zext i8 %597 to i32
  %599 = icmp eq i32 %598, 34
  br i1 %599, label %633, label %600

600:                                              ; preds = %594
  br label %601

601:                                              ; preds = %600
  br label %602

602:                                              ; preds = %601
  %603 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %604 = getelementptr inbounds %struct.s2n_debug_info, ptr %603, i32 0, i32 0
  store ptr @.str.45, ptr %604, align 8, !tbaa !11
  %605 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %606 = getelementptr inbounds %struct.s2n_debug_info, ptr %605, i32 0, i32 0
  %607 = load ptr, ptr %606, align 8, !tbaa !11
  %608 = getelementptr inbounds i8, ptr %607, i64 21
  %609 = call ptr @strrchr(ptr noundef %608, i32 noundef 47) #7
  %610 = icmp ne ptr %609, null
  br i1 %610, label %611, label %618

611:                                              ; preds = %602
  %612 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %613 = getelementptr inbounds %struct.s2n_debug_info, ptr %612, i32 0, i32 0
  %614 = load ptr, ptr %613, align 8, !tbaa !11
  %615 = getelementptr inbounds i8, ptr %614, i64 21
  %616 = call ptr @strrchr(ptr noundef %615, i32 noundef 47) #7
  %617 = getelementptr inbounds i8, ptr %616, i64 1
  br label %623

618:                                              ; preds = %602
  %619 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %620 = getelementptr inbounds %struct.s2n_debug_info, ptr %619, i32 0, i32 0
  %621 = load ptr, ptr %620, align 8, !tbaa !11
  %622 = getelementptr inbounds i8, ptr %621, i64 21
  br label %623

623:                                              ; preds = %618, %611
  %624 = phi ptr [ %617, %611 ], [ %622, %618 ]
  %625 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %626 = getelementptr inbounds %struct.s2n_debug_info, ptr %625, i32 0, i32 1
  store ptr %624, ptr %626, align 8, !tbaa !13
  %627 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %627, align 4, !tbaa !14
  %628 = call i32 @s2n_calculate_stacktrace()
  br label %629

629:                                              ; preds = %623
  br label %630

630:                                              ; preds = %629
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

631:                                              ; No predecessors!
  br label %632

632:                                              ; preds = %631
  br label %633

633:                                              ; preds = %632, %594
  br label %634

634:                                              ; preds = %633
  br label %635

635:                                              ; preds = %634
  %636 = load ptr, ptr %10, align 8, !tbaa !5
  %637 = icmp ne ptr %636, null
  br i1 %637, label %638, label %969

638:                                              ; preds = %635
  br label %639

639:                                              ; preds = %638
  %640 = load i8, ptr %13, align 1, !tbaa !9, !range !45, !noundef !46
  %641 = trunc i8 %640 to i1
  %642 = zext i1 %641 to i32
  %643 = load ptr, ptr %14, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.s2n_connection, ptr %643, i32 0, i32 31
  %645 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %644, i32 0, i32 5
  %646 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %645, i32 0, i32 1
  %647 = getelementptr inbounds %struct.s2n_kem_params, ptr %646, i32 0, i32 4
  %648 = load i8, ptr %647, align 8, !tbaa !47, !range !45, !noundef !46
  %649 = trunc i8 %648 to i1
  %650 = zext i1 %649 to i32
  %651 = icmp eq i32 %642, %650
  br i1 %651, label %685, label %652

652:                                              ; preds = %639
  br label %653

653:                                              ; preds = %652
  br label %654

654:                                              ; preds = %653
  %655 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %656 = getelementptr inbounds %struct.s2n_debug_info, ptr %655, i32 0, i32 0
  store ptr @.str.46, ptr %656, align 8, !tbaa !11
  %657 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %658 = getelementptr inbounds %struct.s2n_debug_info, ptr %657, i32 0, i32 0
  %659 = load ptr, ptr %658, align 8, !tbaa !11
  %660 = getelementptr inbounds i8, ptr %659, i64 21
  %661 = call ptr @strrchr(ptr noundef %660, i32 noundef 47) #7
  %662 = icmp ne ptr %661, null
  br i1 %662, label %663, label %670

663:                                              ; preds = %654
  %664 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %665 = getelementptr inbounds %struct.s2n_debug_info, ptr %664, i32 0, i32 0
  %666 = load ptr, ptr %665, align 8, !tbaa !11
  %667 = getelementptr inbounds i8, ptr %666, i64 21
  %668 = call ptr @strrchr(ptr noundef %667, i32 noundef 47) #7
  %669 = getelementptr inbounds i8, ptr %668, i64 1
  br label %675

670:                                              ; preds = %654
  %671 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %672 = getelementptr inbounds %struct.s2n_debug_info, ptr %671, i32 0, i32 0
  %673 = load ptr, ptr %672, align 8, !tbaa !11
  %674 = getelementptr inbounds i8, ptr %673, i64 21
  br label %675

675:                                              ; preds = %670, %663
  %676 = phi ptr [ %669, %663 ], [ %674, %670 ]
  %677 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %678 = getelementptr inbounds %struct.s2n_debug_info, ptr %677, i32 0, i32 1
  store ptr %676, ptr %678, align 8, !tbaa !13
  %679 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %679, align 4, !tbaa !14
  %680 = call i32 @s2n_calculate_stacktrace()
  br label %681

681:                                              ; preds = %675
  br label %682

682:                                              ; preds = %681
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

683:                                              ; No predecessors!
  br label %684

684:                                              ; preds = %683
  br label %685

685:                                              ; preds = %684, %639
  br label %686

686:                                              ; preds = %685
  br label %687

687:                                              ; preds = %686
  br label %688

688:                                              ; preds = %687
  %689 = load i8, ptr %13, align 1, !tbaa !9, !range !45, !noundef !46
  %690 = trunc i8 %689 to i1
  %691 = zext i1 %690 to i32
  %692 = load ptr, ptr %8, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.s2n_security_policy, ptr %692, i32 0, i32 2
  %694 = load ptr, ptr %693, align 8, !tbaa !48
  %695 = call zeroext i1 @s2n_tls13_client_must_use_hybrid_kem_length_prefix(ptr noundef %694)
  %696 = zext i1 %695 to i32
  %697 = icmp eq i32 %691, %696
  br i1 %697, label %731, label %698

698:                                              ; preds = %688
  br label %699

699:                                              ; preds = %698
  br label %700

700:                                              ; preds = %699
  %701 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %702 = getelementptr inbounds %struct.s2n_debug_info, ptr %701, i32 0, i32 0
  store ptr @.str.47, ptr %702, align 8, !tbaa !11
  %703 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %704 = getelementptr inbounds %struct.s2n_debug_info, ptr %703, i32 0, i32 0
  %705 = load ptr, ptr %704, align 8, !tbaa !11
  %706 = getelementptr inbounds i8, ptr %705, i64 21
  %707 = call ptr @strrchr(ptr noundef %706, i32 noundef 47) #7
  %708 = icmp ne ptr %707, null
  br i1 %708, label %709, label %716

709:                                              ; preds = %700
  %710 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %711 = getelementptr inbounds %struct.s2n_debug_info, ptr %710, i32 0, i32 0
  %712 = load ptr, ptr %711, align 8, !tbaa !11
  %713 = getelementptr inbounds i8, ptr %712, i64 21
  %714 = call ptr @strrchr(ptr noundef %713, i32 noundef 47) #7
  %715 = getelementptr inbounds i8, ptr %714, i64 1
  br label %721

716:                                              ; preds = %700
  %717 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %718 = getelementptr inbounds %struct.s2n_debug_info, ptr %717, i32 0, i32 0
  %719 = load ptr, ptr %718, align 8, !tbaa !11
  %720 = getelementptr inbounds i8, ptr %719, i64 21
  br label %721

721:                                              ; preds = %716, %709
  %722 = phi ptr [ %715, %709 ], [ %720, %716 ]
  %723 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %724 = getelementptr inbounds %struct.s2n_debug_info, ptr %723, i32 0, i32 1
  store ptr %722, ptr %724, align 8, !tbaa !13
  %725 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %725, align 4, !tbaa !14
  %726 = call i32 @s2n_calculate_stacktrace()
  br label %727

727:                                              ; preds = %721
  br label %728

728:                                              ; preds = %727
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

729:                                              ; No predecessors!
  br label %730

730:                                              ; preds = %729
  br label %731

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

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  %735 = load ptr, ptr %15, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.s2n_connection, ptr %735, i32 0, i32 31
  %737 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %736, i32 0, i32 5
  %738 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %737, i32 0, i32 1
  %739 = getelementptr inbounds %struct.s2n_kem_params, ptr %738, i32 0, i32 4
  %740 = load i8, ptr %739, align 8, !tbaa !47, !range !45, !noundef !46
  %741 = trunc i8 %740 to i1
  %742 = zext i1 %741 to i32
  %743 = load ptr, ptr %14, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.s2n_connection, ptr %743, i32 0, i32 31
  %745 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %744, i32 0, i32 5
  %746 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %745, i32 0, i32 1
  %747 = getelementptr inbounds %struct.s2n_kem_params, ptr %746, i32 0, i32 4
  %748 = load i8, ptr %747, align 8, !tbaa !47, !range !45, !noundef !46
  %749 = trunc i8 %748 to i1
  %750 = zext i1 %749 to i32
  %751 = icmp eq i32 %742, %750
  br i1 %751, label %785, label %752

752:                                              ; preds = %734
  br label %753

753:                                              ; preds = %752
  br label %754

754:                                              ; preds = %753
  %755 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %756 = getelementptr inbounds %struct.s2n_debug_info, ptr %755, i32 0, i32 0
  store ptr @.str.48, ptr %756, align 8, !tbaa !11
  %757 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %758 = getelementptr inbounds %struct.s2n_debug_info, ptr %757, i32 0, i32 0
  %759 = load ptr, ptr %758, align 8, !tbaa !11
  %760 = getelementptr inbounds i8, ptr %759, i64 21
  %761 = call ptr @strrchr(ptr noundef %760, i32 noundef 47) #7
  %762 = icmp ne ptr %761, null
  br i1 %762, label %763, label %770

763:                                              ; preds = %754
  %764 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %765 = getelementptr inbounds %struct.s2n_debug_info, ptr %764, i32 0, i32 0
  %766 = load ptr, ptr %765, align 8, !tbaa !11
  %767 = getelementptr inbounds i8, ptr %766, i64 21
  %768 = call ptr @strrchr(ptr noundef %767, i32 noundef 47) #7
  %769 = getelementptr inbounds i8, ptr %768, i64 1
  br label %775

770:                                              ; preds = %754
  %771 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %772 = getelementptr inbounds %struct.s2n_debug_info, ptr %771, i32 0, i32 0
  %773 = load ptr, ptr %772, align 8, !tbaa !11
  %774 = getelementptr inbounds i8, ptr %773, i64 21
  br label %775

775:                                              ; preds = %770, %763
  %776 = phi ptr [ %769, %763 ], [ %774, %770 ]
  %777 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %778 = getelementptr inbounds %struct.s2n_debug_info, ptr %777, i32 0, i32 1
  store ptr %776, ptr %778, align 8, !tbaa !13
  %779 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %779, align 4, !tbaa !14
  %780 = call i32 @s2n_calculate_stacktrace()
  br label %781

781:                                              ; preds = %775
  br label %782

782:                                              ; preds = %781
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

783:                                              ; No predecessors!
  br label %784

784:                                              ; preds = %783
  br label %785

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

786:                                              ; preds = %785
  br label %787

787:                                              ; preds = %786
  br label %788

788:                                              ; preds = %787
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = load ptr, ptr %15, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.s2n_connection, ptr %790, i32 0, i32 31
  %792 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %791, i32 0, i32 4
  %793 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %792, i32 0, i32 0
  %794 = load ptr, ptr %793, align 8, !tbaa !50
  %795 = icmp eq ptr %789, %794
  br i1 %795, label %829, label %796

796:                                              ; preds = %788
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797
  %799 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %800 = getelementptr inbounds %struct.s2n_debug_info, ptr %799, i32 0, i32 0
  store ptr @.str.49, ptr %800, align 8, !tbaa !11
  %801 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %802 = getelementptr inbounds %struct.s2n_debug_info, ptr %801, i32 0, i32 0
  %803 = load ptr, ptr %802, align 8, !tbaa !11
  %804 = getelementptr inbounds i8, ptr %803, i64 21
  %805 = call ptr @strrchr(ptr noundef %804, i32 noundef 47) #7
  %806 = icmp ne ptr %805, null
  br i1 %806, label %807, label %814

807:                                              ; preds = %798
  %808 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %809 = getelementptr inbounds %struct.s2n_debug_info, ptr %808, i32 0, i32 0
  %810 = load ptr, ptr %809, align 8, !tbaa !11
  %811 = getelementptr inbounds i8, ptr %810, i64 21
  %812 = call ptr @strrchr(ptr noundef %811, i32 noundef 47) #7
  %813 = getelementptr inbounds i8, ptr %812, i64 1
  br label %819

814:                                              ; preds = %798
  %815 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %816 = getelementptr inbounds %struct.s2n_debug_info, ptr %815, i32 0, i32 0
  %817 = load ptr, ptr %816, align 8, !tbaa !11
  %818 = getelementptr inbounds i8, ptr %817, i64 21
  br label %819

819:                                              ; preds = %814, %807
  %820 = phi ptr [ %813, %807 ], [ %818, %814 ]
  %821 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %822 = getelementptr inbounds %struct.s2n_debug_info, ptr %821, i32 0, i32 1
  store ptr %820, ptr %822, align 8, !tbaa !13
  %823 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %823, align 4, !tbaa !14
  %824 = call i32 @s2n_calculate_stacktrace()
  br label %825

825:                                              ; preds = %819
  br label %826

826:                                              ; preds = %825
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

827:                                              ; No predecessors!
  br label %828

828:                                              ; preds = %827
  br label %829

829:                                              ; preds = %828, %788
  br label %830

830:                                              ; preds = %829
  br label %831

831:                                              ; preds = %830
  br label %832

832:                                              ; preds = %831
  %833 = load ptr, ptr %10, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.s2n_kem_group, ptr %833, i32 0, i32 3
  %835 = load ptr, ptr %834, align 8, !tbaa !51
  %836 = load ptr, ptr %15, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.s2n_connection, ptr %836, i32 0, i32 31
  %838 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %837, i32 0, i32 4
  %839 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %838, i32 0, i32 1
  %840 = getelementptr inbounds %struct.s2n_kem_params, ptr %839, i32 0, i32 0
  %841 = load ptr, ptr %840, align 8, !tbaa !53
  %842 = icmp eq ptr %835, %841
  br i1 %842, label %876, label %843

843:                                              ; preds = %832
  br label %844

844:                                              ; preds = %843
  br label %845

845:                                              ; preds = %844
  %846 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %847 = getelementptr inbounds %struct.s2n_debug_info, ptr %846, i32 0, i32 0
  store ptr @.str.50, ptr %847, align 8, !tbaa !11
  %848 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %849 = getelementptr inbounds %struct.s2n_debug_info, ptr %848, i32 0, i32 0
  %850 = load ptr, ptr %849, align 8, !tbaa !11
  %851 = getelementptr inbounds i8, ptr %850, i64 21
  %852 = call ptr @strrchr(ptr noundef %851, i32 noundef 47) #7
  %853 = icmp ne ptr %852, null
  br i1 %853, label %854, label %861

854:                                              ; preds = %845
  %855 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %856 = getelementptr inbounds %struct.s2n_debug_info, ptr %855, i32 0, i32 0
  %857 = load ptr, ptr %856, align 8, !tbaa !11
  %858 = getelementptr inbounds i8, ptr %857, i64 21
  %859 = call ptr @strrchr(ptr noundef %858, i32 noundef 47) #7
  %860 = getelementptr inbounds i8, ptr %859, i64 1
  br label %866

861:                                              ; preds = %845
  %862 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %863 = getelementptr inbounds %struct.s2n_debug_info, ptr %862, i32 0, i32 0
  %864 = load ptr, ptr %863, align 8, !tbaa !11
  %865 = getelementptr inbounds i8, ptr %864, i64 21
  br label %866

866:                                              ; preds = %861, %854
  %867 = phi ptr [ %860, %854 ], [ %865, %861 ]
  %868 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %869 = getelementptr inbounds %struct.s2n_debug_info, ptr %868, i32 0, i32 1
  store ptr %867, ptr %869, align 8, !tbaa !13
  %870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %870, align 4, !tbaa !14
  %871 = call i32 @s2n_calculate_stacktrace()
  br label %872

872:                                              ; preds = %866
  br label %873

873:                                              ; preds = %872
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

874:                                              ; No predecessors!
  br label %875

875:                                              ; preds = %874
  br label %876

876:                                              ; preds = %875, %832
  br label %877

877:                                              ; preds = %876
  br label %878

878:                                              ; preds = %877
  br label %879

879:                                              ; preds = %878
  %880 = load ptr, ptr %10, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.s2n_kem_group, ptr %880, i32 0, i32 2
  %882 = load ptr, ptr %881, align 8, !tbaa !54
  %883 = load ptr, ptr %15, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.s2n_connection, ptr %883, i32 0, i32 31
  %885 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %884, i32 0, i32 4
  %886 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %885, i32 0, i32 2
  %887 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %886, i32 0, i32 0
  %888 = load ptr, ptr %887, align 8, !tbaa !55
  %889 = icmp eq ptr %882, %888
  br i1 %889, label %923, label %890

890:                                              ; preds = %879
  br label %891

891:                                              ; preds = %890
  br label %892

892:                                              ; preds = %891
  %893 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %894 = getelementptr inbounds %struct.s2n_debug_info, ptr %893, i32 0, i32 0
  store ptr @.str.51, ptr %894, align 8, !tbaa !11
  %895 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %896 = getelementptr inbounds %struct.s2n_debug_info, ptr %895, i32 0, i32 0
  %897 = load ptr, ptr %896, align 8, !tbaa !11
  %898 = getelementptr inbounds i8, ptr %897, i64 21
  %899 = call ptr @strrchr(ptr noundef %898, i32 noundef 47) #7
  %900 = icmp ne ptr %899, null
  br i1 %900, label %901, label %908

901:                                              ; preds = %892
  %902 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %903 = getelementptr inbounds %struct.s2n_debug_info, ptr %902, i32 0, i32 0
  %904 = load ptr, ptr %903, align 8, !tbaa !11
  %905 = getelementptr inbounds i8, ptr %904, i64 21
  %906 = call ptr @strrchr(ptr noundef %905, i32 noundef 47) #7
  %907 = getelementptr inbounds i8, ptr %906, i64 1
  br label %913

908:                                              ; preds = %892
  %909 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %910 = getelementptr inbounds %struct.s2n_debug_info, ptr %909, i32 0, i32 0
  %911 = load ptr, ptr %910, align 8, !tbaa !11
  %912 = getelementptr inbounds i8, ptr %911, i64 21
  br label %913

913:                                              ; preds = %908, %901
  %914 = phi ptr [ %907, %901 ], [ %912, %908 ]
  %915 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %916 = getelementptr inbounds %struct.s2n_debug_info, ptr %915, i32 0, i32 1
  store ptr %914, ptr %916, align 8, !tbaa !13
  %917 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %917, align 4, !tbaa !14
  %918 = call i32 @s2n_calculate_stacktrace()
  br label %919

919:                                              ; preds = %913
  br label %920

920:                                              ; preds = %919
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

921:                                              ; No predecessors!
  br label %922

922:                                              ; preds = %921
  br label %923

923:                                              ; preds = %922, %879
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924
  br label %926

926:                                              ; preds = %925
  %927 = load ptr, ptr %15, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.s2n_connection, ptr %927, i32 0, i32 31
  %929 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %928, i32 0, i32 1
  %930 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %929, i32 0, i32 0
  %931 = load ptr, ptr %930, align 8, !tbaa !56
  %932 = icmp eq ptr null, %931
  br i1 %932, label %966, label %933

933:                                              ; preds = %926
  br label %934

934:                                              ; preds = %933
  br label %935

935:                                              ; preds = %934
  %936 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %937 = getelementptr inbounds %struct.s2n_debug_info, ptr %936, i32 0, i32 0
  store ptr @.str.52, ptr %937, align 8, !tbaa !11
  %938 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %939 = getelementptr inbounds %struct.s2n_debug_info, ptr %938, i32 0, i32 0
  %940 = load ptr, ptr %939, align 8, !tbaa !11
  %941 = getelementptr inbounds i8, ptr %940, i64 21
  %942 = call ptr @strrchr(ptr noundef %941, i32 noundef 47) #7
  %943 = icmp ne ptr %942, null
  br i1 %943, label %944, label %951

944:                                              ; preds = %935
  %945 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %946 = getelementptr inbounds %struct.s2n_debug_info, ptr %945, i32 0, i32 0
  %947 = load ptr, ptr %946, align 8, !tbaa !11
  %948 = getelementptr inbounds i8, ptr %947, i64 21
  %949 = call ptr @strrchr(ptr noundef %948, i32 noundef 47) #7
  %950 = getelementptr inbounds i8, ptr %949, i64 1
  br label %956

951:                                              ; preds = %935
  %952 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %953 = getelementptr inbounds %struct.s2n_debug_info, ptr %952, i32 0, i32 0
  %954 = load ptr, ptr %953, align 8, !tbaa !11
  %955 = getelementptr inbounds i8, ptr %954, i64 21
  br label %956

956:                                              ; preds = %951, %944
  %957 = phi ptr [ %950, %944 ], [ %955, %951 ]
  %958 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %959 = getelementptr inbounds %struct.s2n_debug_info, ptr %958, i32 0, i32 1
  store ptr %957, ptr %959, align 8, !tbaa !13
  %960 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %960, align 4, !tbaa !14
  %961 = call i32 @s2n_calculate_stacktrace()
  br label %962

962:                                              ; preds = %956
  br label %963

963:                                              ; preds = %962
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

964:                                              ; No predecessors!
  br label %965

965:                                              ; preds = %964
  br label %966

966:                                              ; preds = %965, %926
  br label %967

967:                                              ; preds = %966
  br label %968

968:                                              ; preds = %967
  br label %1145

969:                                              ; preds = %635
  br label %970

970:                                              ; preds = %969
  %971 = load ptr, ptr %15, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.s2n_connection, ptr %971, i32 0, i32 31
  %973 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %972, i32 0, i32 4
  %974 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %973, i32 0, i32 0
  %975 = load ptr, ptr %974, align 8, !tbaa !50
  %976 = icmp eq ptr null, %975
  br i1 %976, label %1010, label %977

977:                                              ; preds = %970
  br label %978

978:                                              ; preds = %977
  br label %979

979:                                              ; preds = %978
  %980 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %981 = getelementptr inbounds %struct.s2n_debug_info, ptr %980, i32 0, i32 0
  store ptr @.str.53, ptr %981, align 8, !tbaa !11
  %982 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %983 = getelementptr inbounds %struct.s2n_debug_info, ptr %982, i32 0, i32 0
  %984 = load ptr, ptr %983, align 8, !tbaa !11
  %985 = getelementptr inbounds i8, ptr %984, i64 21
  %986 = call ptr @strrchr(ptr noundef %985, i32 noundef 47) #7
  %987 = icmp ne ptr %986, null
  br i1 %987, label %988, label %995

988:                                              ; preds = %979
  %989 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %990 = getelementptr inbounds %struct.s2n_debug_info, ptr %989, i32 0, i32 0
  %991 = load ptr, ptr %990, align 8, !tbaa !11
  %992 = getelementptr inbounds i8, ptr %991, i64 21
  %993 = call ptr @strrchr(ptr noundef %992, i32 noundef 47) #7
  %994 = getelementptr inbounds i8, ptr %993, i64 1
  br label %1000

995:                                              ; preds = %979
  %996 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %997 = getelementptr inbounds %struct.s2n_debug_info, ptr %996, i32 0, i32 0
  %998 = load ptr, ptr %997, align 8, !tbaa !11
  %999 = getelementptr inbounds i8, ptr %998, i64 21
  br label %1000

1000:                                             ; preds = %995, %988
  %1001 = phi ptr [ %994, %988 ], [ %999, %995 ]
  %1002 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1003 = getelementptr inbounds %struct.s2n_debug_info, ptr %1002, i32 0, i32 1
  store ptr %1001, ptr %1003, align 8, !tbaa !13
  %1004 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1004, align 4, !tbaa !14
  %1005 = call i32 @s2n_calculate_stacktrace()
  br label %1006

1006:                                             ; preds = %1000
  br label %1007

1007:                                             ; preds = %1006
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1008:                                             ; No predecessors!
  br label %1009

1009:                                             ; preds = %1008
  br label %1010

1010:                                             ; preds = %1009, %970
  br label %1011

1011:                                             ; preds = %1010
  br label %1012

1012:                                             ; preds = %1011
  br label %1013

1013:                                             ; preds = %1012
  %1014 = load ptr, ptr %15, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.s2n_connection, ptr %1014, i32 0, i32 31
  %1016 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1015, i32 0, i32 4
  %1017 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1016, i32 0, i32 1
  %1018 = getelementptr inbounds %struct.s2n_kem_params, ptr %1017, i32 0, i32 0
  %1019 = load ptr, ptr %1018, align 8, !tbaa !53
  %1020 = icmp eq ptr null, %1019
  br i1 %1020, label %1054, label %1021

1021:                                             ; preds = %1013
  br label %1022

1022:                                             ; preds = %1021
  br label %1023

1023:                                             ; preds = %1022
  %1024 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1025 = getelementptr inbounds %struct.s2n_debug_info, ptr %1024, i32 0, i32 0
  store ptr @.str.54, ptr %1025, align 8, !tbaa !11
  %1026 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1027 = getelementptr inbounds %struct.s2n_debug_info, ptr %1026, i32 0, i32 0
  %1028 = load ptr, ptr %1027, align 8, !tbaa !11
  %1029 = getelementptr inbounds i8, ptr %1028, i64 21
  %1030 = call ptr @strrchr(ptr noundef %1029, i32 noundef 47) #7
  %1031 = icmp ne ptr %1030, null
  br i1 %1031, label %1032, label %1039

1032:                                             ; preds = %1023
  %1033 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1034 = getelementptr inbounds %struct.s2n_debug_info, ptr %1033, i32 0, i32 0
  %1035 = load ptr, ptr %1034, align 8, !tbaa !11
  %1036 = getelementptr inbounds i8, ptr %1035, i64 21
  %1037 = call ptr @strrchr(ptr noundef %1036, i32 noundef 47) #7
  %1038 = getelementptr inbounds i8, ptr %1037, i64 1
  br label %1044

1039:                                             ; preds = %1023
  %1040 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1041 = getelementptr inbounds %struct.s2n_debug_info, ptr %1040, i32 0, i32 0
  %1042 = load ptr, ptr %1041, align 8, !tbaa !11
  %1043 = getelementptr inbounds i8, ptr %1042, i64 21
  br label %1044

1044:                                             ; preds = %1039, %1032
  %1045 = phi ptr [ %1038, %1032 ], [ %1043, %1039 ]
  %1046 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1047 = getelementptr inbounds %struct.s2n_debug_info, ptr %1046, i32 0, i32 1
  store ptr %1045, ptr %1047, align 8, !tbaa !13
  %1048 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1048, align 4, !tbaa !14
  %1049 = call i32 @s2n_calculate_stacktrace()
  br label %1050

1050:                                             ; preds = %1044
  br label %1051

1051:                                             ; preds = %1050
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1052:                                             ; No predecessors!
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

1054:                                             ; preds = %1053, %1013
  br label %1055

1055:                                             ; preds = %1054
  br label %1056

1056:                                             ; preds = %1055
  br label %1057

1057:                                             ; preds = %1056
  %1058 = load ptr, ptr %15, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.s2n_connection, ptr %1058, i32 0, i32 31
  %1060 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1059, i32 0, i32 4
  %1061 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1060, i32 0, i32 2
  %1062 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1061, i32 0, i32 0
  %1063 = load ptr, ptr %1062, align 8, !tbaa !55
  %1064 = icmp eq ptr null, %1063
  br i1 %1064, label %1098, label %1065

1065:                                             ; preds = %1057
  br label %1066

1066:                                             ; preds = %1065
  br label %1067

1067:                                             ; preds = %1066
  %1068 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1069 = getelementptr inbounds %struct.s2n_debug_info, ptr %1068, i32 0, i32 0
  store ptr @.str.55, ptr %1069, align 8, !tbaa !11
  %1070 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1071 = getelementptr inbounds %struct.s2n_debug_info, ptr %1070, i32 0, i32 0
  %1072 = load ptr, ptr %1071, align 8, !tbaa !11
  %1073 = getelementptr inbounds i8, ptr %1072, i64 21
  %1074 = call ptr @strrchr(ptr noundef %1073, i32 noundef 47) #7
  %1075 = icmp ne ptr %1074, null
  br i1 %1075, label %1076, label %1083

1076:                                             ; preds = %1067
  %1077 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1078 = getelementptr inbounds %struct.s2n_debug_info, ptr %1077, i32 0, i32 0
  %1079 = load ptr, ptr %1078, align 8, !tbaa !11
  %1080 = getelementptr inbounds i8, ptr %1079, i64 21
  %1081 = call ptr @strrchr(ptr noundef %1080, i32 noundef 47) #7
  %1082 = getelementptr inbounds i8, ptr %1081, i64 1
  br label %1088

1083:                                             ; preds = %1067
  %1084 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1085 = getelementptr inbounds %struct.s2n_debug_info, ptr %1084, i32 0, i32 0
  %1086 = load ptr, ptr %1085, align 8, !tbaa !11
  %1087 = getelementptr inbounds i8, ptr %1086, i64 21
  br label %1088

1088:                                             ; preds = %1083, %1076
  %1089 = phi ptr [ %1082, %1076 ], [ %1087, %1083 ]
  %1090 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1091 = getelementptr inbounds %struct.s2n_debug_info, ptr %1090, i32 0, i32 1
  store ptr %1089, ptr %1091, align 8, !tbaa !13
  %1092 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1092, align 4, !tbaa !14
  %1093 = call i32 @s2n_calculate_stacktrace()
  br label %1094

1094:                                             ; preds = %1088
  br label %1095

1095:                                             ; preds = %1094
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1096:                                             ; No predecessors!
  br label %1097

1097:                                             ; preds = %1096
  br label %1098

1098:                                             ; preds = %1097, %1057
  br label %1099

1099:                                             ; preds = %1098
  br label %1100

1100:                                             ; preds = %1099
  br label %1101

1101:                                             ; preds = %1100
  %1102 = load ptr, ptr %11, align 8, !tbaa !5
  %1103 = load ptr, ptr %15, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.s2n_connection, ptr %1103, i32 0, i32 31
  %1105 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1104, i32 0, i32 1
  %1106 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1105, i32 0, i32 0
  %1107 = load ptr, ptr %1106, align 8, !tbaa !56
  %1108 = icmp eq ptr %1102, %1107
  br i1 %1108, label %1142, label %1109

1109:                                             ; preds = %1101
  br label %1110

1110:                                             ; preds = %1109
  br label %1111

1111:                                             ; preds = %1110
  %1112 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1113 = getelementptr inbounds %struct.s2n_debug_info, ptr %1112, i32 0, i32 0
  store ptr @.str.56, ptr %1113, align 8, !tbaa !11
  %1114 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1115 = getelementptr inbounds %struct.s2n_debug_info, ptr %1114, i32 0, i32 0
  %1116 = load ptr, ptr %1115, align 8, !tbaa !11
  %1117 = getelementptr inbounds i8, ptr %1116, i64 21
  %1118 = call ptr @strrchr(ptr noundef %1117, i32 noundef 47) #7
  %1119 = icmp ne ptr %1118, null
  br i1 %1119, label %1120, label %1127

1120:                                             ; preds = %1111
  %1121 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1122 = getelementptr inbounds %struct.s2n_debug_info, ptr %1121, i32 0, i32 0
  %1123 = load ptr, ptr %1122, align 8, !tbaa !11
  %1124 = getelementptr inbounds i8, ptr %1123, i64 21
  %1125 = call ptr @strrchr(ptr noundef %1124, i32 noundef 47) #7
  %1126 = getelementptr inbounds i8, ptr %1125, i64 1
  br label %1132

1127:                                             ; preds = %1111
  %1128 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1129 = getelementptr inbounds %struct.s2n_debug_info, ptr %1128, i32 0, i32 0
  %1130 = load ptr, ptr %1129, align 8, !tbaa !11
  %1131 = getelementptr inbounds i8, ptr %1130, i64 21
  br label %1132

1132:                                             ; preds = %1127, %1120
  %1133 = phi ptr [ %1126, %1120 ], [ %1131, %1127 ]
  %1134 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1135 = getelementptr inbounds %struct.s2n_debug_info, ptr %1134, i32 0, i32 1
  store ptr %1133, ptr %1135, align 8, !tbaa !13
  %1136 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1136, align 4, !tbaa !14
  %1137 = call i32 @s2n_calculate_stacktrace()
  br label %1138

1138:                                             ; preds = %1132
  br label %1139

1139:                                             ; preds = %1138
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1140:                                             ; No predecessors!
  br label %1141

1141:                                             ; preds = %1140
  br label %1142

1142:                                             ; preds = %1141, %1101
  br label %1143

1143:                                             ; preds = %1142
  br label %1144

1144:                                             ; preds = %1143
  br label %1145

1145:                                             ; preds = %1144, %968
  br label %1146

1146:                                             ; preds = %1145
  %1147 = load ptr, ptr %15, align 8, !tbaa !5
  %1148 = call i32 @s2n_conn_set_handshake_type(ptr noundef %1147)
  %1149 = icmp sgt i32 %1148, -1
  br i1 %1149, label %1151, label %1150

1150:                                             ; preds = %1146
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1151:                                             ; preds = %1146
  br label %1152

1152:                                             ; preds = %1151
  br label %1153

1153:                                             ; preds = %1152
  br label %1154

1154:                                             ; preds = %1153
  %1155 = load i8, ptr %12, align 1, !tbaa !9, !range !45, !noundef !46
  %1156 = trunc i8 %1155 to i1
  %1157 = zext i1 %1156 to i32
  %1158 = load ptr, ptr %15, align 8, !tbaa !5
  %1159 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef %1158, i32 noundef 16)
  %1160 = zext i1 %1159 to i32
  %1161 = icmp eq i32 %1157, %1160
  br i1 %1161, label %1195, label %1162

1162:                                             ; preds = %1154
  br label %1163

1163:                                             ; preds = %1162
  br label %1164

1164:                                             ; preds = %1163
  %1165 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1166 = getelementptr inbounds %struct.s2n_debug_info, ptr %1165, i32 0, i32 0
  store ptr @.str.57, ptr %1166, align 8, !tbaa !11
  %1167 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1168 = getelementptr inbounds %struct.s2n_debug_info, ptr %1167, i32 0, i32 0
  %1169 = load ptr, ptr %1168, align 8, !tbaa !11
  %1170 = getelementptr inbounds i8, ptr %1169, i64 21
  %1171 = call ptr @strrchr(ptr noundef %1170, i32 noundef 47) #7
  %1172 = icmp ne ptr %1171, null
  br i1 %1172, label %1173, label %1180

1173:                                             ; preds = %1164
  %1174 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1175 = getelementptr inbounds %struct.s2n_debug_info, ptr %1174, i32 0, i32 0
  %1176 = load ptr, ptr %1175, align 8, !tbaa !11
  %1177 = getelementptr inbounds i8, ptr %1176, i64 21
  %1178 = call ptr @strrchr(ptr noundef %1177, i32 noundef 47) #7
  %1179 = getelementptr inbounds i8, ptr %1178, i64 1
  br label %1185

1180:                                             ; preds = %1164
  %1181 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1182 = getelementptr inbounds %struct.s2n_debug_info, ptr %1181, i32 0, i32 0
  %1183 = load ptr, ptr %1182, align 8, !tbaa !11
  %1184 = getelementptr inbounds i8, ptr %1183, i64 21
  br label %1185

1185:                                             ; preds = %1180, %1173
  %1186 = phi ptr [ %1179, %1173 ], [ %1184, %1180 ]
  %1187 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1188 = getelementptr inbounds %struct.s2n_debug_info, ptr %1187, i32 0, i32 1
  store ptr %1186, ptr %1188, align 8, !tbaa !13
  %1189 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1189, align 4, !tbaa !14
  %1190 = call i32 @s2n_calculate_stacktrace()
  br label %1191

1191:                                             ; preds = %1185
  br label %1192

1192:                                             ; preds = %1191
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1193:                                             ; No predecessors!
  br label %1194

1194:                                             ; preds = %1193
  br label %1195

1195:                                             ; preds = %1194, %1154
  br label %1196

1196:                                             ; preds = %1195
  br label %1197

1197:                                             ; preds = %1196
  br label %1198

1198:                                             ; preds = %1197
  %1199 = load ptr, ptr %15, align 8, !tbaa !5
  %1200 = call i32 @s2n_handshake_write_io(ptr noundef %1199)
  %1201 = icmp sgt i32 %1200, -1
  br i1 %1201, label %1203, label %1202

1202:                                             ; preds = %1198
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1203:                                             ; preds = %1198
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204
  br label %1206

1206:                                             ; preds = %1205
  %1207 = load ptr, ptr %15, align 8, !tbaa !5
  %1208 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1207)
  %1209 = icmp eq i32 %1208, 14
  br i1 %1209, label %1243, label %1210

1210:                                             ; preds = %1206
  br label %1211

1211:                                             ; preds = %1210
  br label %1212

1212:                                             ; preds = %1211
  %1213 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1214 = getelementptr inbounds %struct.s2n_debug_info, ptr %1213, i32 0, i32 0
  store ptr @.str.58, ptr %1214, align 8, !tbaa !11
  %1215 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1216 = getelementptr inbounds %struct.s2n_debug_info, ptr %1215, i32 0, i32 0
  %1217 = load ptr, ptr %1216, align 8, !tbaa !11
  %1218 = getelementptr inbounds i8, ptr %1217, i64 21
  %1219 = call ptr @strrchr(ptr noundef %1218, i32 noundef 47) #7
  %1220 = icmp ne ptr %1219, null
  br i1 %1220, label %1221, label %1228

1221:                                             ; preds = %1212
  %1222 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1223 = getelementptr inbounds %struct.s2n_debug_info, ptr %1222, i32 0, i32 0
  %1224 = load ptr, ptr %1223, align 8, !tbaa !11
  %1225 = getelementptr inbounds i8, ptr %1224, i64 21
  %1226 = call ptr @strrchr(ptr noundef %1225, i32 noundef 47) #7
  %1227 = getelementptr inbounds i8, ptr %1226, i64 1
  br label %1233

1228:                                             ; preds = %1212
  %1229 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1230 = getelementptr inbounds %struct.s2n_debug_info, ptr %1229, i32 0, i32 0
  %1231 = load ptr, ptr %1230, align 8, !tbaa !11
  %1232 = getelementptr inbounds i8, ptr %1231, i64 21
  br label %1233

1233:                                             ; preds = %1228, %1221
  %1234 = phi ptr [ %1227, %1221 ], [ %1232, %1228 ]
  %1235 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1236 = getelementptr inbounds %struct.s2n_debug_info, ptr %1235, i32 0, i32 1
  store ptr %1234, ptr %1236, align 8, !tbaa !13
  %1237 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1237, align 4, !tbaa !14
  %1238 = call i32 @s2n_calculate_stacktrace()
  br label %1239

1239:                                             ; preds = %1233
  br label %1240

1240:                                             ; preds = %1239
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1241:                                             ; No predecessors!
  br label %1242

1242:                                             ; preds = %1241
  br label %1243

1243:                                             ; preds = %1242, %1206
  br label %1244

1244:                                             ; preds = %1243
  br label %1245

1245:                                             ; preds = %1244
  br label %1246

1246:                                             ; preds = %1245
  %1247 = load ptr, ptr %15, align 8, !tbaa !5
  %1248 = call i32 @s2n_handshake_write_io(ptr noundef %1247)
  %1249 = icmp sgt i32 %1248, -1
  br i1 %1249, label %1251, label %1250

1250:                                             ; preds = %1246
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1251:                                             ; preds = %1246
  br label %1252

1252:                                             ; preds = %1251
  br label %1253

1253:                                             ; preds = %1252
  %1254 = load i8, ptr %12, align 1, !tbaa !9, !range !45, !noundef !46
  %1255 = trunc i8 %1254 to i1
  br i1 %1255, label %1256, label %1644

1256:                                             ; preds = %1253
  br label %1257

1257:                                             ; preds = %1256
  %1258 = load ptr, ptr %14, align 8, !tbaa !5
  %1259 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1258)
  %1260 = icmp eq i32 %1259, 1
  br i1 %1260, label %1294, label %1261

1261:                                             ; preds = %1257
  br label %1262

1262:                                             ; preds = %1261
  br label %1263

1263:                                             ; preds = %1262
  %1264 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1265 = getelementptr inbounds %struct.s2n_debug_info, ptr %1264, i32 0, i32 0
  store ptr @.str.59, ptr %1265, align 8, !tbaa !11
  %1266 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1267 = getelementptr inbounds %struct.s2n_debug_info, ptr %1266, i32 0, i32 0
  %1268 = load ptr, ptr %1267, align 8, !tbaa !11
  %1269 = getelementptr inbounds i8, ptr %1268, i64 21
  %1270 = call ptr @strrchr(ptr noundef %1269, i32 noundef 47) #7
  %1271 = icmp ne ptr %1270, null
  br i1 %1271, label %1272, label %1279

1272:                                             ; preds = %1263
  %1273 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1274 = getelementptr inbounds %struct.s2n_debug_info, ptr %1273, i32 0, i32 0
  %1275 = load ptr, ptr %1274, align 8, !tbaa !11
  %1276 = getelementptr inbounds i8, ptr %1275, i64 21
  %1277 = call ptr @strrchr(ptr noundef %1276, i32 noundef 47) #7
  %1278 = getelementptr inbounds i8, ptr %1277, i64 1
  br label %1284

1279:                                             ; preds = %1263
  %1280 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1281 = getelementptr inbounds %struct.s2n_debug_info, ptr %1280, i32 0, i32 0
  %1282 = load ptr, ptr %1281, align 8, !tbaa !11
  %1283 = getelementptr inbounds i8, ptr %1282, i64 21
  br label %1284

1284:                                             ; preds = %1279, %1272
  %1285 = phi ptr [ %1278, %1272 ], [ %1283, %1279 ]
  %1286 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1287 = getelementptr inbounds %struct.s2n_debug_info, ptr %1286, i32 0, i32 1
  store ptr %1285, ptr %1287, align 8, !tbaa !13
  %1288 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1288, align 4, !tbaa !14
  %1289 = call i32 @s2n_calculate_stacktrace()
  br label %1290

1290:                                             ; preds = %1284
  br label %1291

1291:                                             ; preds = %1290
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1292:                                             ; No predecessors!
  br label %1293

1293:                                             ; preds = %1292
  br label %1294

1294:                                             ; preds = %1293, %1257
  br label %1295

1295:                                             ; preds = %1294
  br label %1296

1296:                                             ; preds = %1295
  br label %1297

1297:                                             ; preds = %1296
  %1298 = load ptr, ptr %14, align 8, !tbaa !5
  %1299 = call i32 @s2n_handshake_read_io(ptr noundef %1298)
  %1300 = icmp sgt i32 %1299, -1
  br i1 %1300, label %1302, label %1301

1301:                                             ; preds = %1297
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1302:                                             ; preds = %1297
  br label %1303

1303:                                             ; preds = %1302
  br label %1304

1304:                                             ; preds = %1303
  br label %1305

1305:                                             ; preds = %1304
  %1306 = load ptr, ptr %14, align 8, !tbaa !5
  %1307 = call i32 @s2n_conn_set_handshake_type(ptr noundef %1306)
  %1308 = icmp sgt i32 %1307, -1
  br i1 %1308, label %1310, label %1309

1309:                                             ; preds = %1305
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1310:                                             ; preds = %1305
  br label %1311

1311:                                             ; preds = %1310
  br label %1312

1312:                                             ; preds = %1311
  br label %1313

1313:                                             ; preds = %1312
  %1314 = load ptr, ptr %14, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.s2n_connection, ptr %1314, i32 0, i32 52
  %1316 = getelementptr inbounds %struct.s2n_handshake, ptr %1315, i32 0, i32 6
  %1317 = load i32, ptr %1316, align 4, !tbaa !44
  %1318 = and i32 %1317, 16
  %1319 = icmp ne i32 0, %1318
  br i1 %1319, label %1353, label %1320

1320:                                             ; preds = %1313
  br label %1321

1321:                                             ; preds = %1320
  br label %1322

1322:                                             ; preds = %1321
  %1323 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1324 = getelementptr inbounds %struct.s2n_debug_info, ptr %1323, i32 0, i32 0
  store ptr @.str.60, ptr %1324, align 8, !tbaa !11
  %1325 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1326 = getelementptr inbounds %struct.s2n_debug_info, ptr %1325, i32 0, i32 0
  %1327 = load ptr, ptr %1326, align 8, !tbaa !11
  %1328 = getelementptr inbounds i8, ptr %1327, i64 21
  %1329 = call ptr @strrchr(ptr noundef %1328, i32 noundef 47) #7
  %1330 = icmp ne ptr %1329, null
  br i1 %1330, label %1331, label %1338

1331:                                             ; preds = %1322
  %1332 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1333 = getelementptr inbounds %struct.s2n_debug_info, ptr %1332, i32 0, i32 0
  %1334 = load ptr, ptr %1333, align 8, !tbaa !11
  %1335 = getelementptr inbounds i8, ptr %1334, i64 21
  %1336 = call ptr @strrchr(ptr noundef %1335, i32 noundef 47) #7
  %1337 = getelementptr inbounds i8, ptr %1336, i64 1
  br label %1343

1338:                                             ; preds = %1322
  %1339 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1340 = getelementptr inbounds %struct.s2n_debug_info, ptr %1339, i32 0, i32 0
  %1341 = load ptr, ptr %1340, align 8, !tbaa !11
  %1342 = getelementptr inbounds i8, ptr %1341, i64 21
  br label %1343

1343:                                             ; preds = %1338, %1331
  %1344 = phi ptr [ %1337, %1331 ], [ %1342, %1338 ]
  %1345 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1346 = getelementptr inbounds %struct.s2n_debug_info, ptr %1345, i32 0, i32 1
  store ptr %1344, ptr %1346, align 8, !tbaa !13
  %1347 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1347, align 4, !tbaa !14
  %1348 = call i32 @s2n_calculate_stacktrace()
  br label %1349

1349:                                             ; preds = %1343
  br label %1350

1350:                                             ; preds = %1349
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1351:                                             ; No predecessors!
  br label %1352

1352:                                             ; preds = %1351
  br label %1353

1353:                                             ; preds = %1352, %1313
  br label %1354

1354:                                             ; preds = %1353
  br label %1355

1355:                                             ; preds = %1354
  br label %1356

1356:                                             ; preds = %1355
  %1357 = load ptr, ptr %14, align 8, !tbaa !5
  %1358 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1357)
  %1359 = icmp eq i32 %1358, 11
  br i1 %1359, label %1393, label %1360

1360:                                             ; preds = %1356
  br label %1361

1361:                                             ; preds = %1360
  br label %1362

1362:                                             ; preds = %1361
  %1363 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1364 = getelementptr inbounds %struct.s2n_debug_info, ptr %1363, i32 0, i32 0
  store ptr @.str.61, ptr %1364, align 8, !tbaa !11
  %1365 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1366 = getelementptr inbounds %struct.s2n_debug_info, ptr %1365, i32 0, i32 0
  %1367 = load ptr, ptr %1366, align 8, !tbaa !11
  %1368 = getelementptr inbounds i8, ptr %1367, i64 21
  %1369 = call ptr @strrchr(ptr noundef %1368, i32 noundef 47) #7
  %1370 = icmp ne ptr %1369, null
  br i1 %1370, label %1371, label %1378

1371:                                             ; preds = %1362
  %1372 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1373 = getelementptr inbounds %struct.s2n_debug_info, ptr %1372, i32 0, i32 0
  %1374 = load ptr, ptr %1373, align 8, !tbaa !11
  %1375 = getelementptr inbounds i8, ptr %1374, i64 21
  %1376 = call ptr @strrchr(ptr noundef %1375, i32 noundef 47) #7
  %1377 = getelementptr inbounds i8, ptr %1376, i64 1
  br label %1383

1378:                                             ; preds = %1362
  %1379 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1380 = getelementptr inbounds %struct.s2n_debug_info, ptr %1379, i32 0, i32 0
  %1381 = load ptr, ptr %1380, align 8, !tbaa !11
  %1382 = getelementptr inbounds i8, ptr %1381, i64 21
  br label %1383

1383:                                             ; preds = %1378, %1371
  %1384 = phi ptr [ %1377, %1371 ], [ %1382, %1378 ]
  %1385 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1386 = getelementptr inbounds %struct.s2n_debug_info, ptr %1385, i32 0, i32 1
  store ptr %1384, ptr %1386, align 8, !tbaa !13
  %1387 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1387, align 4, !tbaa !14
  %1388 = call i32 @s2n_calculate_stacktrace()
  br label %1389

1389:                                             ; preds = %1383
  br label %1390

1390:                                             ; preds = %1389
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1391:                                             ; No predecessors!
  br label %1392

1392:                                             ; preds = %1391
  br label %1393

1393:                                             ; preds = %1392, %1356
  br label %1394

1394:                                             ; preds = %1393
  br label %1395

1395:                                             ; preds = %1394
  br label %1396

1396:                                             ; preds = %1395
  %1397 = load ptr, ptr %14, align 8, !tbaa !5
  %1398 = call i32 @s2n_handshake_read_io(ptr noundef %1397)
  %1399 = icmp sgt i32 %1398, -1
  br i1 %1399, label %1401, label %1400

1400:                                             ; preds = %1396
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1401:                                             ; preds = %1396
  br label %1402

1402:                                             ; preds = %1401
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

1404:                                             ; preds = %1403
  %1405 = load ptr, ptr %14, align 8, !tbaa !5
  %1406 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1405)
  %1407 = icmp eq i32 %1406, 11
  br i1 %1407, label %1441, label %1408

1408:                                             ; preds = %1404
  br label %1409

1409:                                             ; preds = %1408
  br label %1410

1410:                                             ; preds = %1409
  %1411 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1412 = getelementptr inbounds %struct.s2n_debug_info, ptr %1411, i32 0, i32 0
  store ptr @.str.62, ptr %1412, align 8, !tbaa !11
  %1413 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1414 = getelementptr inbounds %struct.s2n_debug_info, ptr %1413, i32 0, i32 0
  %1415 = load ptr, ptr %1414, align 8, !tbaa !11
  %1416 = getelementptr inbounds i8, ptr %1415, i64 21
  %1417 = call ptr @strrchr(ptr noundef %1416, i32 noundef 47) #7
  %1418 = icmp ne ptr %1417, null
  br i1 %1418, label %1419, label %1426

1419:                                             ; preds = %1410
  %1420 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1421 = getelementptr inbounds %struct.s2n_debug_info, ptr %1420, i32 0, i32 0
  %1422 = load ptr, ptr %1421, align 8, !tbaa !11
  %1423 = getelementptr inbounds i8, ptr %1422, i64 21
  %1424 = call ptr @strrchr(ptr noundef %1423, i32 noundef 47) #7
  %1425 = getelementptr inbounds i8, ptr %1424, i64 1
  br label %1431

1426:                                             ; preds = %1410
  %1427 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1428 = getelementptr inbounds %struct.s2n_debug_info, ptr %1427, i32 0, i32 0
  %1429 = load ptr, ptr %1428, align 8, !tbaa !11
  %1430 = getelementptr inbounds i8, ptr %1429, i64 21
  br label %1431

1431:                                             ; preds = %1426, %1419
  %1432 = phi ptr [ %1425, %1419 ], [ %1430, %1426 ]
  %1433 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1434 = getelementptr inbounds %struct.s2n_debug_info, ptr %1433, i32 0, i32 1
  store ptr %1432, ptr %1434, align 8, !tbaa !13
  %1435 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1435, align 4, !tbaa !14
  %1436 = call i32 @s2n_calculate_stacktrace()
  br label %1437

1437:                                             ; preds = %1431
  br label %1438

1438:                                             ; preds = %1437
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1439:                                             ; No predecessors!
  br label %1440

1440:                                             ; preds = %1439
  br label %1441

1441:                                             ; preds = %1440, %1404
  br label %1442

1442:                                             ; preds = %1441
  br label %1443

1443:                                             ; preds = %1442
  br label %1444

1444:                                             ; preds = %1443
  %1445 = load ptr, ptr %14, align 8, !tbaa !5
  %1446 = call i32 @s2n_handshake_write_io(ptr noundef %1445)
  %1447 = icmp sgt i32 %1446, -1
  br i1 %1447, label %1449, label %1448

1448:                                             ; preds = %1444
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1449:                                             ; preds = %1444
  br label %1450

1450:                                             ; preds = %1449
  br label %1451

1451:                                             ; preds = %1450
  br label %1452

1452:                                             ; preds = %1451
  %1453 = load ptr, ptr %14, align 8, !tbaa !5
  %1454 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1453)
  %1455 = icmp eq i32 %1454, 0
  br i1 %1455, label %1489, label %1456

1456:                                             ; preds = %1452
  br label %1457

1457:                                             ; preds = %1456
  br label %1458

1458:                                             ; preds = %1457
  %1459 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1460 = getelementptr inbounds %struct.s2n_debug_info, ptr %1459, i32 0, i32 0
  store ptr @.str.63, ptr %1460, align 8, !tbaa !11
  %1461 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1462 = getelementptr inbounds %struct.s2n_debug_info, ptr %1461, i32 0, i32 0
  %1463 = load ptr, ptr %1462, align 8, !tbaa !11
  %1464 = getelementptr inbounds i8, ptr %1463, i64 21
  %1465 = call ptr @strrchr(ptr noundef %1464, i32 noundef 47) #7
  %1466 = icmp ne ptr %1465, null
  br i1 %1466, label %1467, label %1474

1467:                                             ; preds = %1458
  %1468 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1469 = getelementptr inbounds %struct.s2n_debug_info, ptr %1468, i32 0, i32 0
  %1470 = load ptr, ptr %1469, align 8, !tbaa !11
  %1471 = getelementptr inbounds i8, ptr %1470, i64 21
  %1472 = call ptr @strrchr(ptr noundef %1471, i32 noundef 47) #7
  %1473 = getelementptr inbounds i8, ptr %1472, i64 1
  br label %1479

1474:                                             ; preds = %1458
  %1475 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1476 = getelementptr inbounds %struct.s2n_debug_info, ptr %1475, i32 0, i32 0
  %1477 = load ptr, ptr %1476, align 8, !tbaa !11
  %1478 = getelementptr inbounds i8, ptr %1477, i64 21
  br label %1479

1479:                                             ; preds = %1474, %1467
  %1480 = phi ptr [ %1473, %1467 ], [ %1478, %1474 ]
  %1481 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1482 = getelementptr inbounds %struct.s2n_debug_info, ptr %1481, i32 0, i32 1
  store ptr %1480, ptr %1482, align 8, !tbaa !13
  %1483 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1483, align 4, !tbaa !14
  %1484 = call i32 @s2n_calculate_stacktrace()
  br label %1485

1485:                                             ; preds = %1479
  br label %1486

1486:                                             ; preds = %1485
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1487:                                             ; No predecessors!
  br label %1488

1488:                                             ; preds = %1487
  br label %1489

1489:                                             ; preds = %1488, %1452
  br label %1490

1490:                                             ; preds = %1489
  br label %1491

1491:                                             ; preds = %1490
  br label %1492

1492:                                             ; preds = %1491
  %1493 = load ptr, ptr %14, align 8, !tbaa !5
  %1494 = call i32 @s2n_handshake_write_io(ptr noundef %1493)
  %1495 = icmp sgt i32 %1494, -1
  br i1 %1495, label %1497, label %1496

1496:                                             ; preds = %1492
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1497:                                             ; preds = %1492
  br label %1498

1498:                                             ; preds = %1497
  br label %1499

1499:                                             ; preds = %1498
  br label %1500

1500:                                             ; preds = %1499
  %1501 = load ptr, ptr %15, align 8, !tbaa !5
  %1502 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1501)
  %1503 = icmp eq i32 %1502, 0
  br i1 %1503, label %1537, label %1504

1504:                                             ; preds = %1500
  br label %1505

1505:                                             ; preds = %1504
  br label %1506

1506:                                             ; preds = %1505
  %1507 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1508 = getelementptr inbounds %struct.s2n_debug_info, ptr %1507, i32 0, i32 0
  store ptr @.str.64, ptr %1508, align 8, !tbaa !11
  %1509 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1510 = getelementptr inbounds %struct.s2n_debug_info, ptr %1509, i32 0, i32 0
  %1511 = load ptr, ptr %1510, align 8, !tbaa !11
  %1512 = getelementptr inbounds i8, ptr %1511, i64 21
  %1513 = call ptr @strrchr(ptr noundef %1512, i32 noundef 47) #7
  %1514 = icmp ne ptr %1513, null
  br i1 %1514, label %1515, label %1522

1515:                                             ; preds = %1506
  %1516 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1517 = getelementptr inbounds %struct.s2n_debug_info, ptr %1516, i32 0, i32 0
  %1518 = load ptr, ptr %1517, align 8, !tbaa !11
  %1519 = getelementptr inbounds i8, ptr %1518, i64 21
  %1520 = call ptr @strrchr(ptr noundef %1519, i32 noundef 47) #7
  %1521 = getelementptr inbounds i8, ptr %1520, i64 1
  br label %1527

1522:                                             ; preds = %1506
  %1523 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1524 = getelementptr inbounds %struct.s2n_debug_info, ptr %1523, i32 0, i32 0
  %1525 = load ptr, ptr %1524, align 8, !tbaa !11
  %1526 = getelementptr inbounds i8, ptr %1525, i64 21
  br label %1527

1527:                                             ; preds = %1522, %1515
  %1528 = phi ptr [ %1521, %1515 ], [ %1526, %1522 ]
  %1529 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1530 = getelementptr inbounds %struct.s2n_debug_info, ptr %1529, i32 0, i32 1
  store ptr %1528, ptr %1530, align 8, !tbaa !13
  %1531 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1531, align 4, !tbaa !14
  %1532 = call i32 @s2n_calculate_stacktrace()
  br label %1533

1533:                                             ; preds = %1527
  br label %1534

1534:                                             ; preds = %1533
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1535:                                             ; No predecessors!
  br label %1536

1536:                                             ; preds = %1535
  br label %1537

1537:                                             ; preds = %1536, %1500
  br label %1538

1538:                                             ; preds = %1537
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

1540:                                             ; preds = %1539
  %1541 = load ptr, ptr %15, align 8, !tbaa !5
  %1542 = call i32 @s2n_handshake_read_io(ptr noundef %1541)
  %1543 = icmp sgt i32 %1542, -1
  br i1 %1543, label %1545, label %1544

1544:                                             ; preds = %1540
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1545:                                             ; preds = %1540
  br label %1546

1546:                                             ; preds = %1545
  br label %1547

1547:                                             ; preds = %1546
  br label %1548

1548:                                             ; preds = %1547
  %1549 = load ptr, ptr %15, align 8, !tbaa !5
  %1550 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1549)
  %1551 = icmp eq i32 %1550, 0
  br i1 %1551, label %1585, label %1552

1552:                                             ; preds = %1548
  br label %1553

1553:                                             ; preds = %1552
  br label %1554

1554:                                             ; preds = %1553
  %1555 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1556 = getelementptr inbounds %struct.s2n_debug_info, ptr %1555, i32 0, i32 0
  store ptr @.str.65, ptr %1556, align 8, !tbaa !11
  %1557 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1558 = getelementptr inbounds %struct.s2n_debug_info, ptr %1557, i32 0, i32 0
  %1559 = load ptr, ptr %1558, align 8, !tbaa !11
  %1560 = getelementptr inbounds i8, ptr %1559, i64 21
  %1561 = call ptr @strrchr(ptr noundef %1560, i32 noundef 47) #7
  %1562 = icmp ne ptr %1561, null
  br i1 %1562, label %1563, label %1570

1563:                                             ; preds = %1554
  %1564 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1565 = getelementptr inbounds %struct.s2n_debug_info, ptr %1564, i32 0, i32 0
  %1566 = load ptr, ptr %1565, align 8, !tbaa !11
  %1567 = getelementptr inbounds i8, ptr %1566, i64 21
  %1568 = call ptr @strrchr(ptr noundef %1567, i32 noundef 47) #7
  %1569 = getelementptr inbounds i8, ptr %1568, i64 1
  br label %1575

1570:                                             ; preds = %1554
  %1571 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1572 = getelementptr inbounds %struct.s2n_debug_info, ptr %1571, i32 0, i32 0
  %1573 = load ptr, ptr %1572, align 8, !tbaa !11
  %1574 = getelementptr inbounds i8, ptr %1573, i64 21
  br label %1575

1575:                                             ; preds = %1570, %1563
  %1576 = phi ptr [ %1569, %1563 ], [ %1574, %1570 ]
  %1577 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1578 = getelementptr inbounds %struct.s2n_debug_info, ptr %1577, i32 0, i32 1
  store ptr %1576, ptr %1578, align 8, !tbaa !13
  %1579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1579, align 4, !tbaa !14
  %1580 = call i32 @s2n_calculate_stacktrace()
  br label %1581

1581:                                             ; preds = %1575
  br label %1582

1582:                                             ; preds = %1581
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1583:                                             ; No predecessors!
  br label %1584

1584:                                             ; preds = %1583
  br label %1585

1585:                                             ; preds = %1584, %1548
  br label %1586

1586:                                             ; preds = %1585
  br label %1587

1587:                                             ; preds = %1586
  br label %1588

1588:                                             ; preds = %1587
  %1589 = load ptr, ptr %15, align 8, !tbaa !5
  %1590 = call i32 @s2n_handshake_read_io(ptr noundef %1589)
  %1591 = icmp sgt i32 %1590, -1
  br i1 %1591, label %1593, label %1592

1592:                                             ; preds = %1588
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1593:                                             ; preds = %1588
  br label %1594

1594:                                             ; preds = %1593
  br label %1595

1595:                                             ; preds = %1594
  br label %1596

1596:                                             ; preds = %1595
  %1597 = load ptr, ptr %15, align 8, !tbaa !5
  %1598 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1597)
  %1599 = icmp eq i32 %1598, 1
  br i1 %1599, label %1633, label %1600

1600:                                             ; preds = %1596
  br label %1601

1601:                                             ; preds = %1600
  br label %1602

1602:                                             ; preds = %1601
  %1603 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1604 = getelementptr inbounds %struct.s2n_debug_info, ptr %1603, i32 0, i32 0
  store ptr @.str.66, ptr %1604, align 8, !tbaa !11
  %1605 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1606 = getelementptr inbounds %struct.s2n_debug_info, ptr %1605, i32 0, i32 0
  %1607 = load ptr, ptr %1606, align 8, !tbaa !11
  %1608 = getelementptr inbounds i8, ptr %1607, i64 21
  %1609 = call ptr @strrchr(ptr noundef %1608, i32 noundef 47) #7
  %1610 = icmp ne ptr %1609, null
  br i1 %1610, label %1611, label %1618

1611:                                             ; preds = %1602
  %1612 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1613 = getelementptr inbounds %struct.s2n_debug_info, ptr %1612, i32 0, i32 0
  %1614 = load ptr, ptr %1613, align 8, !tbaa !11
  %1615 = getelementptr inbounds i8, ptr %1614, i64 21
  %1616 = call ptr @strrchr(ptr noundef %1615, i32 noundef 47) #7
  %1617 = getelementptr inbounds i8, ptr %1616, i64 1
  br label %1623

1618:                                             ; preds = %1602
  %1619 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1620 = getelementptr inbounds %struct.s2n_debug_info, ptr %1619, i32 0, i32 0
  %1621 = load ptr, ptr %1620, align 8, !tbaa !11
  %1622 = getelementptr inbounds i8, ptr %1621, i64 21
  br label %1623

1623:                                             ; preds = %1618, %1611
  %1624 = phi ptr [ %1617, %1611 ], [ %1622, %1618 ]
  %1625 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1626 = getelementptr inbounds %struct.s2n_debug_info, ptr %1625, i32 0, i32 1
  store ptr %1624, ptr %1626, align 8, !tbaa !13
  %1627 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1627, align 4, !tbaa !14
  %1628 = call i32 @s2n_calculate_stacktrace()
  br label %1629

1629:                                             ; preds = %1623
  br label %1630

1630:                                             ; preds = %1629
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1631:                                             ; No predecessors!
  br label %1632

1632:                                             ; preds = %1631
  br label %1633

1633:                                             ; preds = %1632, %1596
  br label %1634

1634:                                             ; preds = %1633
  br label %1635

1635:                                             ; preds = %1634
  br label %1636

1636:                                             ; preds = %1635
  %1637 = load ptr, ptr %15, align 8, !tbaa !5
  %1638 = call i32 @s2n_handshake_write_io(ptr noundef %1637)
  %1639 = icmp sgt i32 %1638, -1
  br i1 %1639, label %1641, label %1640

1640:                                             ; preds = %1636
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1641:                                             ; preds = %1636
  br label %1642

1642:                                             ; preds = %1641
  br label %1643

1643:                                             ; preds = %1642
  br label %1644

1644:                                             ; preds = %1643, %1253
  br label %1645

1645:                                             ; preds = %1644
  %1646 = load ptr, ptr %14, align 8, !tbaa !5
  %1647 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1646)
  %1648 = icmp eq i32 %1647, 1
  br i1 %1648, label %1682, label %1649

1649:                                             ; preds = %1645
  br label %1650

1650:                                             ; preds = %1649
  br label %1651

1651:                                             ; preds = %1650
  %1652 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1653 = getelementptr inbounds %struct.s2n_debug_info, ptr %1652, i32 0, i32 0
  store ptr @.str.67, ptr %1653, align 8, !tbaa !11
  %1654 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1655 = getelementptr inbounds %struct.s2n_debug_info, ptr %1654, i32 0, i32 0
  %1656 = load ptr, ptr %1655, align 8, !tbaa !11
  %1657 = getelementptr inbounds i8, ptr %1656, i64 21
  %1658 = call ptr @strrchr(ptr noundef %1657, i32 noundef 47) #7
  %1659 = icmp ne ptr %1658, null
  br i1 %1659, label %1660, label %1667

1660:                                             ; preds = %1651
  %1661 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1662 = getelementptr inbounds %struct.s2n_debug_info, ptr %1661, i32 0, i32 0
  %1663 = load ptr, ptr %1662, align 8, !tbaa !11
  %1664 = getelementptr inbounds i8, ptr %1663, i64 21
  %1665 = call ptr @strrchr(ptr noundef %1664, i32 noundef 47) #7
  %1666 = getelementptr inbounds i8, ptr %1665, i64 1
  br label %1672

1667:                                             ; preds = %1651
  %1668 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1669 = getelementptr inbounds %struct.s2n_debug_info, ptr %1668, i32 0, i32 0
  %1670 = load ptr, ptr %1669, align 8, !tbaa !11
  %1671 = getelementptr inbounds i8, ptr %1670, i64 21
  br label %1672

1672:                                             ; preds = %1667, %1660
  %1673 = phi ptr [ %1666, %1660 ], [ %1671, %1667 ]
  %1674 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1675 = getelementptr inbounds %struct.s2n_debug_info, ptr %1674, i32 0, i32 1
  store ptr %1673, ptr %1675, align 8, !tbaa !13
  %1676 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1676, align 4, !tbaa !14
  %1677 = call i32 @s2n_calculate_stacktrace()
  br label %1678

1678:                                             ; preds = %1672
  br label %1679

1679:                                             ; preds = %1678
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1680:                                             ; No predecessors!
  br label %1681

1681:                                             ; preds = %1680
  br label %1682

1682:                                             ; preds = %1681, %1645
  br label %1683

1683:                                             ; preds = %1682
  br label %1684

1684:                                             ; preds = %1683
  br label %1685

1685:                                             ; preds = %1684
  %1686 = load ptr, ptr %14, align 8, !tbaa !5
  %1687 = call i32 @s2n_handshake_read_io(ptr noundef %1686)
  %1688 = icmp sgt i32 %1687, -1
  br i1 %1688, label %1690, label %1689

1689:                                             ; preds = %1685
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1690:                                             ; preds = %1685
  br label %1691

1691:                                             ; preds = %1690
  br label %1692

1692:                                             ; preds = %1691
  %1693 = load ptr, ptr %10, align 8, !tbaa !5
  %1694 = icmp ne ptr %1693, null
  br i1 %1694, label %1695, label %2445

1695:                                             ; preds = %1692
  br label %1696

1696:                                             ; preds = %1695
  %1697 = load ptr, ptr %10, align 8, !tbaa !5
  %1698 = load ptr, ptr %14, align 8, !tbaa !5
  %1699 = getelementptr inbounds %struct.s2n_connection, ptr %1698, i32 0, i32 31
  %1700 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1699, i32 0, i32 4
  %1701 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1700, i32 0, i32 0
  %1702 = load ptr, ptr %1701, align 8, !tbaa !50
  %1703 = icmp eq ptr %1697, %1702
  br i1 %1703, label %1737, label %1704

1704:                                             ; preds = %1696
  br label %1705

1705:                                             ; preds = %1704
  br label %1706

1706:                                             ; preds = %1705
  %1707 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1708 = getelementptr inbounds %struct.s2n_debug_info, ptr %1707, i32 0, i32 0
  store ptr @.str.68, ptr %1708, align 8, !tbaa !11
  %1709 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1710 = getelementptr inbounds %struct.s2n_debug_info, ptr %1709, i32 0, i32 0
  %1711 = load ptr, ptr %1710, align 8, !tbaa !11
  %1712 = getelementptr inbounds i8, ptr %1711, i64 21
  %1713 = call ptr @strrchr(ptr noundef %1712, i32 noundef 47) #7
  %1714 = icmp ne ptr %1713, null
  br i1 %1714, label %1715, label %1722

1715:                                             ; preds = %1706
  %1716 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1717 = getelementptr inbounds %struct.s2n_debug_info, ptr %1716, i32 0, i32 0
  %1718 = load ptr, ptr %1717, align 8, !tbaa !11
  %1719 = getelementptr inbounds i8, ptr %1718, i64 21
  %1720 = call ptr @strrchr(ptr noundef %1719, i32 noundef 47) #7
  %1721 = getelementptr inbounds i8, ptr %1720, i64 1
  br label %1727

1722:                                             ; preds = %1706
  %1723 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1724 = getelementptr inbounds %struct.s2n_debug_info, ptr %1723, i32 0, i32 0
  %1725 = load ptr, ptr %1724, align 8, !tbaa !11
  %1726 = getelementptr inbounds i8, ptr %1725, i64 21
  br label %1727

1727:                                             ; preds = %1722, %1715
  %1728 = phi ptr [ %1721, %1715 ], [ %1726, %1722 ]
  %1729 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1730 = getelementptr inbounds %struct.s2n_debug_info, ptr %1729, i32 0, i32 1
  store ptr %1728, ptr %1730, align 8, !tbaa !13
  %1731 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1731, align 4, !tbaa !14
  %1732 = call i32 @s2n_calculate_stacktrace()
  br label %1733

1733:                                             ; preds = %1727
  br label %1734

1734:                                             ; preds = %1733
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1735:                                             ; No predecessors!
  br label %1736

1736:                                             ; preds = %1735
  br label %1737

1737:                                             ; preds = %1736, %1696
  br label %1738

1738:                                             ; preds = %1737
  br label %1739

1739:                                             ; preds = %1738
  br label %1740

1740:                                             ; preds = %1739
  %1741 = load ptr, ptr %10, align 8, !tbaa !5
  %1742 = getelementptr inbounds %struct.s2n_kem_group, ptr %1741, i32 0, i32 3
  %1743 = load ptr, ptr %1742, align 8, !tbaa !51
  %1744 = load ptr, ptr %14, align 8, !tbaa !5
  %1745 = getelementptr inbounds %struct.s2n_connection, ptr %1744, i32 0, i32 31
  %1746 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1745, i32 0, i32 4
  %1747 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1746, i32 0, i32 1
  %1748 = getelementptr inbounds %struct.s2n_kem_params, ptr %1747, i32 0, i32 0
  %1749 = load ptr, ptr %1748, align 8, !tbaa !53
  %1750 = icmp eq ptr %1743, %1749
  br i1 %1750, label %1784, label %1751

1751:                                             ; preds = %1740
  br label %1752

1752:                                             ; preds = %1751
  br label %1753

1753:                                             ; preds = %1752
  %1754 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1755 = getelementptr inbounds %struct.s2n_debug_info, ptr %1754, i32 0, i32 0
  store ptr @.str.69, ptr %1755, align 8, !tbaa !11
  %1756 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1757 = getelementptr inbounds %struct.s2n_debug_info, ptr %1756, i32 0, i32 0
  %1758 = load ptr, ptr %1757, align 8, !tbaa !11
  %1759 = getelementptr inbounds i8, ptr %1758, i64 21
  %1760 = call ptr @strrchr(ptr noundef %1759, i32 noundef 47) #7
  %1761 = icmp ne ptr %1760, null
  br i1 %1761, label %1762, label %1769

1762:                                             ; preds = %1753
  %1763 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1764 = getelementptr inbounds %struct.s2n_debug_info, ptr %1763, i32 0, i32 0
  %1765 = load ptr, ptr %1764, align 8, !tbaa !11
  %1766 = getelementptr inbounds i8, ptr %1765, i64 21
  %1767 = call ptr @strrchr(ptr noundef %1766, i32 noundef 47) #7
  %1768 = getelementptr inbounds i8, ptr %1767, i64 1
  br label %1774

1769:                                             ; preds = %1753
  %1770 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1771 = getelementptr inbounds %struct.s2n_debug_info, ptr %1770, i32 0, i32 0
  %1772 = load ptr, ptr %1771, align 8, !tbaa !11
  %1773 = getelementptr inbounds i8, ptr %1772, i64 21
  br label %1774

1774:                                             ; preds = %1769, %1762
  %1775 = phi ptr [ %1768, %1762 ], [ %1773, %1769 ]
  %1776 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1777 = getelementptr inbounds %struct.s2n_debug_info, ptr %1776, i32 0, i32 1
  store ptr %1775, ptr %1777, align 8, !tbaa !13
  %1778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1778, align 4, !tbaa !14
  %1779 = call i32 @s2n_calculate_stacktrace()
  br label %1780

1780:                                             ; preds = %1774
  br label %1781

1781:                                             ; preds = %1780
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1782:                                             ; No predecessors!
  br label %1783

1783:                                             ; preds = %1782
  br label %1784

1784:                                             ; preds = %1783, %1740
  br label %1785

1785:                                             ; preds = %1784
  br label %1786

1786:                                             ; preds = %1785
  br label %1787

1787:                                             ; preds = %1786
  %1788 = load ptr, ptr %10, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.s2n_kem_group, ptr %1788, i32 0, i32 2
  %1790 = load ptr, ptr %1789, align 8, !tbaa !54
  %1791 = load ptr, ptr %14, align 8, !tbaa !5
  %1792 = getelementptr inbounds %struct.s2n_connection, ptr %1791, i32 0, i32 31
  %1793 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1792, i32 0, i32 4
  %1794 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1793, i32 0, i32 2
  %1795 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1794, i32 0, i32 0
  %1796 = load ptr, ptr %1795, align 8, !tbaa !55
  %1797 = icmp eq ptr %1790, %1796
  br i1 %1797, label %1831, label %1798

1798:                                             ; preds = %1787
  br label %1799

1799:                                             ; preds = %1798
  br label %1800

1800:                                             ; preds = %1799
  %1801 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1802 = getelementptr inbounds %struct.s2n_debug_info, ptr %1801, i32 0, i32 0
  store ptr @.str.70, ptr %1802, align 8, !tbaa !11
  %1803 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1804 = getelementptr inbounds %struct.s2n_debug_info, ptr %1803, i32 0, i32 0
  %1805 = load ptr, ptr %1804, align 8, !tbaa !11
  %1806 = getelementptr inbounds i8, ptr %1805, i64 21
  %1807 = call ptr @strrchr(ptr noundef %1806, i32 noundef 47) #7
  %1808 = icmp ne ptr %1807, null
  br i1 %1808, label %1809, label %1816

1809:                                             ; preds = %1800
  %1810 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1811 = getelementptr inbounds %struct.s2n_debug_info, ptr %1810, i32 0, i32 0
  %1812 = load ptr, ptr %1811, align 8, !tbaa !11
  %1813 = getelementptr inbounds i8, ptr %1812, i64 21
  %1814 = call ptr @strrchr(ptr noundef %1813, i32 noundef 47) #7
  %1815 = getelementptr inbounds i8, ptr %1814, i64 1
  br label %1821

1816:                                             ; preds = %1800
  %1817 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1818 = getelementptr inbounds %struct.s2n_debug_info, ptr %1817, i32 0, i32 0
  %1819 = load ptr, ptr %1818, align 8, !tbaa !11
  %1820 = getelementptr inbounds i8, ptr %1819, i64 21
  br label %1821

1821:                                             ; preds = %1816, %1809
  %1822 = phi ptr [ %1815, %1809 ], [ %1820, %1816 ]
  %1823 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1824 = getelementptr inbounds %struct.s2n_debug_info, ptr %1823, i32 0, i32 1
  store ptr %1822, ptr %1824, align 8, !tbaa !13
  %1825 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1825, align 4, !tbaa !14
  %1826 = call i32 @s2n_calculate_stacktrace()
  br label %1827

1827:                                             ; preds = %1821
  br label %1828

1828:                                             ; preds = %1827
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1829:                                             ; No predecessors!
  br label %1830

1830:                                             ; preds = %1829
  br label %1831

1831:                                             ; preds = %1830, %1787
  br label %1832

1832:                                             ; preds = %1831
  br label %1833

1833:                                             ; preds = %1832
  br label %1834

1834:                                             ; preds = %1833
  %1835 = load ptr, ptr %14, align 8, !tbaa !5
  %1836 = getelementptr inbounds %struct.s2n_connection, ptr %1835, i32 0, i32 31
  %1837 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1836, i32 0, i32 1
  %1838 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1837, i32 0, i32 0
  %1839 = load ptr, ptr %1838, align 8, !tbaa !56
  %1840 = icmp eq ptr null, %1839
  br i1 %1840, label %1874, label %1841

1841:                                             ; preds = %1834
  br label %1842

1842:                                             ; preds = %1841
  br label %1843

1843:                                             ; preds = %1842
  %1844 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1845 = getelementptr inbounds %struct.s2n_debug_info, ptr %1844, i32 0, i32 0
  store ptr @.str.71, ptr %1845, align 8, !tbaa !11
  %1846 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1847 = getelementptr inbounds %struct.s2n_debug_info, ptr %1846, i32 0, i32 0
  %1848 = load ptr, ptr %1847, align 8, !tbaa !11
  %1849 = getelementptr inbounds i8, ptr %1848, i64 21
  %1850 = call ptr @strrchr(ptr noundef %1849, i32 noundef 47) #7
  %1851 = icmp ne ptr %1850, null
  br i1 %1851, label %1852, label %1859

1852:                                             ; preds = %1843
  %1853 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1854 = getelementptr inbounds %struct.s2n_debug_info, ptr %1853, i32 0, i32 0
  %1855 = load ptr, ptr %1854, align 8, !tbaa !11
  %1856 = getelementptr inbounds i8, ptr %1855, i64 21
  %1857 = call ptr @strrchr(ptr noundef %1856, i32 noundef 47) #7
  %1858 = getelementptr inbounds i8, ptr %1857, i64 1
  br label %1864

1859:                                             ; preds = %1843
  %1860 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1861 = getelementptr inbounds %struct.s2n_debug_info, ptr %1860, i32 0, i32 0
  %1862 = load ptr, ptr %1861, align 8, !tbaa !11
  %1863 = getelementptr inbounds i8, ptr %1862, i64 21
  br label %1864

1864:                                             ; preds = %1859, %1852
  %1865 = phi ptr [ %1858, %1852 ], [ %1863, %1859 ]
  %1866 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1867 = getelementptr inbounds %struct.s2n_debug_info, ptr %1866, i32 0, i32 1
  store ptr %1865, ptr %1867, align 8, !tbaa !13
  %1868 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1868, align 4, !tbaa !14
  %1869 = call i32 @s2n_calculate_stacktrace()
  br label %1870

1870:                                             ; preds = %1864
  br label %1871

1871:                                             ; preds = %1870
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1872:                                             ; No predecessors!
  br label %1873

1873:                                             ; preds = %1872
  br label %1874

1874:                                             ; preds = %1873, %1834
  br label %1875

1875:                                             ; preds = %1874
  br label %1876

1876:                                             ; preds = %1875
  br label %1877

1877:                                             ; preds = %1876
  %1878 = load ptr, ptr %10, align 8, !tbaa !5
  %1879 = load ptr, ptr %15, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.s2n_connection, ptr %1879, i32 0, i32 31
  %1881 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1880, i32 0, i32 4
  %1882 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1881, i32 0, i32 0
  %1883 = load ptr, ptr %1882, align 8, !tbaa !50
  %1884 = icmp eq ptr %1878, %1883
  br i1 %1884, label %1918, label %1885

1885:                                             ; preds = %1877
  br label %1886

1886:                                             ; preds = %1885
  br label %1887

1887:                                             ; preds = %1886
  %1888 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1889 = getelementptr inbounds %struct.s2n_debug_info, ptr %1888, i32 0, i32 0
  store ptr @.str.72, ptr %1889, align 8, !tbaa !11
  %1890 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1891 = getelementptr inbounds %struct.s2n_debug_info, ptr %1890, i32 0, i32 0
  %1892 = load ptr, ptr %1891, align 8, !tbaa !11
  %1893 = getelementptr inbounds i8, ptr %1892, i64 21
  %1894 = call ptr @strrchr(ptr noundef %1893, i32 noundef 47) #7
  %1895 = icmp ne ptr %1894, null
  br i1 %1895, label %1896, label %1903

1896:                                             ; preds = %1887
  %1897 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1898 = getelementptr inbounds %struct.s2n_debug_info, ptr %1897, i32 0, i32 0
  %1899 = load ptr, ptr %1898, align 8, !tbaa !11
  %1900 = getelementptr inbounds i8, ptr %1899, i64 21
  %1901 = call ptr @strrchr(ptr noundef %1900, i32 noundef 47) #7
  %1902 = getelementptr inbounds i8, ptr %1901, i64 1
  br label %1908

1903:                                             ; preds = %1887
  %1904 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1905 = getelementptr inbounds %struct.s2n_debug_info, ptr %1904, i32 0, i32 0
  %1906 = load ptr, ptr %1905, align 8, !tbaa !11
  %1907 = getelementptr inbounds i8, ptr %1906, i64 21
  br label %1908

1908:                                             ; preds = %1903, %1896
  %1909 = phi ptr [ %1902, %1896 ], [ %1907, %1903 ]
  %1910 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1911 = getelementptr inbounds %struct.s2n_debug_info, ptr %1910, i32 0, i32 1
  store ptr %1909, ptr %1911, align 8, !tbaa !13
  %1912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1912, align 4, !tbaa !14
  %1913 = call i32 @s2n_calculate_stacktrace()
  br label %1914

1914:                                             ; preds = %1908
  br label %1915

1915:                                             ; preds = %1914
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1916:                                             ; No predecessors!
  br label %1917

1917:                                             ; preds = %1916
  br label %1918

1918:                                             ; preds = %1917, %1877
  br label %1919

1919:                                             ; preds = %1918
  br label %1920

1920:                                             ; preds = %1919
  br label %1921

1921:                                             ; preds = %1920
  %1922 = load ptr, ptr %10, align 8, !tbaa !5
  %1923 = getelementptr inbounds %struct.s2n_kem_group, ptr %1922, i32 0, i32 3
  %1924 = load ptr, ptr %1923, align 8, !tbaa !51
  %1925 = load ptr, ptr %15, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.s2n_connection, ptr %1925, i32 0, i32 31
  %1927 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1926, i32 0, i32 4
  %1928 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1927, i32 0, i32 1
  %1929 = getelementptr inbounds %struct.s2n_kem_params, ptr %1928, i32 0, i32 0
  %1930 = load ptr, ptr %1929, align 8, !tbaa !53
  %1931 = icmp eq ptr %1924, %1930
  br i1 %1931, label %1965, label %1932

1932:                                             ; preds = %1921
  br label %1933

1933:                                             ; preds = %1932
  br label %1934

1934:                                             ; preds = %1933
  %1935 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1936 = getelementptr inbounds %struct.s2n_debug_info, ptr %1935, i32 0, i32 0
  store ptr @.str.73, ptr %1936, align 8, !tbaa !11
  %1937 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1938 = getelementptr inbounds %struct.s2n_debug_info, ptr %1937, i32 0, i32 0
  %1939 = load ptr, ptr %1938, align 8, !tbaa !11
  %1940 = getelementptr inbounds i8, ptr %1939, i64 21
  %1941 = call ptr @strrchr(ptr noundef %1940, i32 noundef 47) #7
  %1942 = icmp ne ptr %1941, null
  br i1 %1942, label %1943, label %1950

1943:                                             ; preds = %1934
  %1944 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1945 = getelementptr inbounds %struct.s2n_debug_info, ptr %1944, i32 0, i32 0
  %1946 = load ptr, ptr %1945, align 8, !tbaa !11
  %1947 = getelementptr inbounds i8, ptr %1946, i64 21
  %1948 = call ptr @strrchr(ptr noundef %1947, i32 noundef 47) #7
  %1949 = getelementptr inbounds i8, ptr %1948, i64 1
  br label %1955

1950:                                             ; preds = %1934
  %1951 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1952 = getelementptr inbounds %struct.s2n_debug_info, ptr %1951, i32 0, i32 0
  %1953 = load ptr, ptr %1952, align 8, !tbaa !11
  %1954 = getelementptr inbounds i8, ptr %1953, i64 21
  br label %1955

1955:                                             ; preds = %1950, %1943
  %1956 = phi ptr [ %1949, %1943 ], [ %1954, %1950 ]
  %1957 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1958 = getelementptr inbounds %struct.s2n_debug_info, ptr %1957, i32 0, i32 1
  store ptr %1956, ptr %1958, align 8, !tbaa !13
  %1959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1959, align 4, !tbaa !14
  %1960 = call i32 @s2n_calculate_stacktrace()
  br label %1961

1961:                                             ; preds = %1955
  br label %1962

1962:                                             ; preds = %1961
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

1963:                                             ; No predecessors!
  br label %1964

1964:                                             ; preds = %1963
  br label %1965

1965:                                             ; preds = %1964, %1921
  br label %1966

1966:                                             ; preds = %1965
  br label %1967

1967:                                             ; preds = %1966
  br label %1968

1968:                                             ; preds = %1967
  %1969 = load ptr, ptr %10, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.s2n_kem_group, ptr %1969, i32 0, i32 2
  %1971 = load ptr, ptr %1970, align 8, !tbaa !54
  %1972 = load ptr, ptr %15, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.s2n_connection, ptr %1972, i32 0, i32 31
  %1974 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1973, i32 0, i32 4
  %1975 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1974, i32 0, i32 2
  %1976 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1975, i32 0, i32 0
  %1977 = load ptr, ptr %1976, align 8, !tbaa !55
  %1978 = icmp eq ptr %1971, %1977
  br i1 %1978, label %2012, label %1979

1979:                                             ; preds = %1968
  br label %1980

1980:                                             ; preds = %1979
  br label %1981

1981:                                             ; preds = %1980
  %1982 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1983 = getelementptr inbounds %struct.s2n_debug_info, ptr %1982, i32 0, i32 0
  store ptr @.str.74, ptr %1983, align 8, !tbaa !11
  %1984 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1985 = getelementptr inbounds %struct.s2n_debug_info, ptr %1984, i32 0, i32 0
  %1986 = load ptr, ptr %1985, align 8, !tbaa !11
  %1987 = getelementptr inbounds i8, ptr %1986, i64 21
  %1988 = call ptr @strrchr(ptr noundef %1987, i32 noundef 47) #7
  %1989 = icmp ne ptr %1988, null
  br i1 %1989, label %1990, label %1997

1990:                                             ; preds = %1981
  %1991 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1992 = getelementptr inbounds %struct.s2n_debug_info, ptr %1991, i32 0, i32 0
  %1993 = load ptr, ptr %1992, align 8, !tbaa !11
  %1994 = getelementptr inbounds i8, ptr %1993, i64 21
  %1995 = call ptr @strrchr(ptr noundef %1994, i32 noundef 47) #7
  %1996 = getelementptr inbounds i8, ptr %1995, i64 1
  br label %2002

1997:                                             ; preds = %1981
  %1998 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %1999 = getelementptr inbounds %struct.s2n_debug_info, ptr %1998, i32 0, i32 0
  %2000 = load ptr, ptr %1999, align 8, !tbaa !11
  %2001 = getelementptr inbounds i8, ptr %2000, i64 21
  br label %2002

2002:                                             ; preds = %1997, %1990
  %2003 = phi ptr [ %1996, %1990 ], [ %2001, %1997 ]
  %2004 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2005 = getelementptr inbounds %struct.s2n_debug_info, ptr %2004, i32 0, i32 1
  store ptr %2003, ptr %2005, align 8, !tbaa !13
  %2006 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2006, align 4, !tbaa !14
  %2007 = call i32 @s2n_calculate_stacktrace()
  br label %2008

2008:                                             ; preds = %2002
  br label %2009

2009:                                             ; preds = %2008
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2010:                                             ; No predecessors!
  br label %2011

2011:                                             ; preds = %2010
  br label %2012

2012:                                             ; preds = %2011, %1968
  br label %2013

2013:                                             ; preds = %2012
  br label %2014

2014:                                             ; preds = %2013
  br label %2015

2015:                                             ; preds = %2014
  %2016 = load ptr, ptr %15, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.s2n_connection, ptr %2016, i32 0, i32 31
  %2018 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2017, i32 0, i32 1
  %2019 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2018, i32 0, i32 0
  %2020 = load ptr, ptr %2019, align 8, !tbaa !56
  %2021 = icmp eq ptr null, %2020
  br i1 %2021, label %2055, label %2022

2022:                                             ; preds = %2015
  br label %2023

2023:                                             ; preds = %2022
  br label %2024

2024:                                             ; preds = %2023
  %2025 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2026 = getelementptr inbounds %struct.s2n_debug_info, ptr %2025, i32 0, i32 0
  store ptr @.str.75, ptr %2026, align 8, !tbaa !11
  %2027 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2028 = getelementptr inbounds %struct.s2n_debug_info, ptr %2027, i32 0, i32 0
  %2029 = load ptr, ptr %2028, align 8, !tbaa !11
  %2030 = getelementptr inbounds i8, ptr %2029, i64 21
  %2031 = call ptr @strrchr(ptr noundef %2030, i32 noundef 47) #7
  %2032 = icmp ne ptr %2031, null
  br i1 %2032, label %2033, label %2040

2033:                                             ; preds = %2024
  %2034 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2035 = getelementptr inbounds %struct.s2n_debug_info, ptr %2034, i32 0, i32 0
  %2036 = load ptr, ptr %2035, align 8, !tbaa !11
  %2037 = getelementptr inbounds i8, ptr %2036, i64 21
  %2038 = call ptr @strrchr(ptr noundef %2037, i32 noundef 47) #7
  %2039 = getelementptr inbounds i8, ptr %2038, i64 1
  br label %2045

2040:                                             ; preds = %2024
  %2041 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2042 = getelementptr inbounds %struct.s2n_debug_info, ptr %2041, i32 0, i32 0
  %2043 = load ptr, ptr %2042, align 8, !tbaa !11
  %2044 = getelementptr inbounds i8, ptr %2043, i64 21
  br label %2045

2045:                                             ; preds = %2040, %2033
  %2046 = phi ptr [ %2039, %2033 ], [ %2044, %2040 ]
  %2047 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2048 = getelementptr inbounds %struct.s2n_debug_info, ptr %2047, i32 0, i32 1
  store ptr %2046, ptr %2048, align 8, !tbaa !13
  %2049 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2049, align 4, !tbaa !14
  %2050 = call i32 @s2n_calculate_stacktrace()
  br label %2051

2051:                                             ; preds = %2045
  br label %2052

2052:                                             ; preds = %2051
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2053:                                             ; No predecessors!
  br label %2054

2054:                                             ; preds = %2053
  br label %2055

2055:                                             ; preds = %2054, %2015
  br label %2056

2056:                                             ; preds = %2055
  br label %2057

2057:                                             ; preds = %2056
  br label %2058

2058:                                             ; preds = %2057
  %2059 = load ptr, ptr %10, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.s2n_kem_group, ptr %2059, i32 0, i32 0
  %2061 = load ptr, ptr %2060, align 8, !tbaa !57
  %2062 = call i64 @strlen(ptr noundef %2061) #7
  %2063 = load ptr, ptr %15, align 8, !tbaa !5
  %2064 = call ptr @s2n_connection_get_kem_group_name(ptr noundef %2063)
  %2065 = call i64 @strlen(ptr noundef %2064) #7
  %2066 = icmp eq i64 %2062, %2065
  br i1 %2066, label %2100, label %2067

2067:                                             ; preds = %2058
  br label %2068

2068:                                             ; preds = %2067
  br label %2069

2069:                                             ; preds = %2068
  %2070 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2071 = getelementptr inbounds %struct.s2n_debug_info, ptr %2070, i32 0, i32 0
  store ptr @.str.76, ptr %2071, align 8, !tbaa !11
  %2072 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2073 = getelementptr inbounds %struct.s2n_debug_info, ptr %2072, i32 0, i32 0
  %2074 = load ptr, ptr %2073, align 8, !tbaa !11
  %2075 = getelementptr inbounds i8, ptr %2074, i64 21
  %2076 = call ptr @strrchr(ptr noundef %2075, i32 noundef 47) #7
  %2077 = icmp ne ptr %2076, null
  br i1 %2077, label %2078, label %2085

2078:                                             ; preds = %2069
  %2079 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2080 = getelementptr inbounds %struct.s2n_debug_info, ptr %2079, i32 0, i32 0
  %2081 = load ptr, ptr %2080, align 8, !tbaa !11
  %2082 = getelementptr inbounds i8, ptr %2081, i64 21
  %2083 = call ptr @strrchr(ptr noundef %2082, i32 noundef 47) #7
  %2084 = getelementptr inbounds i8, ptr %2083, i64 1
  br label %2090

2085:                                             ; preds = %2069
  %2086 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2087 = getelementptr inbounds %struct.s2n_debug_info, ptr %2086, i32 0, i32 0
  %2088 = load ptr, ptr %2087, align 8, !tbaa !11
  %2089 = getelementptr inbounds i8, ptr %2088, i64 21
  br label %2090

2090:                                             ; preds = %2085, %2078
  %2091 = phi ptr [ %2084, %2078 ], [ %2089, %2085 ]
  %2092 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2093 = getelementptr inbounds %struct.s2n_debug_info, ptr %2092, i32 0, i32 1
  store ptr %2091, ptr %2093, align 8, !tbaa !13
  %2094 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2094, align 4, !tbaa !14
  %2095 = call i32 @s2n_calculate_stacktrace()
  br label %2096

2096:                                             ; preds = %2090
  br label %2097

2097:                                             ; preds = %2096
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2098:                                             ; No predecessors!
  br label %2099

2099:                                             ; preds = %2098
  br label %2100

2100:                                             ; preds = %2099, %2058
  br label %2101

2101:                                             ; preds = %2100
  br label %2102

2102:                                             ; preds = %2101
  br label %2103

2103:                                             ; preds = %2102
  %2104 = load ptr, ptr %10, align 8, !tbaa !5
  %2105 = getelementptr inbounds %struct.s2n_kem_group, ptr %2104, i32 0, i32 0
  %2106 = load ptr, ptr %2105, align 8, !tbaa !57
  %2107 = load ptr, ptr %15, align 8, !tbaa !5
  %2108 = call ptr @s2n_connection_get_kem_group_name(ptr noundef %2107)
  %2109 = load ptr, ptr %10, align 8, !tbaa !5
  %2110 = getelementptr inbounds %struct.s2n_kem_group, ptr %2109, i32 0, i32 0
  %2111 = load ptr, ptr %2110, align 8, !tbaa !57
  %2112 = call i64 @strlen(ptr noundef %2111) #7
  %2113 = call i32 @memcmp(ptr noundef %2106, ptr noundef %2108, i64 noundef %2112) #7
  %2114 = icmp eq i32 %2113, 0
  br i1 %2114, label %2148, label %2115

2115:                                             ; preds = %2103
  br label %2116

2116:                                             ; preds = %2115
  br label %2117

2117:                                             ; preds = %2116
  %2118 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2119 = getelementptr inbounds %struct.s2n_debug_info, ptr %2118, i32 0, i32 0
  store ptr @.str.77, ptr %2119, align 8, !tbaa !11
  %2120 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2121 = getelementptr inbounds %struct.s2n_debug_info, ptr %2120, i32 0, i32 0
  %2122 = load ptr, ptr %2121, align 8, !tbaa !11
  %2123 = getelementptr inbounds i8, ptr %2122, i64 21
  %2124 = call ptr @strrchr(ptr noundef %2123, i32 noundef 47) #7
  %2125 = icmp ne ptr %2124, null
  br i1 %2125, label %2126, label %2133

2126:                                             ; preds = %2117
  %2127 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2128 = getelementptr inbounds %struct.s2n_debug_info, ptr %2127, i32 0, i32 0
  %2129 = load ptr, ptr %2128, align 8, !tbaa !11
  %2130 = getelementptr inbounds i8, ptr %2129, i64 21
  %2131 = call ptr @strrchr(ptr noundef %2130, i32 noundef 47) #7
  %2132 = getelementptr inbounds i8, ptr %2131, i64 1
  br label %2138

2133:                                             ; preds = %2117
  %2134 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2135 = getelementptr inbounds %struct.s2n_debug_info, ptr %2134, i32 0, i32 0
  %2136 = load ptr, ptr %2135, align 8, !tbaa !11
  %2137 = getelementptr inbounds i8, ptr %2136, i64 21
  br label %2138

2138:                                             ; preds = %2133, %2126
  %2139 = phi ptr [ %2132, %2126 ], [ %2137, %2133 ]
  %2140 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2141 = getelementptr inbounds %struct.s2n_debug_info, ptr %2140, i32 0, i32 1
  store ptr %2139, ptr %2141, align 8, !tbaa !13
  %2142 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2142, align 4, !tbaa !14
  %2143 = call i32 @s2n_calculate_stacktrace()
  br label %2144

2144:                                             ; preds = %2138
  br label %2145

2145:                                             ; preds = %2144
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2146:                                             ; No predecessors!
  br label %2147

2147:                                             ; preds = %2146
  br label %2148

2148:                                             ; preds = %2147, %2103
  br label %2149

2149:                                             ; preds = %2148
  br label %2150

2150:                                             ; preds = %2149
  br label %2151

2151:                                             ; preds = %2150
  %2152 = load ptr, ptr %10, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.s2n_kem_group, ptr %2152, i32 0, i32 0
  %2154 = load ptr, ptr %2153, align 8, !tbaa !57
  %2155 = call i64 @strlen(ptr noundef %2154) #7
  %2156 = load ptr, ptr %14, align 8, !tbaa !5
  %2157 = call ptr @s2n_connection_get_kem_group_name(ptr noundef %2156)
  %2158 = call i64 @strlen(ptr noundef %2157) #7
  %2159 = icmp eq i64 %2155, %2158
  br i1 %2159, label %2193, label %2160

2160:                                             ; preds = %2151
  br label %2161

2161:                                             ; preds = %2160
  br label %2162

2162:                                             ; preds = %2161
  %2163 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2164 = getelementptr inbounds %struct.s2n_debug_info, ptr %2163, i32 0, i32 0
  store ptr @.str.78, ptr %2164, align 8, !tbaa !11
  %2165 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2166 = getelementptr inbounds %struct.s2n_debug_info, ptr %2165, i32 0, i32 0
  %2167 = load ptr, ptr %2166, align 8, !tbaa !11
  %2168 = getelementptr inbounds i8, ptr %2167, i64 21
  %2169 = call ptr @strrchr(ptr noundef %2168, i32 noundef 47) #7
  %2170 = icmp ne ptr %2169, null
  br i1 %2170, label %2171, label %2178

2171:                                             ; preds = %2162
  %2172 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2173 = getelementptr inbounds %struct.s2n_debug_info, ptr %2172, i32 0, i32 0
  %2174 = load ptr, ptr %2173, align 8, !tbaa !11
  %2175 = getelementptr inbounds i8, ptr %2174, i64 21
  %2176 = call ptr @strrchr(ptr noundef %2175, i32 noundef 47) #7
  %2177 = getelementptr inbounds i8, ptr %2176, i64 1
  br label %2183

2178:                                             ; preds = %2162
  %2179 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2180 = getelementptr inbounds %struct.s2n_debug_info, ptr %2179, i32 0, i32 0
  %2181 = load ptr, ptr %2180, align 8, !tbaa !11
  %2182 = getelementptr inbounds i8, ptr %2181, i64 21
  br label %2183

2183:                                             ; preds = %2178, %2171
  %2184 = phi ptr [ %2177, %2171 ], [ %2182, %2178 ]
  %2185 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2186 = getelementptr inbounds %struct.s2n_debug_info, ptr %2185, i32 0, i32 1
  store ptr %2184, ptr %2186, align 8, !tbaa !13
  %2187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2187, align 4, !tbaa !14
  %2188 = call i32 @s2n_calculate_stacktrace()
  br label %2189

2189:                                             ; preds = %2183
  br label %2190

2190:                                             ; preds = %2189
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2191:                                             ; No predecessors!
  br label %2192

2192:                                             ; preds = %2191
  br label %2193

2193:                                             ; preds = %2192, %2151
  br label %2194

2194:                                             ; preds = %2193
  br label %2195

2195:                                             ; preds = %2194
  br label %2196

2196:                                             ; preds = %2195
  %2197 = load ptr, ptr %10, align 8, !tbaa !5
  %2198 = getelementptr inbounds %struct.s2n_kem_group, ptr %2197, i32 0, i32 0
  %2199 = load ptr, ptr %2198, align 8, !tbaa !57
  %2200 = load ptr, ptr %14, align 8, !tbaa !5
  %2201 = call ptr @s2n_connection_get_kem_group_name(ptr noundef %2200)
  %2202 = load ptr, ptr %10, align 8, !tbaa !5
  %2203 = getelementptr inbounds %struct.s2n_kem_group, ptr %2202, i32 0, i32 0
  %2204 = load ptr, ptr %2203, align 8, !tbaa !57
  %2205 = call i64 @strlen(ptr noundef %2204) #7
  %2206 = call i32 @memcmp(ptr noundef %2199, ptr noundef %2201, i64 noundef %2205) #7
  %2207 = icmp eq i32 %2206, 0
  br i1 %2207, label %2241, label %2208

2208:                                             ; preds = %2196
  br label %2209

2209:                                             ; preds = %2208
  br label %2210

2210:                                             ; preds = %2209
  %2211 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2212 = getelementptr inbounds %struct.s2n_debug_info, ptr %2211, i32 0, i32 0
  store ptr @.str.79, ptr %2212, align 8, !tbaa !11
  %2213 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2214 = getelementptr inbounds %struct.s2n_debug_info, ptr %2213, i32 0, i32 0
  %2215 = load ptr, ptr %2214, align 8, !tbaa !11
  %2216 = getelementptr inbounds i8, ptr %2215, i64 21
  %2217 = call ptr @strrchr(ptr noundef %2216, i32 noundef 47) #7
  %2218 = icmp ne ptr %2217, null
  br i1 %2218, label %2219, label %2226

2219:                                             ; preds = %2210
  %2220 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2221 = getelementptr inbounds %struct.s2n_debug_info, ptr %2220, i32 0, i32 0
  %2222 = load ptr, ptr %2221, align 8, !tbaa !11
  %2223 = getelementptr inbounds i8, ptr %2222, i64 21
  %2224 = call ptr @strrchr(ptr noundef %2223, i32 noundef 47) #7
  %2225 = getelementptr inbounds i8, ptr %2224, i64 1
  br label %2231

2226:                                             ; preds = %2210
  %2227 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2228 = getelementptr inbounds %struct.s2n_debug_info, ptr %2227, i32 0, i32 0
  %2229 = load ptr, ptr %2228, align 8, !tbaa !11
  %2230 = getelementptr inbounds i8, ptr %2229, i64 21
  br label %2231

2231:                                             ; preds = %2226, %2219
  %2232 = phi ptr [ %2225, %2219 ], [ %2230, %2226 ]
  %2233 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2234 = getelementptr inbounds %struct.s2n_debug_info, ptr %2233, i32 0, i32 1
  store ptr %2232, ptr %2234, align 8, !tbaa !13
  %2235 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2235, align 4, !tbaa !14
  %2236 = call i32 @s2n_calculate_stacktrace()
  br label %2237

2237:                                             ; preds = %2231
  br label %2238

2238:                                             ; preds = %2237
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2239:                                             ; No predecessors!
  br label %2240

2240:                                             ; preds = %2239
  br label %2241

2241:                                             ; preds = %2240, %2196
  br label %2242

2242:                                             ; preds = %2241
  br label %2243

2243:                                             ; preds = %2242
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  store ptr null, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  store ptr null, ptr %25, align 8, !tbaa !5
  br label %2244

2244:                                             ; preds = %2243
  %2245 = load ptr, ptr %15, align 8, !tbaa !5
  %2246 = call i32 @s2n_connection_get_key_exchange_group(ptr noundef %2245, ptr noundef %24)
  %2247 = icmp sgt i32 %2246, -1
  br i1 %2247, label %2249, label %2248

2248:                                             ; preds = %2244
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %2442

2249:                                             ; preds = %2244
  br label %2250

2250:                                             ; preds = %2249
  br label %2251

2251:                                             ; preds = %2250
  br label %2252

2252:                                             ; preds = %2251
  %2253 = load ptr, ptr %14, align 8, !tbaa !5
  %2254 = call i32 @s2n_connection_get_key_exchange_group(ptr noundef %2253, ptr noundef %25)
  %2255 = icmp sgt i32 %2254, -1
  br i1 %2255, label %2257, label %2256

2256:                                             ; preds = %2252
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %2442

2257:                                             ; preds = %2252
  br label %2258

2258:                                             ; preds = %2257
  br label %2259

2259:                                             ; preds = %2258
  br label %2260

2260:                                             ; preds = %2259
  %2261 = load ptr, ptr %10, align 8, !tbaa !5
  %2262 = getelementptr inbounds %struct.s2n_kem_group, ptr %2261, i32 0, i32 0
  %2263 = load ptr, ptr %2262, align 8, !tbaa !57
  %2264 = call i64 @strlen(ptr noundef %2263) #7
  %2265 = load ptr, ptr %24, align 8, !tbaa !5
  %2266 = call i64 @strlen(ptr noundef %2265) #7
  %2267 = icmp eq i64 %2264, %2266
  br i1 %2267, label %2301, label %2268

2268:                                             ; preds = %2260
  br label %2269

2269:                                             ; preds = %2268
  br label %2270

2270:                                             ; preds = %2269
  %2271 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2272 = getelementptr inbounds %struct.s2n_debug_info, ptr %2271, i32 0, i32 0
  store ptr @.str.80, ptr %2272, align 8, !tbaa !11
  %2273 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2274 = getelementptr inbounds %struct.s2n_debug_info, ptr %2273, i32 0, i32 0
  %2275 = load ptr, ptr %2274, align 8, !tbaa !11
  %2276 = getelementptr inbounds i8, ptr %2275, i64 21
  %2277 = call ptr @strrchr(ptr noundef %2276, i32 noundef 47) #7
  %2278 = icmp ne ptr %2277, null
  br i1 %2278, label %2279, label %2286

2279:                                             ; preds = %2270
  %2280 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2281 = getelementptr inbounds %struct.s2n_debug_info, ptr %2280, i32 0, i32 0
  %2282 = load ptr, ptr %2281, align 8, !tbaa !11
  %2283 = getelementptr inbounds i8, ptr %2282, i64 21
  %2284 = call ptr @strrchr(ptr noundef %2283, i32 noundef 47) #7
  %2285 = getelementptr inbounds i8, ptr %2284, i64 1
  br label %2291

2286:                                             ; preds = %2270
  %2287 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2288 = getelementptr inbounds %struct.s2n_debug_info, ptr %2287, i32 0, i32 0
  %2289 = load ptr, ptr %2288, align 8, !tbaa !11
  %2290 = getelementptr inbounds i8, ptr %2289, i64 21
  br label %2291

2291:                                             ; preds = %2286, %2279
  %2292 = phi ptr [ %2285, %2279 ], [ %2290, %2286 ]
  %2293 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2294 = getelementptr inbounds %struct.s2n_debug_info, ptr %2293, i32 0, i32 1
  store ptr %2292, ptr %2294, align 8, !tbaa !13
  %2295 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2295, align 4, !tbaa !14
  %2296 = call i32 @s2n_calculate_stacktrace()
  br label %2297

2297:                                             ; preds = %2291
  br label %2298

2298:                                             ; preds = %2297
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %2442

2299:                                             ; No predecessors!
  br label %2300

2300:                                             ; preds = %2299
  br label %2301

2301:                                             ; preds = %2300, %2260
  br label %2302

2302:                                             ; preds = %2301
  br label %2303

2303:                                             ; preds = %2302
  br label %2304

2304:                                             ; preds = %2303
  %2305 = load ptr, ptr %10, align 8, !tbaa !5
  %2306 = getelementptr inbounds %struct.s2n_kem_group, ptr %2305, i32 0, i32 0
  %2307 = load ptr, ptr %2306, align 8, !tbaa !57
  %2308 = load ptr, ptr %24, align 8, !tbaa !5
  %2309 = load ptr, ptr %10, align 8, !tbaa !5
  %2310 = getelementptr inbounds %struct.s2n_kem_group, ptr %2309, i32 0, i32 0
  %2311 = load ptr, ptr %2310, align 8, !tbaa !57
  %2312 = call i64 @strlen(ptr noundef %2311) #7
  %2313 = call i32 @memcmp(ptr noundef %2307, ptr noundef %2308, i64 noundef %2312) #7
  %2314 = icmp eq i32 %2313, 0
  br i1 %2314, label %2348, label %2315

2315:                                             ; preds = %2304
  br label %2316

2316:                                             ; preds = %2315
  br label %2317

2317:                                             ; preds = %2316
  %2318 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2319 = getelementptr inbounds %struct.s2n_debug_info, ptr %2318, i32 0, i32 0
  store ptr @.str.81, ptr %2319, align 8, !tbaa !11
  %2320 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2321 = getelementptr inbounds %struct.s2n_debug_info, ptr %2320, i32 0, i32 0
  %2322 = load ptr, ptr %2321, align 8, !tbaa !11
  %2323 = getelementptr inbounds i8, ptr %2322, i64 21
  %2324 = call ptr @strrchr(ptr noundef %2323, i32 noundef 47) #7
  %2325 = icmp ne ptr %2324, null
  br i1 %2325, label %2326, label %2333

2326:                                             ; preds = %2317
  %2327 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2328 = getelementptr inbounds %struct.s2n_debug_info, ptr %2327, i32 0, i32 0
  %2329 = load ptr, ptr %2328, align 8, !tbaa !11
  %2330 = getelementptr inbounds i8, ptr %2329, i64 21
  %2331 = call ptr @strrchr(ptr noundef %2330, i32 noundef 47) #7
  %2332 = getelementptr inbounds i8, ptr %2331, i64 1
  br label %2338

2333:                                             ; preds = %2317
  %2334 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2335 = getelementptr inbounds %struct.s2n_debug_info, ptr %2334, i32 0, i32 0
  %2336 = load ptr, ptr %2335, align 8, !tbaa !11
  %2337 = getelementptr inbounds i8, ptr %2336, i64 21
  br label %2338

2338:                                             ; preds = %2333, %2326
  %2339 = phi ptr [ %2332, %2326 ], [ %2337, %2333 ]
  %2340 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2341 = getelementptr inbounds %struct.s2n_debug_info, ptr %2340, i32 0, i32 1
  store ptr %2339, ptr %2341, align 8, !tbaa !13
  %2342 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2342, align 4, !tbaa !14
  %2343 = call i32 @s2n_calculate_stacktrace()
  br label %2344

2344:                                             ; preds = %2338
  br label %2345

2345:                                             ; preds = %2344
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %2442

2346:                                             ; No predecessors!
  br label %2347

2347:                                             ; preds = %2346
  br label %2348

2348:                                             ; preds = %2347, %2304
  br label %2349

2349:                                             ; preds = %2348
  br label %2350

2350:                                             ; preds = %2349
  br label %2351

2351:                                             ; preds = %2350
  %2352 = load ptr, ptr %10, align 8, !tbaa !5
  %2353 = getelementptr inbounds %struct.s2n_kem_group, ptr %2352, i32 0, i32 0
  %2354 = load ptr, ptr %2353, align 8, !tbaa !57
  %2355 = call i64 @strlen(ptr noundef %2354) #7
  %2356 = load ptr, ptr %25, align 8, !tbaa !5
  %2357 = call i64 @strlen(ptr noundef %2356) #7
  %2358 = icmp eq i64 %2355, %2357
  br i1 %2358, label %2392, label %2359

2359:                                             ; preds = %2351
  br label %2360

2360:                                             ; preds = %2359
  br label %2361

2361:                                             ; preds = %2360
  %2362 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2363 = getelementptr inbounds %struct.s2n_debug_info, ptr %2362, i32 0, i32 0
  store ptr @.str.82, ptr %2363, align 8, !tbaa !11
  %2364 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2365 = getelementptr inbounds %struct.s2n_debug_info, ptr %2364, i32 0, i32 0
  %2366 = load ptr, ptr %2365, align 8, !tbaa !11
  %2367 = getelementptr inbounds i8, ptr %2366, i64 21
  %2368 = call ptr @strrchr(ptr noundef %2367, i32 noundef 47) #7
  %2369 = icmp ne ptr %2368, null
  br i1 %2369, label %2370, label %2377

2370:                                             ; preds = %2361
  %2371 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2372 = getelementptr inbounds %struct.s2n_debug_info, ptr %2371, i32 0, i32 0
  %2373 = load ptr, ptr %2372, align 8, !tbaa !11
  %2374 = getelementptr inbounds i8, ptr %2373, i64 21
  %2375 = call ptr @strrchr(ptr noundef %2374, i32 noundef 47) #7
  %2376 = getelementptr inbounds i8, ptr %2375, i64 1
  br label %2382

2377:                                             ; preds = %2361
  %2378 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2379 = getelementptr inbounds %struct.s2n_debug_info, ptr %2378, i32 0, i32 0
  %2380 = load ptr, ptr %2379, align 8, !tbaa !11
  %2381 = getelementptr inbounds i8, ptr %2380, i64 21
  br label %2382

2382:                                             ; preds = %2377, %2370
  %2383 = phi ptr [ %2376, %2370 ], [ %2381, %2377 ]
  %2384 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2385 = getelementptr inbounds %struct.s2n_debug_info, ptr %2384, i32 0, i32 1
  store ptr %2383, ptr %2385, align 8, !tbaa !13
  %2386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2386, align 4, !tbaa !14
  %2387 = call i32 @s2n_calculate_stacktrace()
  br label %2388

2388:                                             ; preds = %2382
  br label %2389

2389:                                             ; preds = %2388
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %2442

2390:                                             ; No predecessors!
  br label %2391

2391:                                             ; preds = %2390
  br label %2392

2392:                                             ; preds = %2391, %2351
  br label %2393

2393:                                             ; preds = %2392
  br label %2394

2394:                                             ; preds = %2393
  br label %2395

2395:                                             ; preds = %2394
  %2396 = load ptr, ptr %10, align 8, !tbaa !5
  %2397 = getelementptr inbounds %struct.s2n_kem_group, ptr %2396, i32 0, i32 0
  %2398 = load ptr, ptr %2397, align 8, !tbaa !57
  %2399 = load ptr, ptr %25, align 8, !tbaa !5
  %2400 = load ptr, ptr %10, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.s2n_kem_group, ptr %2400, i32 0, i32 0
  %2402 = load ptr, ptr %2401, align 8, !tbaa !57
  %2403 = call i64 @strlen(ptr noundef %2402) #7
  %2404 = call i32 @memcmp(ptr noundef %2398, ptr noundef %2399, i64 noundef %2403) #7
  %2405 = icmp eq i32 %2404, 0
  br i1 %2405, label %2439, label %2406

2406:                                             ; preds = %2395
  br label %2407

2407:                                             ; preds = %2406
  br label %2408

2408:                                             ; preds = %2407
  %2409 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2410 = getelementptr inbounds %struct.s2n_debug_info, ptr %2409, i32 0, i32 0
  store ptr @.str.83, ptr %2410, align 8, !tbaa !11
  %2411 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2412 = getelementptr inbounds %struct.s2n_debug_info, ptr %2411, i32 0, i32 0
  %2413 = load ptr, ptr %2412, align 8, !tbaa !11
  %2414 = getelementptr inbounds i8, ptr %2413, i64 21
  %2415 = call ptr @strrchr(ptr noundef %2414, i32 noundef 47) #7
  %2416 = icmp ne ptr %2415, null
  br i1 %2416, label %2417, label %2424

2417:                                             ; preds = %2408
  %2418 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2419 = getelementptr inbounds %struct.s2n_debug_info, ptr %2418, i32 0, i32 0
  %2420 = load ptr, ptr %2419, align 8, !tbaa !11
  %2421 = getelementptr inbounds i8, ptr %2420, i64 21
  %2422 = call ptr @strrchr(ptr noundef %2421, i32 noundef 47) #7
  %2423 = getelementptr inbounds i8, ptr %2422, i64 1
  br label %2429

2424:                                             ; preds = %2408
  %2425 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2426 = getelementptr inbounds %struct.s2n_debug_info, ptr %2425, i32 0, i32 0
  %2427 = load ptr, ptr %2426, align 8, !tbaa !11
  %2428 = getelementptr inbounds i8, ptr %2427, i64 21
  br label %2429

2429:                                             ; preds = %2424, %2417
  %2430 = phi ptr [ %2423, %2417 ], [ %2428, %2424 ]
  %2431 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2432 = getelementptr inbounds %struct.s2n_debug_info, ptr %2431, i32 0, i32 1
  store ptr %2430, ptr %2432, align 8, !tbaa !13
  %2433 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2433, align 4, !tbaa !14
  %2434 = call i32 @s2n_calculate_stacktrace()
  br label %2435

2435:                                             ; preds = %2429
  br label %2436

2436:                                             ; preds = %2435
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %2442

2437:                                             ; No predecessors!
  br label %2438

2438:                                             ; preds = %2437
  br label %2439

2439:                                             ; preds = %2438, %2395
  br label %2440

2440:                                             ; preds = %2439
  br label %2441

2441:                                             ; preds = %2440
  store i32 0, ptr %16, align 4
  br label %2442

2442:                                             ; preds = %2441, %2436, %2389, %2345, %2298, %2256, %2248
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  %2443 = load i32, ptr %16, align 4
  switch i32 %2443, label %4091 [
    i32 0, label %2444
  ]

2444:                                             ; preds = %2442
  br label %3183

2445:                                             ; preds = %1692
  br label %2446

2446:                                             ; preds = %2445
  %2447 = load ptr, ptr %14, align 8, !tbaa !5
  %2448 = getelementptr inbounds %struct.s2n_connection, ptr %2447, i32 0, i32 31
  %2449 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2448, i32 0, i32 4
  %2450 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2449, i32 0, i32 0
  %2451 = load ptr, ptr %2450, align 8, !tbaa !50
  %2452 = icmp eq ptr null, %2451
  br i1 %2452, label %2486, label %2453

2453:                                             ; preds = %2446
  br label %2454

2454:                                             ; preds = %2453
  br label %2455

2455:                                             ; preds = %2454
  %2456 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2457 = getelementptr inbounds %struct.s2n_debug_info, ptr %2456, i32 0, i32 0
  store ptr @.str.84, ptr %2457, align 8, !tbaa !11
  %2458 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2459 = getelementptr inbounds %struct.s2n_debug_info, ptr %2458, i32 0, i32 0
  %2460 = load ptr, ptr %2459, align 8, !tbaa !11
  %2461 = getelementptr inbounds i8, ptr %2460, i64 21
  %2462 = call ptr @strrchr(ptr noundef %2461, i32 noundef 47) #7
  %2463 = icmp ne ptr %2462, null
  br i1 %2463, label %2464, label %2471

2464:                                             ; preds = %2455
  %2465 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2466 = getelementptr inbounds %struct.s2n_debug_info, ptr %2465, i32 0, i32 0
  %2467 = load ptr, ptr %2466, align 8, !tbaa !11
  %2468 = getelementptr inbounds i8, ptr %2467, i64 21
  %2469 = call ptr @strrchr(ptr noundef %2468, i32 noundef 47) #7
  %2470 = getelementptr inbounds i8, ptr %2469, i64 1
  br label %2476

2471:                                             ; preds = %2455
  %2472 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2473 = getelementptr inbounds %struct.s2n_debug_info, ptr %2472, i32 0, i32 0
  %2474 = load ptr, ptr %2473, align 8, !tbaa !11
  %2475 = getelementptr inbounds i8, ptr %2474, i64 21
  br label %2476

2476:                                             ; preds = %2471, %2464
  %2477 = phi ptr [ %2470, %2464 ], [ %2475, %2471 ]
  %2478 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2479 = getelementptr inbounds %struct.s2n_debug_info, ptr %2478, i32 0, i32 1
  store ptr %2477, ptr %2479, align 8, !tbaa !13
  %2480 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2480, align 4, !tbaa !14
  %2481 = call i32 @s2n_calculate_stacktrace()
  br label %2482

2482:                                             ; preds = %2476
  br label %2483

2483:                                             ; preds = %2482
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2484:                                             ; No predecessors!
  br label %2485

2485:                                             ; preds = %2484
  br label %2486

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

2487:                                             ; preds = %2486
  br label %2488

2488:                                             ; preds = %2487
  br label %2489

2489:                                             ; preds = %2488
  %2490 = load ptr, ptr %14, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.s2n_connection, ptr %2490, i32 0, i32 31
  %2492 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2491, i32 0, i32 4
  %2493 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2492, i32 0, i32 1
  %2494 = getelementptr inbounds %struct.s2n_kem_params, ptr %2493, i32 0, i32 0
  %2495 = load ptr, ptr %2494, align 8, !tbaa !53
  %2496 = icmp eq ptr null, %2495
  br i1 %2496, label %2530, label %2497

2497:                                             ; preds = %2489
  br label %2498

2498:                                             ; preds = %2497
  br label %2499

2499:                                             ; preds = %2498
  %2500 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2501 = getelementptr inbounds %struct.s2n_debug_info, ptr %2500, i32 0, i32 0
  store ptr @.str.85, ptr %2501, align 8, !tbaa !11
  %2502 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2503 = getelementptr inbounds %struct.s2n_debug_info, ptr %2502, i32 0, i32 0
  %2504 = load ptr, ptr %2503, align 8, !tbaa !11
  %2505 = getelementptr inbounds i8, ptr %2504, i64 21
  %2506 = call ptr @strrchr(ptr noundef %2505, i32 noundef 47) #7
  %2507 = icmp ne ptr %2506, null
  br i1 %2507, label %2508, label %2515

2508:                                             ; preds = %2499
  %2509 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2510 = getelementptr inbounds %struct.s2n_debug_info, ptr %2509, i32 0, i32 0
  %2511 = load ptr, ptr %2510, align 8, !tbaa !11
  %2512 = getelementptr inbounds i8, ptr %2511, i64 21
  %2513 = call ptr @strrchr(ptr noundef %2512, i32 noundef 47) #7
  %2514 = getelementptr inbounds i8, ptr %2513, i64 1
  br label %2520

2515:                                             ; preds = %2499
  %2516 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2517 = getelementptr inbounds %struct.s2n_debug_info, ptr %2516, i32 0, i32 0
  %2518 = load ptr, ptr %2517, align 8, !tbaa !11
  %2519 = getelementptr inbounds i8, ptr %2518, i64 21
  br label %2520

2520:                                             ; preds = %2515, %2508
  %2521 = phi ptr [ %2514, %2508 ], [ %2519, %2515 ]
  %2522 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2523 = getelementptr inbounds %struct.s2n_debug_info, ptr %2522, i32 0, i32 1
  store ptr %2521, ptr %2523, align 8, !tbaa !13
  %2524 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2524, align 4, !tbaa !14
  %2525 = call i32 @s2n_calculate_stacktrace()
  br label %2526

2526:                                             ; preds = %2520
  br label %2527

2527:                                             ; preds = %2526
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2528:                                             ; No predecessors!
  br label %2529

2529:                                             ; preds = %2528
  br label %2530

2530:                                             ; preds = %2529, %2489
  br label %2531

2531:                                             ; preds = %2530
  br label %2532

2532:                                             ; preds = %2531
  br label %2533

2533:                                             ; preds = %2532
  %2534 = load ptr, ptr %14, align 8, !tbaa !5
  %2535 = getelementptr inbounds %struct.s2n_connection, ptr %2534, i32 0, i32 31
  %2536 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2535, i32 0, i32 4
  %2537 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2536, i32 0, i32 2
  %2538 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2537, i32 0, i32 0
  %2539 = load ptr, ptr %2538, align 8, !tbaa !55
  %2540 = icmp eq ptr null, %2539
  br i1 %2540, label %2574, label %2541

2541:                                             ; preds = %2533
  br label %2542

2542:                                             ; preds = %2541
  br label %2543

2543:                                             ; preds = %2542
  %2544 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2545 = getelementptr inbounds %struct.s2n_debug_info, ptr %2544, i32 0, i32 0
  store ptr @.str.86, ptr %2545, align 8, !tbaa !11
  %2546 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2547 = getelementptr inbounds %struct.s2n_debug_info, ptr %2546, i32 0, i32 0
  %2548 = load ptr, ptr %2547, align 8, !tbaa !11
  %2549 = getelementptr inbounds i8, ptr %2548, i64 21
  %2550 = call ptr @strrchr(ptr noundef %2549, i32 noundef 47) #7
  %2551 = icmp ne ptr %2550, null
  br i1 %2551, label %2552, label %2559

2552:                                             ; preds = %2543
  %2553 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2554 = getelementptr inbounds %struct.s2n_debug_info, ptr %2553, i32 0, i32 0
  %2555 = load ptr, ptr %2554, align 8, !tbaa !11
  %2556 = getelementptr inbounds i8, ptr %2555, i64 21
  %2557 = call ptr @strrchr(ptr noundef %2556, i32 noundef 47) #7
  %2558 = getelementptr inbounds i8, ptr %2557, i64 1
  br label %2564

2559:                                             ; preds = %2543
  %2560 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2561 = getelementptr inbounds %struct.s2n_debug_info, ptr %2560, i32 0, i32 0
  %2562 = load ptr, ptr %2561, align 8, !tbaa !11
  %2563 = getelementptr inbounds i8, ptr %2562, i64 21
  br label %2564

2564:                                             ; preds = %2559, %2552
  %2565 = phi ptr [ %2558, %2552 ], [ %2563, %2559 ]
  %2566 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2567 = getelementptr inbounds %struct.s2n_debug_info, ptr %2566, i32 0, i32 1
  store ptr %2565, ptr %2567, align 8, !tbaa !13
  %2568 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2568, align 4, !tbaa !14
  %2569 = call i32 @s2n_calculate_stacktrace()
  br label %2570

2570:                                             ; preds = %2564
  br label %2571

2571:                                             ; preds = %2570
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2572:                                             ; No predecessors!
  br label %2573

2573:                                             ; preds = %2572
  br label %2574

2574:                                             ; preds = %2573, %2533
  br label %2575

2575:                                             ; preds = %2574
  br label %2576

2576:                                             ; preds = %2575
  br label %2577

2577:                                             ; preds = %2576
  %2578 = load ptr, ptr %11, align 8, !tbaa !5
  %2579 = load ptr, ptr %14, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.s2n_connection, ptr %2579, i32 0, i32 31
  %2581 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2580, i32 0, i32 1
  %2582 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2581, i32 0, i32 0
  %2583 = load ptr, ptr %2582, align 8, !tbaa !56
  %2584 = icmp eq ptr %2578, %2583
  br i1 %2584, label %2618, label %2585

2585:                                             ; preds = %2577
  br label %2586

2586:                                             ; preds = %2585
  br label %2587

2587:                                             ; preds = %2586
  %2588 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2589 = getelementptr inbounds %struct.s2n_debug_info, ptr %2588, i32 0, i32 0
  store ptr @.str.87, ptr %2589, align 8, !tbaa !11
  %2590 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2591 = getelementptr inbounds %struct.s2n_debug_info, ptr %2590, i32 0, i32 0
  %2592 = load ptr, ptr %2591, align 8, !tbaa !11
  %2593 = getelementptr inbounds i8, ptr %2592, i64 21
  %2594 = call ptr @strrchr(ptr noundef %2593, i32 noundef 47) #7
  %2595 = icmp ne ptr %2594, null
  br i1 %2595, label %2596, label %2603

2596:                                             ; preds = %2587
  %2597 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2598 = getelementptr inbounds %struct.s2n_debug_info, ptr %2597, i32 0, i32 0
  %2599 = load ptr, ptr %2598, align 8, !tbaa !11
  %2600 = getelementptr inbounds i8, ptr %2599, i64 21
  %2601 = call ptr @strrchr(ptr noundef %2600, i32 noundef 47) #7
  %2602 = getelementptr inbounds i8, ptr %2601, i64 1
  br label %2608

2603:                                             ; preds = %2587
  %2604 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2605 = getelementptr inbounds %struct.s2n_debug_info, ptr %2604, i32 0, i32 0
  %2606 = load ptr, ptr %2605, align 8, !tbaa !11
  %2607 = getelementptr inbounds i8, ptr %2606, i64 21
  br label %2608

2608:                                             ; preds = %2603, %2596
  %2609 = phi ptr [ %2602, %2596 ], [ %2607, %2603 ]
  %2610 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2611 = getelementptr inbounds %struct.s2n_debug_info, ptr %2610, i32 0, i32 1
  store ptr %2609, ptr %2611, align 8, !tbaa !13
  %2612 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2612, align 4, !tbaa !14
  %2613 = call i32 @s2n_calculate_stacktrace()
  br label %2614

2614:                                             ; preds = %2608
  br label %2615

2615:                                             ; preds = %2614
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2616:                                             ; No predecessors!
  br label %2617

2617:                                             ; preds = %2616
  br label %2618

2618:                                             ; preds = %2617, %2577
  br label %2619

2619:                                             ; preds = %2618
  br label %2620

2620:                                             ; preds = %2619
  br label %2621

2621:                                             ; preds = %2620
  %2622 = load ptr, ptr %15, align 8, !tbaa !5
  %2623 = getelementptr inbounds %struct.s2n_connection, ptr %2622, i32 0, i32 31
  %2624 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2623, i32 0, i32 4
  %2625 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2624, i32 0, i32 0
  %2626 = load ptr, ptr %2625, align 8, !tbaa !50
  %2627 = icmp eq ptr null, %2626
  br i1 %2627, label %2661, label %2628

2628:                                             ; preds = %2621
  br label %2629

2629:                                             ; preds = %2628
  br label %2630

2630:                                             ; preds = %2629
  %2631 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2632 = getelementptr inbounds %struct.s2n_debug_info, ptr %2631, i32 0, i32 0
  store ptr @.str.88, ptr %2632, align 8, !tbaa !11
  %2633 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2634 = getelementptr inbounds %struct.s2n_debug_info, ptr %2633, i32 0, i32 0
  %2635 = load ptr, ptr %2634, align 8, !tbaa !11
  %2636 = getelementptr inbounds i8, ptr %2635, i64 21
  %2637 = call ptr @strrchr(ptr noundef %2636, i32 noundef 47) #7
  %2638 = icmp ne ptr %2637, null
  br i1 %2638, label %2639, label %2646

2639:                                             ; preds = %2630
  %2640 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2641 = getelementptr inbounds %struct.s2n_debug_info, ptr %2640, i32 0, i32 0
  %2642 = load ptr, ptr %2641, align 8, !tbaa !11
  %2643 = getelementptr inbounds i8, ptr %2642, i64 21
  %2644 = call ptr @strrchr(ptr noundef %2643, i32 noundef 47) #7
  %2645 = getelementptr inbounds i8, ptr %2644, i64 1
  br label %2651

2646:                                             ; preds = %2630
  %2647 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2648 = getelementptr inbounds %struct.s2n_debug_info, ptr %2647, i32 0, i32 0
  %2649 = load ptr, ptr %2648, align 8, !tbaa !11
  %2650 = getelementptr inbounds i8, ptr %2649, i64 21
  br label %2651

2651:                                             ; preds = %2646, %2639
  %2652 = phi ptr [ %2645, %2639 ], [ %2650, %2646 ]
  %2653 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2654 = getelementptr inbounds %struct.s2n_debug_info, ptr %2653, i32 0, i32 1
  store ptr %2652, ptr %2654, align 8, !tbaa !13
  %2655 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2655, align 4, !tbaa !14
  %2656 = call i32 @s2n_calculate_stacktrace()
  br label %2657

2657:                                             ; preds = %2651
  br label %2658

2658:                                             ; preds = %2657
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2659:                                             ; No predecessors!
  br label %2660

2660:                                             ; preds = %2659
  br label %2661

2661:                                             ; preds = %2660, %2621
  br label %2662

2662:                                             ; preds = %2661
  br label %2663

2663:                                             ; preds = %2662
  br label %2664

2664:                                             ; preds = %2663
  %2665 = load ptr, ptr %15, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.s2n_connection, ptr %2665, i32 0, i32 31
  %2667 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2666, i32 0, i32 4
  %2668 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2667, i32 0, i32 1
  %2669 = getelementptr inbounds %struct.s2n_kem_params, ptr %2668, i32 0, i32 0
  %2670 = load ptr, ptr %2669, align 8, !tbaa !53
  %2671 = icmp eq ptr null, %2670
  br i1 %2671, label %2705, label %2672

2672:                                             ; preds = %2664
  br label %2673

2673:                                             ; preds = %2672
  br label %2674

2674:                                             ; preds = %2673
  %2675 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2676 = getelementptr inbounds %struct.s2n_debug_info, ptr %2675, i32 0, i32 0
  store ptr @.str.89, ptr %2676, align 8, !tbaa !11
  %2677 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2678 = getelementptr inbounds %struct.s2n_debug_info, ptr %2677, i32 0, i32 0
  %2679 = load ptr, ptr %2678, align 8, !tbaa !11
  %2680 = getelementptr inbounds i8, ptr %2679, i64 21
  %2681 = call ptr @strrchr(ptr noundef %2680, i32 noundef 47) #7
  %2682 = icmp ne ptr %2681, null
  br i1 %2682, label %2683, label %2690

2683:                                             ; preds = %2674
  %2684 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2685 = getelementptr inbounds %struct.s2n_debug_info, ptr %2684, i32 0, i32 0
  %2686 = load ptr, ptr %2685, align 8, !tbaa !11
  %2687 = getelementptr inbounds i8, ptr %2686, i64 21
  %2688 = call ptr @strrchr(ptr noundef %2687, i32 noundef 47) #7
  %2689 = getelementptr inbounds i8, ptr %2688, i64 1
  br label %2695

2690:                                             ; preds = %2674
  %2691 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2692 = getelementptr inbounds %struct.s2n_debug_info, ptr %2691, i32 0, i32 0
  %2693 = load ptr, ptr %2692, align 8, !tbaa !11
  %2694 = getelementptr inbounds i8, ptr %2693, i64 21
  br label %2695

2695:                                             ; preds = %2690, %2683
  %2696 = phi ptr [ %2689, %2683 ], [ %2694, %2690 ]
  %2697 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2698 = getelementptr inbounds %struct.s2n_debug_info, ptr %2697, i32 0, i32 1
  store ptr %2696, ptr %2698, align 8, !tbaa !13
  %2699 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2699, align 4, !tbaa !14
  %2700 = call i32 @s2n_calculate_stacktrace()
  br label %2701

2701:                                             ; preds = %2695
  br label %2702

2702:                                             ; preds = %2701
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2703:                                             ; No predecessors!
  br label %2704

2704:                                             ; preds = %2703
  br label %2705

2705:                                             ; preds = %2704, %2664
  br label %2706

2706:                                             ; preds = %2705
  br label %2707

2707:                                             ; preds = %2706
  br label %2708

2708:                                             ; preds = %2707
  %2709 = load ptr, ptr %15, align 8, !tbaa !5
  %2710 = getelementptr inbounds %struct.s2n_connection, ptr %2709, i32 0, i32 31
  %2711 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2710, i32 0, i32 4
  %2712 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2711, i32 0, i32 2
  %2713 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2712, i32 0, i32 0
  %2714 = load ptr, ptr %2713, align 8, !tbaa !55
  %2715 = icmp eq ptr null, %2714
  br i1 %2715, label %2749, label %2716

2716:                                             ; preds = %2708
  br label %2717

2717:                                             ; preds = %2716
  br label %2718

2718:                                             ; preds = %2717
  %2719 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2720 = getelementptr inbounds %struct.s2n_debug_info, ptr %2719, i32 0, i32 0
  store ptr @.str.90, ptr %2720, align 8, !tbaa !11
  %2721 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2722 = getelementptr inbounds %struct.s2n_debug_info, ptr %2721, i32 0, i32 0
  %2723 = load ptr, ptr %2722, align 8, !tbaa !11
  %2724 = getelementptr inbounds i8, ptr %2723, i64 21
  %2725 = call ptr @strrchr(ptr noundef %2724, i32 noundef 47) #7
  %2726 = icmp ne ptr %2725, null
  br i1 %2726, label %2727, label %2734

2727:                                             ; preds = %2718
  %2728 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2729 = getelementptr inbounds %struct.s2n_debug_info, ptr %2728, i32 0, i32 0
  %2730 = load ptr, ptr %2729, align 8, !tbaa !11
  %2731 = getelementptr inbounds i8, ptr %2730, i64 21
  %2732 = call ptr @strrchr(ptr noundef %2731, i32 noundef 47) #7
  %2733 = getelementptr inbounds i8, ptr %2732, i64 1
  br label %2739

2734:                                             ; preds = %2718
  %2735 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2736 = getelementptr inbounds %struct.s2n_debug_info, ptr %2735, i32 0, i32 0
  %2737 = load ptr, ptr %2736, align 8, !tbaa !11
  %2738 = getelementptr inbounds i8, ptr %2737, i64 21
  br label %2739

2739:                                             ; preds = %2734, %2727
  %2740 = phi ptr [ %2733, %2727 ], [ %2738, %2734 ]
  %2741 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2742 = getelementptr inbounds %struct.s2n_debug_info, ptr %2741, i32 0, i32 1
  store ptr %2740, ptr %2742, align 8, !tbaa !13
  %2743 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2743, align 4, !tbaa !14
  %2744 = call i32 @s2n_calculate_stacktrace()
  br label %2745

2745:                                             ; preds = %2739
  br label %2746

2746:                                             ; preds = %2745
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2747:                                             ; No predecessors!
  br label %2748

2748:                                             ; preds = %2747
  br label %2749

2749:                                             ; preds = %2748, %2708
  br label %2750

2750:                                             ; preds = %2749
  br label %2751

2751:                                             ; preds = %2750
  br label %2752

2752:                                             ; preds = %2751
  %2753 = load ptr, ptr %11, align 8, !tbaa !5
  %2754 = load ptr, ptr %15, align 8, !tbaa !5
  %2755 = getelementptr inbounds %struct.s2n_connection, ptr %2754, i32 0, i32 31
  %2756 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2755, i32 0, i32 1
  %2757 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2756, i32 0, i32 0
  %2758 = load ptr, ptr %2757, align 8, !tbaa !56
  %2759 = icmp eq ptr %2753, %2758
  br i1 %2759, label %2793, label %2760

2760:                                             ; preds = %2752
  br label %2761

2761:                                             ; preds = %2760
  br label %2762

2762:                                             ; preds = %2761
  %2763 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2764 = getelementptr inbounds %struct.s2n_debug_info, ptr %2763, i32 0, i32 0
  store ptr @.str.91, ptr %2764, align 8, !tbaa !11
  %2765 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2766 = getelementptr inbounds %struct.s2n_debug_info, ptr %2765, i32 0, i32 0
  %2767 = load ptr, ptr %2766, align 8, !tbaa !11
  %2768 = getelementptr inbounds i8, ptr %2767, i64 21
  %2769 = call ptr @strrchr(ptr noundef %2768, i32 noundef 47) #7
  %2770 = icmp ne ptr %2769, null
  br i1 %2770, label %2771, label %2778

2771:                                             ; preds = %2762
  %2772 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2773 = getelementptr inbounds %struct.s2n_debug_info, ptr %2772, i32 0, i32 0
  %2774 = load ptr, ptr %2773, align 8, !tbaa !11
  %2775 = getelementptr inbounds i8, ptr %2774, i64 21
  %2776 = call ptr @strrchr(ptr noundef %2775, i32 noundef 47) #7
  %2777 = getelementptr inbounds i8, ptr %2776, i64 1
  br label %2783

2778:                                             ; preds = %2762
  %2779 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2780 = getelementptr inbounds %struct.s2n_debug_info, ptr %2779, i32 0, i32 0
  %2781 = load ptr, ptr %2780, align 8, !tbaa !11
  %2782 = getelementptr inbounds i8, ptr %2781, i64 21
  br label %2783

2783:                                             ; preds = %2778, %2771
  %2784 = phi ptr [ %2777, %2771 ], [ %2782, %2778 ]
  %2785 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2786 = getelementptr inbounds %struct.s2n_debug_info, ptr %2785, i32 0, i32 1
  store ptr %2784, ptr %2786, align 8, !tbaa !13
  %2787 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2787, align 4, !tbaa !14
  %2788 = call i32 @s2n_calculate_stacktrace()
  br label %2789

2789:                                             ; preds = %2783
  br label %2790

2790:                                             ; preds = %2789
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2791:                                             ; No predecessors!
  br label %2792

2792:                                             ; preds = %2791
  br label %2793

2793:                                             ; preds = %2792, %2752
  br label %2794

2794:                                             ; preds = %2793
  br label %2795

2795:                                             ; preds = %2794
  br label %2796

2796:                                             ; preds = %2795
  %2797 = load ptr, ptr %11, align 8, !tbaa !5
  %2798 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %2797, i32 0, i32 2
  %2799 = load ptr, ptr %2798, align 8, !tbaa !58
  %2800 = call i64 @strlen(ptr noundef %2799) #7
  %2801 = load ptr, ptr %15, align 8, !tbaa !5
  %2802 = call ptr @s2n_connection_get_curve(ptr noundef %2801)
  %2803 = call i64 @strlen(ptr noundef %2802) #7
  %2804 = icmp eq i64 %2800, %2803
  br i1 %2804, label %2838, label %2805

2805:                                             ; preds = %2796
  br label %2806

2806:                                             ; preds = %2805
  br label %2807

2807:                                             ; preds = %2806
  %2808 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2809 = getelementptr inbounds %struct.s2n_debug_info, ptr %2808, i32 0, i32 0
  store ptr @.str.92, ptr %2809, align 8, !tbaa !11
  %2810 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2811 = getelementptr inbounds %struct.s2n_debug_info, ptr %2810, i32 0, i32 0
  %2812 = load ptr, ptr %2811, align 8, !tbaa !11
  %2813 = getelementptr inbounds i8, ptr %2812, i64 21
  %2814 = call ptr @strrchr(ptr noundef %2813, i32 noundef 47) #7
  %2815 = icmp ne ptr %2814, null
  br i1 %2815, label %2816, label %2823

2816:                                             ; preds = %2807
  %2817 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2818 = getelementptr inbounds %struct.s2n_debug_info, ptr %2817, i32 0, i32 0
  %2819 = load ptr, ptr %2818, align 8, !tbaa !11
  %2820 = getelementptr inbounds i8, ptr %2819, i64 21
  %2821 = call ptr @strrchr(ptr noundef %2820, i32 noundef 47) #7
  %2822 = getelementptr inbounds i8, ptr %2821, i64 1
  br label %2828

2823:                                             ; preds = %2807
  %2824 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2825 = getelementptr inbounds %struct.s2n_debug_info, ptr %2824, i32 0, i32 0
  %2826 = load ptr, ptr %2825, align 8, !tbaa !11
  %2827 = getelementptr inbounds i8, ptr %2826, i64 21
  br label %2828

2828:                                             ; preds = %2823, %2816
  %2829 = phi ptr [ %2822, %2816 ], [ %2827, %2823 ]
  %2830 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2831 = getelementptr inbounds %struct.s2n_debug_info, ptr %2830, i32 0, i32 1
  store ptr %2829, ptr %2831, align 8, !tbaa !13
  %2832 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2832, align 4, !tbaa !14
  %2833 = call i32 @s2n_calculate_stacktrace()
  br label %2834

2834:                                             ; preds = %2828
  br label %2835

2835:                                             ; preds = %2834
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2836:                                             ; No predecessors!
  br label %2837

2837:                                             ; preds = %2836
  br label %2838

2838:                                             ; preds = %2837, %2796
  br label %2839

2839:                                             ; preds = %2838
  br label %2840

2840:                                             ; preds = %2839
  br label %2841

2841:                                             ; preds = %2840
  %2842 = load ptr, ptr %11, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %2842, i32 0, i32 2
  %2844 = load ptr, ptr %2843, align 8, !tbaa !58
  %2845 = load ptr, ptr %15, align 8, !tbaa !5
  %2846 = call ptr @s2n_connection_get_curve(ptr noundef %2845)
  %2847 = load ptr, ptr %11, align 8, !tbaa !5
  %2848 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %2847, i32 0, i32 2
  %2849 = load ptr, ptr %2848, align 8, !tbaa !58
  %2850 = call i64 @strlen(ptr noundef %2849) #7
  %2851 = call i32 @memcmp(ptr noundef %2844, ptr noundef %2846, i64 noundef %2850) #7
  %2852 = icmp eq i32 %2851, 0
  br i1 %2852, label %2886, label %2853

2853:                                             ; preds = %2841
  br label %2854

2854:                                             ; preds = %2853
  br label %2855

2855:                                             ; preds = %2854
  %2856 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2857 = getelementptr inbounds %struct.s2n_debug_info, ptr %2856, i32 0, i32 0
  store ptr @.str.93, ptr %2857, align 8, !tbaa !11
  %2858 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2859 = getelementptr inbounds %struct.s2n_debug_info, ptr %2858, i32 0, i32 0
  %2860 = load ptr, ptr %2859, align 8, !tbaa !11
  %2861 = getelementptr inbounds i8, ptr %2860, i64 21
  %2862 = call ptr @strrchr(ptr noundef %2861, i32 noundef 47) #7
  %2863 = icmp ne ptr %2862, null
  br i1 %2863, label %2864, label %2871

2864:                                             ; preds = %2855
  %2865 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2866 = getelementptr inbounds %struct.s2n_debug_info, ptr %2865, i32 0, i32 0
  %2867 = load ptr, ptr %2866, align 8, !tbaa !11
  %2868 = getelementptr inbounds i8, ptr %2867, i64 21
  %2869 = call ptr @strrchr(ptr noundef %2868, i32 noundef 47) #7
  %2870 = getelementptr inbounds i8, ptr %2869, i64 1
  br label %2876

2871:                                             ; preds = %2855
  %2872 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2873 = getelementptr inbounds %struct.s2n_debug_info, ptr %2872, i32 0, i32 0
  %2874 = load ptr, ptr %2873, align 8, !tbaa !11
  %2875 = getelementptr inbounds i8, ptr %2874, i64 21
  br label %2876

2876:                                             ; preds = %2871, %2864
  %2877 = phi ptr [ %2870, %2864 ], [ %2875, %2871 ]
  %2878 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2879 = getelementptr inbounds %struct.s2n_debug_info, ptr %2878, i32 0, i32 1
  store ptr %2877, ptr %2879, align 8, !tbaa !13
  %2880 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2880, align 4, !tbaa !14
  %2881 = call i32 @s2n_calculate_stacktrace()
  br label %2882

2882:                                             ; preds = %2876
  br label %2883

2883:                                             ; preds = %2882
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2884:                                             ; No predecessors!
  br label %2885

2885:                                             ; preds = %2884
  br label %2886

2886:                                             ; preds = %2885, %2841
  br label %2887

2887:                                             ; preds = %2886
  br label %2888

2888:                                             ; preds = %2887
  br label %2889

2889:                                             ; preds = %2888
  %2890 = load ptr, ptr %11, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %2890, i32 0, i32 2
  %2892 = load ptr, ptr %2891, align 8, !tbaa !58
  %2893 = call i64 @strlen(ptr noundef %2892) #7
  %2894 = load ptr, ptr %14, align 8, !tbaa !5
  %2895 = call ptr @s2n_connection_get_curve(ptr noundef %2894)
  %2896 = call i64 @strlen(ptr noundef %2895) #7
  %2897 = icmp eq i64 %2893, %2896
  br i1 %2897, label %2931, label %2898

2898:                                             ; preds = %2889
  br label %2899

2899:                                             ; preds = %2898
  br label %2900

2900:                                             ; preds = %2899
  %2901 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2902 = getelementptr inbounds %struct.s2n_debug_info, ptr %2901, i32 0, i32 0
  store ptr @.str.94, ptr %2902, align 8, !tbaa !11
  %2903 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2904 = getelementptr inbounds %struct.s2n_debug_info, ptr %2903, i32 0, i32 0
  %2905 = load ptr, ptr %2904, align 8, !tbaa !11
  %2906 = getelementptr inbounds i8, ptr %2905, i64 21
  %2907 = call ptr @strrchr(ptr noundef %2906, i32 noundef 47) #7
  %2908 = icmp ne ptr %2907, null
  br i1 %2908, label %2909, label %2916

2909:                                             ; preds = %2900
  %2910 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2911 = getelementptr inbounds %struct.s2n_debug_info, ptr %2910, i32 0, i32 0
  %2912 = load ptr, ptr %2911, align 8, !tbaa !11
  %2913 = getelementptr inbounds i8, ptr %2912, i64 21
  %2914 = call ptr @strrchr(ptr noundef %2913, i32 noundef 47) #7
  %2915 = getelementptr inbounds i8, ptr %2914, i64 1
  br label %2921

2916:                                             ; preds = %2900
  %2917 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2918 = getelementptr inbounds %struct.s2n_debug_info, ptr %2917, i32 0, i32 0
  %2919 = load ptr, ptr %2918, align 8, !tbaa !11
  %2920 = getelementptr inbounds i8, ptr %2919, i64 21
  br label %2921

2921:                                             ; preds = %2916, %2909
  %2922 = phi ptr [ %2915, %2909 ], [ %2920, %2916 ]
  %2923 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2924 = getelementptr inbounds %struct.s2n_debug_info, ptr %2923, i32 0, i32 1
  store ptr %2922, ptr %2924, align 8, !tbaa !13
  %2925 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2925, align 4, !tbaa !14
  %2926 = call i32 @s2n_calculate_stacktrace()
  br label %2927

2927:                                             ; preds = %2921
  br label %2928

2928:                                             ; preds = %2927
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2929:                                             ; No predecessors!
  br label %2930

2930:                                             ; preds = %2929
  br label %2931

2931:                                             ; preds = %2930, %2889
  br label %2932

2932:                                             ; preds = %2931
  br label %2933

2933:                                             ; preds = %2932
  br label %2934

2934:                                             ; preds = %2933
  %2935 = load ptr, ptr %11, align 8, !tbaa !5
  %2936 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %2935, i32 0, i32 2
  %2937 = load ptr, ptr %2936, align 8, !tbaa !58
  %2938 = load ptr, ptr %14, align 8, !tbaa !5
  %2939 = call ptr @s2n_connection_get_curve(ptr noundef %2938)
  %2940 = load ptr, ptr %11, align 8, !tbaa !5
  %2941 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %2940, i32 0, i32 2
  %2942 = load ptr, ptr %2941, align 8, !tbaa !58
  %2943 = call i64 @strlen(ptr noundef %2942) #7
  %2944 = call i32 @memcmp(ptr noundef %2937, ptr noundef %2939, i64 noundef %2943) #7
  %2945 = icmp eq i32 %2944, 0
  br i1 %2945, label %2979, label %2946

2946:                                             ; preds = %2934
  br label %2947

2947:                                             ; preds = %2946
  br label %2948

2948:                                             ; preds = %2947
  %2949 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2950 = getelementptr inbounds %struct.s2n_debug_info, ptr %2949, i32 0, i32 0
  store ptr @.str.95, ptr %2950, align 8, !tbaa !11
  %2951 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2952 = getelementptr inbounds %struct.s2n_debug_info, ptr %2951, i32 0, i32 0
  %2953 = load ptr, ptr %2952, align 8, !tbaa !11
  %2954 = getelementptr inbounds i8, ptr %2953, i64 21
  %2955 = call ptr @strrchr(ptr noundef %2954, i32 noundef 47) #7
  %2956 = icmp ne ptr %2955, null
  br i1 %2956, label %2957, label %2964

2957:                                             ; preds = %2948
  %2958 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2959 = getelementptr inbounds %struct.s2n_debug_info, ptr %2958, i32 0, i32 0
  %2960 = load ptr, ptr %2959, align 8, !tbaa !11
  %2961 = getelementptr inbounds i8, ptr %2960, i64 21
  %2962 = call ptr @strrchr(ptr noundef %2961, i32 noundef 47) #7
  %2963 = getelementptr inbounds i8, ptr %2962, i64 1
  br label %2969

2964:                                             ; preds = %2948
  %2965 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2966 = getelementptr inbounds %struct.s2n_debug_info, ptr %2965, i32 0, i32 0
  %2967 = load ptr, ptr %2966, align 8, !tbaa !11
  %2968 = getelementptr inbounds i8, ptr %2967, i64 21
  br label %2969

2969:                                             ; preds = %2964, %2957
  %2970 = phi ptr [ %2963, %2957 ], [ %2968, %2964 ]
  %2971 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %2972 = getelementptr inbounds %struct.s2n_debug_info, ptr %2971, i32 0, i32 1
  store ptr %2970, ptr %2972, align 8, !tbaa !13
  %2973 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %2973, align 4, !tbaa !14
  %2974 = call i32 @s2n_calculate_stacktrace()
  br label %2975

2975:                                             ; preds = %2969
  br label %2976

2976:                                             ; preds = %2975
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4091

2977:                                             ; No predecessors!
  br label %2978

2978:                                             ; preds = %2977
  br label %2979

2979:                                             ; preds = %2978, %2934
  br label %2980

2980:                                             ; preds = %2979
  br label %2981

2981:                                             ; preds = %2980
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  store ptr null, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  store ptr null, ptr %27, align 8, !tbaa !5
  br label %2982

2982:                                             ; preds = %2981
  %2983 = load ptr, ptr %15, align 8, !tbaa !5
  %2984 = call i32 @s2n_connection_get_key_exchange_group(ptr noundef %2983, ptr noundef %26)
  %2985 = icmp sgt i32 %2984, -1
  br i1 %2985, label %2987, label %2986

2986:                                             ; preds = %2982
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %3180

2987:                                             ; preds = %2982
  br label %2988

2988:                                             ; preds = %2987
  br label %2989

2989:                                             ; preds = %2988
  br label %2990

2990:                                             ; preds = %2989
  %2991 = load ptr, ptr %14, align 8, !tbaa !5
  %2992 = call i32 @s2n_connection_get_key_exchange_group(ptr noundef %2991, ptr noundef %27)
  %2993 = icmp sgt i32 %2992, -1
  br i1 %2993, label %2995, label %2994

2994:                                             ; preds = %2990
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %3180

2995:                                             ; preds = %2990
  br label %2996

2996:                                             ; preds = %2995
  br label %2997

2997:                                             ; preds = %2996
  br label %2998

2998:                                             ; preds = %2997
  %2999 = load ptr, ptr %11, align 8, !tbaa !5
  %3000 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %2999, i32 0, i32 2
  %3001 = load ptr, ptr %3000, align 8, !tbaa !58
  %3002 = call i64 @strlen(ptr noundef %3001) #7
  %3003 = load ptr, ptr %26, align 8, !tbaa !5
  %3004 = call i64 @strlen(ptr noundef %3003) #7
  %3005 = icmp eq i64 %3002, %3004
  br i1 %3005, label %3039, label %3006

3006:                                             ; preds = %2998
  br label %3007

3007:                                             ; preds = %3006
  br label %3008

3008:                                             ; preds = %3007
  %3009 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3010 = getelementptr inbounds %struct.s2n_debug_info, ptr %3009, i32 0, i32 0
  store ptr @.str.96, ptr %3010, align 8, !tbaa !11
  %3011 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3012 = getelementptr inbounds %struct.s2n_debug_info, ptr %3011, i32 0, i32 0
  %3013 = load ptr, ptr %3012, align 8, !tbaa !11
  %3014 = getelementptr inbounds i8, ptr %3013, i64 21
  %3015 = call ptr @strrchr(ptr noundef %3014, i32 noundef 47) #7
  %3016 = icmp ne ptr %3015, null
  br i1 %3016, label %3017, label %3024

3017:                                             ; preds = %3008
  %3018 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3019 = getelementptr inbounds %struct.s2n_debug_info, ptr %3018, i32 0, i32 0
  %3020 = load ptr, ptr %3019, align 8, !tbaa !11
  %3021 = getelementptr inbounds i8, ptr %3020, i64 21
  %3022 = call ptr @strrchr(ptr noundef %3021, i32 noundef 47) #7
  %3023 = getelementptr inbounds i8, ptr %3022, i64 1
  br label %3029

3024:                                             ; preds = %3008
  %3025 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3026 = getelementptr inbounds %struct.s2n_debug_info, ptr %3025, i32 0, i32 0
  %3027 = load ptr, ptr %3026, align 8, !tbaa !11
  %3028 = getelementptr inbounds i8, ptr %3027, i64 21
  br label %3029

3029:                                             ; preds = %3024, %3017
  %3030 = phi ptr [ %3023, %3017 ], [ %3028, %3024 ]
  %3031 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3032 = getelementptr inbounds %struct.s2n_debug_info, ptr %3031, i32 0, i32 1
  store ptr %3030, ptr %3032, align 8, !tbaa !13
  %3033 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3033, align 4, !tbaa !14
  %3034 = call i32 @s2n_calculate_stacktrace()
  br label %3035

3035:                                             ; preds = %3029
  br label %3036

3036:                                             ; preds = %3035
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %3180

3037:                                             ; No predecessors!
  br label %3038

3038:                                             ; preds = %3037
  br label %3039

3039:                                             ; preds = %3038, %2998
  br label %3040

3040:                                             ; preds = %3039
  br label %3041

3041:                                             ; preds = %3040
  br label %3042

3042:                                             ; preds = %3041
  %3043 = load ptr, ptr %11, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %3043, i32 0, i32 2
  %3045 = load ptr, ptr %3044, align 8, !tbaa !58
  %3046 = load ptr, ptr %26, align 8, !tbaa !5
  %3047 = load ptr, ptr %11, align 8, !tbaa !5
  %3048 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %3047, i32 0, i32 2
  %3049 = load ptr, ptr %3048, align 8, !tbaa !58
  %3050 = call i64 @strlen(ptr noundef %3049) #7
  %3051 = call i32 @memcmp(ptr noundef %3045, ptr noundef %3046, i64 noundef %3050) #7
  %3052 = icmp eq i32 %3051, 0
  br i1 %3052, label %3086, label %3053

3053:                                             ; preds = %3042
  br label %3054

3054:                                             ; preds = %3053
  br label %3055

3055:                                             ; preds = %3054
  %3056 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3057 = getelementptr inbounds %struct.s2n_debug_info, ptr %3056, i32 0, i32 0
  store ptr @.str.97, ptr %3057, align 8, !tbaa !11
  %3058 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3059 = getelementptr inbounds %struct.s2n_debug_info, ptr %3058, i32 0, i32 0
  %3060 = load ptr, ptr %3059, align 8, !tbaa !11
  %3061 = getelementptr inbounds i8, ptr %3060, i64 21
  %3062 = call ptr @strrchr(ptr noundef %3061, i32 noundef 47) #7
  %3063 = icmp ne ptr %3062, null
  br i1 %3063, label %3064, label %3071

3064:                                             ; preds = %3055
  %3065 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3066 = getelementptr inbounds %struct.s2n_debug_info, ptr %3065, i32 0, i32 0
  %3067 = load ptr, ptr %3066, align 8, !tbaa !11
  %3068 = getelementptr inbounds i8, ptr %3067, i64 21
  %3069 = call ptr @strrchr(ptr noundef %3068, i32 noundef 47) #7
  %3070 = getelementptr inbounds i8, ptr %3069, i64 1
  br label %3076

3071:                                             ; preds = %3055
  %3072 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3073 = getelementptr inbounds %struct.s2n_debug_info, ptr %3072, i32 0, i32 0
  %3074 = load ptr, ptr %3073, align 8, !tbaa !11
  %3075 = getelementptr inbounds i8, ptr %3074, i64 21
  br label %3076

3076:                                             ; preds = %3071, %3064
  %3077 = phi ptr [ %3070, %3064 ], [ %3075, %3071 ]
  %3078 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3079 = getelementptr inbounds %struct.s2n_debug_info, ptr %3078, i32 0, i32 1
  store ptr %3077, ptr %3079, align 8, !tbaa !13
  %3080 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3080, align 4, !tbaa !14
  %3081 = call i32 @s2n_calculate_stacktrace()
  br label %3082

3082:                                             ; preds = %3076
  br label %3083

3083:                                             ; preds = %3082
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %3180

3084:                                             ; No predecessors!
  br label %3085

3085:                                             ; preds = %3084
  br label %3086

3086:                                             ; preds = %3085, %3042
  br label %3087

3087:                                             ; preds = %3086
  br label %3088

3088:                                             ; preds = %3087
  br label %3089

3089:                                             ; preds = %3088
  %3090 = load ptr, ptr %11, align 8, !tbaa !5
  %3091 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %3090, i32 0, i32 2
  %3092 = load ptr, ptr %3091, align 8, !tbaa !58
  %3093 = call i64 @strlen(ptr noundef %3092) #7
  %3094 = load ptr, ptr %27, align 8, !tbaa !5
  %3095 = call i64 @strlen(ptr noundef %3094) #7
  %3096 = icmp eq i64 %3093, %3095
  br i1 %3096, label %3130, label %3097

3097:                                             ; preds = %3089
  br label %3098

3098:                                             ; preds = %3097
  br label %3099

3099:                                             ; preds = %3098
  %3100 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3101 = getelementptr inbounds %struct.s2n_debug_info, ptr %3100, i32 0, i32 0
  store ptr @.str.98, ptr %3101, align 8, !tbaa !11
  %3102 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3103 = getelementptr inbounds %struct.s2n_debug_info, ptr %3102, i32 0, i32 0
  %3104 = load ptr, ptr %3103, align 8, !tbaa !11
  %3105 = getelementptr inbounds i8, ptr %3104, i64 21
  %3106 = call ptr @strrchr(ptr noundef %3105, i32 noundef 47) #7
  %3107 = icmp ne ptr %3106, null
  br i1 %3107, label %3108, label %3115

3108:                                             ; preds = %3099
  %3109 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3110 = getelementptr inbounds %struct.s2n_debug_info, ptr %3109, i32 0, i32 0
  %3111 = load ptr, ptr %3110, align 8, !tbaa !11
  %3112 = getelementptr inbounds i8, ptr %3111, i64 21
  %3113 = call ptr @strrchr(ptr noundef %3112, i32 noundef 47) #7
  %3114 = getelementptr inbounds i8, ptr %3113, i64 1
  br label %3120

3115:                                             ; preds = %3099
  %3116 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3117 = getelementptr inbounds %struct.s2n_debug_info, ptr %3116, i32 0, i32 0
  %3118 = load ptr, ptr %3117, align 8, !tbaa !11
  %3119 = getelementptr inbounds i8, ptr %3118, i64 21
  br label %3120

3120:                                             ; preds = %3115, %3108
  %3121 = phi ptr [ %3114, %3108 ], [ %3119, %3115 ]
  %3122 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3123 = getelementptr inbounds %struct.s2n_debug_info, ptr %3122, i32 0, i32 1
  store ptr %3121, ptr %3123, align 8, !tbaa !13
  %3124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3124, align 4, !tbaa !14
  %3125 = call i32 @s2n_calculate_stacktrace()
  br label %3126

3126:                                             ; preds = %3120
  br label %3127

3127:                                             ; preds = %3126
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %3180

3128:                                             ; No predecessors!
  br label %3129

3129:                                             ; preds = %3128
  br label %3130

3130:                                             ; preds = %3129, %3089
  br label %3131

3131:                                             ; preds = %3130
  br label %3132

3132:                                             ; preds = %3131
  br label %3133

3133:                                             ; preds = %3132
  %3134 = load ptr, ptr %11, align 8, !tbaa !5
  %3135 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %3134, i32 0, i32 2
  %3136 = load ptr, ptr %3135, align 8, !tbaa !58
  %3137 = load ptr, ptr %27, align 8, !tbaa !5
  %3138 = load ptr, ptr %11, align 8, !tbaa !5
  %3139 = getelementptr inbounds %struct.s2n_ecc_named_curve, ptr %3138, i32 0, i32 2
  %3140 = load ptr, ptr %3139, align 8, !tbaa !58
  %3141 = call i64 @strlen(ptr noundef %3140) #7
  %3142 = call i32 @memcmp(ptr noundef %3136, ptr noundef %3137, i64 noundef %3141) #7
  %3143 = icmp eq i32 %3142, 0
  br i1 %3143, label %3177, label %3144

3144:                                             ; preds = %3133
  br label %3145

3145:                                             ; preds = %3144
  br label %3146

3146:                                             ; preds = %3145
  %3147 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3148 = getelementptr inbounds %struct.s2n_debug_info, ptr %3147, i32 0, i32 0
  store ptr @.str.99, ptr %3148, align 8, !tbaa !11
  %3149 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3150 = getelementptr inbounds %struct.s2n_debug_info, ptr %3149, i32 0, i32 0
  %3151 = load ptr, ptr %3150, align 8, !tbaa !11
  %3152 = getelementptr inbounds i8, ptr %3151, i64 21
  %3153 = call ptr @strrchr(ptr noundef %3152, i32 noundef 47) #7
  %3154 = icmp ne ptr %3153, null
  br i1 %3154, label %3155, label %3162

3155:                                             ; preds = %3146
  %3156 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3157 = getelementptr inbounds %struct.s2n_debug_info, ptr %3156, i32 0, i32 0
  %3158 = load ptr, ptr %3157, align 8, !tbaa !11
  %3159 = getelementptr inbounds i8, ptr %3158, i64 21
  %3160 = call ptr @strrchr(ptr noundef %3159, i32 noundef 47) #7
  %3161 = getelementptr inbounds i8, ptr %3160, i64 1
  br label %3167

3162:                                             ; preds = %3146
  %3163 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3164 = getelementptr inbounds %struct.s2n_debug_info, ptr %3163, i32 0, i32 0
  %3165 = load ptr, ptr %3164, align 8, !tbaa !11
  %3166 = getelementptr inbounds i8, ptr %3165, i64 21
  br label %3167

3167:                                             ; preds = %3162, %3155
  %3168 = phi ptr [ %3161, %3155 ], [ %3166, %3162 ]
  %3169 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3170 = getelementptr inbounds %struct.s2n_debug_info, ptr %3169, i32 0, i32 1
  store ptr %3168, ptr %3170, align 8, !tbaa !13
  %3171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3171, align 4, !tbaa !14
  %3172 = call i32 @s2n_calculate_stacktrace()
  br label %3173

3173:                                             ; preds = %3167
  br label %3174

3174:                                             ; preds = %3173
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %3180

3175:                                             ; No predecessors!
  br label %3176

3176:                                             ; preds = %3175
  br label %3177

3177:                                             ; preds = %3176, %3133
  br label %3178

3178:                                             ; preds = %3177
  br label %3179

3179:                                             ; preds = %3178
  store i32 0, ptr %16, align 4
  br label %3180

3180:                                             ; preds = %3179, %3174, %3127, %3083, %3036, %2994, %2986
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  %3181 = load i32, ptr %16, align 4
  switch i32 %3181, label %4091 [
    i32 0, label %3182
  ]

3182:                                             ; preds = %3180
  br label %3183

3183:                                             ; preds = %3182, %2444
  call void @llvm.lifetime.start.p0(i64 592, ptr %28) #8
  call void @llvm.memset.p0.i64(ptr align 8 %28, i8 0, i64 592, i1 false)
  br label %3184

3184:                                             ; preds = %3183
  %3185 = load ptr, ptr %15, align 8, !tbaa !5
  %3186 = call i32 @s2n_tls13_keys_from_conn(ptr noundef %28, ptr noundef %3185)
  %3187 = icmp sgt i32 %3186, -1
  br i1 %3187, label %3189, label %3188

3188:                                             ; preds = %3184
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4089

3189:                                             ; preds = %3184
  br label %3190

3190:                                             ; preds = %3189
  br label %3191

3191:                                             ; preds = %3190
  call void @llvm.lifetime.start.p0(i64 592, ptr %29) #8
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 592, i1 false)
  br label %3192

3192:                                             ; preds = %3191
  %3193 = load ptr, ptr %14, align 8, !tbaa !5
  %3194 = call i32 @s2n_tls13_keys_from_conn(ptr noundef %29, ptr noundef %3193)
  %3195 = icmp sgt i32 %3194, -1
  br i1 %3195, label %3197, label %3196

3196:                                             ; preds = %3192
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4087

3197:                                             ; preds = %3192
  br label %3198

3198:                                             ; preds = %3197
  br label %3199

3199:                                             ; preds = %3198
  br label %3200

3200:                                             ; preds = %3199
  %3201 = load ptr, ptr %15, align 8, !tbaa !5
  %3202 = getelementptr inbounds %struct.s2n_connection, ptr %3201, i32 0, i32 27
  %3203 = load ptr, ptr %3202, align 8, !tbaa !60
  %3204 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %3203, i32 0, i32 0
  %3205 = load ptr, ptr %3204, align 8, !tbaa !61
  %3206 = load ptr, ptr %14, align 8, !tbaa !5
  %3207 = getelementptr inbounds %struct.s2n_connection, ptr %3206, i32 0, i32 27
  %3208 = load ptr, ptr %3207, align 8, !tbaa !60
  %3209 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %3208, i32 0, i32 0
  %3210 = load ptr, ptr %3209, align 8, !tbaa !61
  %3211 = icmp eq ptr %3205, %3210
  br i1 %3211, label %3245, label %3212

3212:                                             ; preds = %3200
  br label %3213

3213:                                             ; preds = %3212
  br label %3214

3214:                                             ; preds = %3213
  %3215 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3216 = getelementptr inbounds %struct.s2n_debug_info, ptr %3215, i32 0, i32 0
  store ptr @.str.100, ptr %3216, align 8, !tbaa !11
  %3217 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3218 = getelementptr inbounds %struct.s2n_debug_info, ptr %3217, i32 0, i32 0
  %3219 = load ptr, ptr %3218, align 8, !tbaa !11
  %3220 = getelementptr inbounds i8, ptr %3219, i64 21
  %3221 = call ptr @strrchr(ptr noundef %3220, i32 noundef 47) #7
  %3222 = icmp ne ptr %3221, null
  br i1 %3222, label %3223, label %3230

3223:                                             ; preds = %3214
  %3224 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3225 = getelementptr inbounds %struct.s2n_debug_info, ptr %3224, i32 0, i32 0
  %3226 = load ptr, ptr %3225, align 8, !tbaa !11
  %3227 = getelementptr inbounds i8, ptr %3226, i64 21
  %3228 = call ptr @strrchr(ptr noundef %3227, i32 noundef 47) #7
  %3229 = getelementptr inbounds i8, ptr %3228, i64 1
  br label %3235

3230:                                             ; preds = %3214
  %3231 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3232 = getelementptr inbounds %struct.s2n_debug_info, ptr %3231, i32 0, i32 0
  %3233 = load ptr, ptr %3232, align 8, !tbaa !11
  %3234 = getelementptr inbounds i8, ptr %3233, i64 21
  br label %3235

3235:                                             ; preds = %3230, %3223
  %3236 = phi ptr [ %3229, %3223 ], [ %3234, %3230 ]
  %3237 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3238 = getelementptr inbounds %struct.s2n_debug_info, ptr %3237, i32 0, i32 1
  store ptr %3236, ptr %3238, align 8, !tbaa !13
  %3239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3239, align 4, !tbaa !14
  %3240 = call i32 @s2n_calculate_stacktrace()
  br label %3241

3241:                                             ; preds = %3235
  br label %3242

3242:                                             ; preds = %3241
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4087

3243:                                             ; No predecessors!
  br label %3244

3244:                                             ; preds = %3243
  br label %3245

3245:                                             ; preds = %3244, %3200
  br label %3246

3246:                                             ; preds = %3245
  br label %3247

3247:                                             ; preds = %3246
  %3248 = load ptr, ptr %15, align 8, !tbaa !5
  %3249 = getelementptr inbounds %struct.s2n_connection, ptr %3248, i32 0, i32 27
  %3250 = load ptr, ptr %3249, align 8, !tbaa !60
  %3251 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %3250, i32 0, i32 0
  %3252 = load ptr, ptr %3251, align 8, !tbaa !61
  %3253 = icmp eq ptr %3252, @s2n_tls13_aes_256_gcm_sha384
  br i1 %3253, label %3254, label %3337

3254:                                             ; preds = %3247
  br label %3255

3255:                                             ; preds = %3254
  %3256 = getelementptr inbounds %struct.s2n_tls13_keys, ptr %28, i32 0, i32 2
  %3257 = load i8, ptr %3256, align 8, !tbaa !66
  %3258 = zext i8 %3257 to i32
  %3259 = icmp eq i32 %3258, 48
  br i1 %3259, label %3293, label %3260

3260:                                             ; preds = %3255
  br label %3261

3261:                                             ; preds = %3260
  br label %3262

3262:                                             ; preds = %3261
  %3263 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3264 = getelementptr inbounds %struct.s2n_debug_info, ptr %3263, i32 0, i32 0
  store ptr @.str.101, ptr %3264, align 8, !tbaa !11
  %3265 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3266 = getelementptr inbounds %struct.s2n_debug_info, ptr %3265, i32 0, i32 0
  %3267 = load ptr, ptr %3266, align 8, !tbaa !11
  %3268 = getelementptr inbounds i8, ptr %3267, i64 21
  %3269 = call ptr @strrchr(ptr noundef %3268, i32 noundef 47) #7
  %3270 = icmp ne ptr %3269, null
  br i1 %3270, label %3271, label %3278

3271:                                             ; preds = %3262
  %3272 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3273 = getelementptr inbounds %struct.s2n_debug_info, ptr %3272, i32 0, i32 0
  %3274 = load ptr, ptr %3273, align 8, !tbaa !11
  %3275 = getelementptr inbounds i8, ptr %3274, i64 21
  %3276 = call ptr @strrchr(ptr noundef %3275, i32 noundef 47) #7
  %3277 = getelementptr inbounds i8, ptr %3276, i64 1
  br label %3283

3278:                                             ; preds = %3262
  %3279 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3280 = getelementptr inbounds %struct.s2n_debug_info, ptr %3279, i32 0, i32 0
  %3281 = load ptr, ptr %3280, align 8, !tbaa !11
  %3282 = getelementptr inbounds i8, ptr %3281, i64 21
  br label %3283

3283:                                             ; preds = %3278, %3271
  %3284 = phi ptr [ %3277, %3271 ], [ %3282, %3278 ]
  %3285 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3286 = getelementptr inbounds %struct.s2n_debug_info, ptr %3285, i32 0, i32 1
  store ptr %3284, ptr %3286, align 8, !tbaa !13
  %3287 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3287, align 4, !tbaa !14
  %3288 = call i32 @s2n_calculate_stacktrace()
  br label %3289

3289:                                             ; preds = %3283
  br label %3290

3290:                                             ; preds = %3289
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4087

3291:                                             ; No predecessors!
  br label %3292

3292:                                             ; preds = %3291
  br label %3293

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

3294:                                             ; preds = %3293
  br label %3295

3295:                                             ; preds = %3294
  br label %3296

3296:                                             ; preds = %3295
  %3297 = getelementptr inbounds %struct.s2n_tls13_keys, ptr %29, i32 0, i32 2
  %3298 = load i8, ptr %3297, align 8, !tbaa !66
  %3299 = zext i8 %3298 to i32
  %3300 = icmp eq i32 %3299, 48
  br i1 %3300, label %3334, label %3301

3301:                                             ; preds = %3296
  br label %3302

3302:                                             ; preds = %3301
  br label %3303

3303:                                             ; preds = %3302
  %3304 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3305 = getelementptr inbounds %struct.s2n_debug_info, ptr %3304, i32 0, i32 0
  store ptr @.str.102, ptr %3305, align 8, !tbaa !11
  %3306 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3307 = getelementptr inbounds %struct.s2n_debug_info, ptr %3306, i32 0, i32 0
  %3308 = load ptr, ptr %3307, align 8, !tbaa !11
  %3309 = getelementptr inbounds i8, ptr %3308, i64 21
  %3310 = call ptr @strrchr(ptr noundef %3309, i32 noundef 47) #7
  %3311 = icmp ne ptr %3310, null
  br i1 %3311, label %3312, label %3319

3312:                                             ; preds = %3303
  %3313 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3314 = getelementptr inbounds %struct.s2n_debug_info, ptr %3313, i32 0, i32 0
  %3315 = load ptr, ptr %3314, align 8, !tbaa !11
  %3316 = getelementptr inbounds i8, ptr %3315, i64 21
  %3317 = call ptr @strrchr(ptr noundef %3316, i32 noundef 47) #7
  %3318 = getelementptr inbounds i8, ptr %3317, i64 1
  br label %3324

3319:                                             ; preds = %3303
  %3320 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3321 = getelementptr inbounds %struct.s2n_debug_info, ptr %3320, i32 0, i32 0
  %3322 = load ptr, ptr %3321, align 8, !tbaa !11
  %3323 = getelementptr inbounds i8, ptr %3322, i64 21
  br label %3324

3324:                                             ; preds = %3319, %3312
  %3325 = phi ptr [ %3318, %3312 ], [ %3323, %3319 ]
  %3326 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3327 = getelementptr inbounds %struct.s2n_debug_info, ptr %3326, i32 0, i32 1
  store ptr %3325, ptr %3327, align 8, !tbaa !13
  %3328 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3328, align 4, !tbaa !14
  %3329 = call i32 @s2n_calculate_stacktrace()
  br label %3330

3330:                                             ; preds = %3324
  br label %3331

3331:                                             ; preds = %3330
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4087

3332:                                             ; No predecessors!
  br label %3333

3333:                                             ; preds = %3332
  br label %3334

3334:                                             ; preds = %3333, %3296
  br label %3335

3335:                                             ; preds = %3334
  br label %3336

3336:                                             ; preds = %3335
  br label %3420

3337:                                             ; preds = %3247
  br label %3338

3338:                                             ; preds = %3337
  %3339 = getelementptr inbounds %struct.s2n_tls13_keys, ptr %28, i32 0, i32 2
  %3340 = load i8, ptr %3339, align 8, !tbaa !66
  %3341 = zext i8 %3340 to i32
  %3342 = icmp eq i32 %3341, 32
  br i1 %3342, label %3376, label %3343

3343:                                             ; preds = %3338
  br label %3344

3344:                                             ; preds = %3343
  br label %3345

3345:                                             ; preds = %3344
  %3346 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3347 = getelementptr inbounds %struct.s2n_debug_info, ptr %3346, i32 0, i32 0
  store ptr @.str.103, ptr %3347, align 8, !tbaa !11
  %3348 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3349 = getelementptr inbounds %struct.s2n_debug_info, ptr %3348, i32 0, i32 0
  %3350 = load ptr, ptr %3349, align 8, !tbaa !11
  %3351 = getelementptr inbounds i8, ptr %3350, i64 21
  %3352 = call ptr @strrchr(ptr noundef %3351, i32 noundef 47) #7
  %3353 = icmp ne ptr %3352, null
  br i1 %3353, label %3354, label %3361

3354:                                             ; preds = %3345
  %3355 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3356 = getelementptr inbounds %struct.s2n_debug_info, ptr %3355, i32 0, i32 0
  %3357 = load ptr, ptr %3356, align 8, !tbaa !11
  %3358 = getelementptr inbounds i8, ptr %3357, i64 21
  %3359 = call ptr @strrchr(ptr noundef %3358, i32 noundef 47) #7
  %3360 = getelementptr inbounds i8, ptr %3359, i64 1
  br label %3366

3361:                                             ; preds = %3345
  %3362 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3363 = getelementptr inbounds %struct.s2n_debug_info, ptr %3362, i32 0, i32 0
  %3364 = load ptr, ptr %3363, align 8, !tbaa !11
  %3365 = getelementptr inbounds i8, ptr %3364, i64 21
  br label %3366

3366:                                             ; preds = %3361, %3354
  %3367 = phi ptr [ %3360, %3354 ], [ %3365, %3361 ]
  %3368 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3369 = getelementptr inbounds %struct.s2n_debug_info, ptr %3368, i32 0, i32 1
  store ptr %3367, ptr %3369, align 8, !tbaa !13
  %3370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3370, align 4, !tbaa !14
  %3371 = call i32 @s2n_calculate_stacktrace()
  br label %3372

3372:                                             ; preds = %3366
  br label %3373

3373:                                             ; preds = %3372
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4087

3374:                                             ; No predecessors!
  br label %3375

3375:                                             ; preds = %3374
  br label %3376

3376:                                             ; preds = %3375, %3338
  br label %3377

3377:                                             ; preds = %3376
  br label %3378

3378:                                             ; preds = %3377
  br label %3379

3379:                                             ; preds = %3378
  %3380 = getelementptr inbounds %struct.s2n_tls13_keys, ptr %29, i32 0, i32 2
  %3381 = load i8, ptr %3380, align 8, !tbaa !66
  %3382 = zext i8 %3381 to i32
  %3383 = icmp eq i32 %3382, 32
  br i1 %3383, label %3417, label %3384

3384:                                             ; preds = %3379
  br label %3385

3385:                                             ; preds = %3384
  br label %3386

3386:                                             ; preds = %3385
  %3387 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3388 = getelementptr inbounds %struct.s2n_debug_info, ptr %3387, i32 0, i32 0
  store ptr @.str.104, ptr %3388, align 8, !tbaa !11
  %3389 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3390 = getelementptr inbounds %struct.s2n_debug_info, ptr %3389, i32 0, i32 0
  %3391 = load ptr, ptr %3390, align 8, !tbaa !11
  %3392 = getelementptr inbounds i8, ptr %3391, i64 21
  %3393 = call ptr @strrchr(ptr noundef %3392, i32 noundef 47) #7
  %3394 = icmp ne ptr %3393, null
  br i1 %3394, label %3395, label %3402

3395:                                             ; preds = %3386
  %3396 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3397 = getelementptr inbounds %struct.s2n_debug_info, ptr %3396, i32 0, i32 0
  %3398 = load ptr, ptr %3397, align 8, !tbaa !11
  %3399 = getelementptr inbounds i8, ptr %3398, i64 21
  %3400 = call ptr @strrchr(ptr noundef %3399, i32 noundef 47) #7
  %3401 = getelementptr inbounds i8, ptr %3400, i64 1
  br label %3407

3402:                                             ; preds = %3386
  %3403 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3404 = getelementptr inbounds %struct.s2n_debug_info, ptr %3403, i32 0, i32 0
  %3405 = load ptr, ptr %3404, align 8, !tbaa !11
  %3406 = getelementptr inbounds i8, ptr %3405, i64 21
  br label %3407

3407:                                             ; preds = %3402, %3395
  %3408 = phi ptr [ %3401, %3395 ], [ %3406, %3402 ]
  %3409 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3410 = getelementptr inbounds %struct.s2n_debug_info, ptr %3409, i32 0, i32 1
  store ptr %3408, ptr %3410, align 8, !tbaa !13
  %3411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3411, align 4, !tbaa !14
  %3412 = call i32 @s2n_calculate_stacktrace()
  br label %3413

3413:                                             ; preds = %3407
  br label %3414

3414:                                             ; preds = %3413
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4087

3415:                                             ; No predecessors!
  br label %3416

3416:                                             ; preds = %3415
  br label %3417

3417:                                             ; preds = %3416, %3379
  br label %3418

3418:                                             ; preds = %3417
  br label %3419

3419:                                             ; preds = %3418
  br label %3420

3420:                                             ; preds = %3419, %3336
  call void @llvm.lifetime.start.p0(i64 48, ptr %30) #8
  call void @llvm.memset.p0.i64(ptr align 16 %30, i8 0, i64 48, i1 false)
  br label %3421

3421:                                             ; preds = %3420
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 48, ptr %31, align 4, !tbaa !14
  %3422 = load i32, ptr %31, align 4, !tbaa !14
  %3423 = icmp ne i32 %3422, 0
  %3424 = xor i1 %3423, true
  %3425 = xor i1 %3424, true
  %3426 = zext i1 %3425 to i32
  %3427 = sext i32 %3426 to i64
  %3428 = call i64 @llvm.expect.i64(i64 %3427, i64 1)
  %3429 = icmp ne i64 %3428, 0
  br i1 %3429, label %3430, label %3477

3430:                                             ; preds = %3421
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %3431 = getelementptr inbounds [48 x i8], ptr %30, i64 0, i64 0
  store ptr %3431, ptr %32, align 8, !tbaa !5
  br label %3432

3432:                                             ; preds = %3430
  %3433 = load ptr, ptr %32, align 8, !tbaa !5
  %3434 = icmp ne ptr %3433, null
  br i1 %3434, label %3468, label %3435

3435:                                             ; preds = %3432
  br label %3436

3436:                                             ; preds = %3435
  br label %3437

3437:                                             ; preds = %3436
  %3438 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3439 = getelementptr inbounds %struct.s2n_debug_info, ptr %3438, i32 0, i32 0
  store ptr @.str.105, ptr %3439, align 8, !tbaa !11
  %3440 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3441 = getelementptr inbounds %struct.s2n_debug_info, ptr %3440, i32 0, i32 0
  %3442 = load ptr, ptr %3441, align 8, !tbaa !11
  %3443 = getelementptr inbounds i8, ptr %3442, i64 21
  %3444 = call ptr @strrchr(ptr noundef %3443, i32 noundef 47) #7
  %3445 = icmp ne ptr %3444, null
  br i1 %3445, label %3446, label %3453

3446:                                             ; preds = %3437
  %3447 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3448 = getelementptr inbounds %struct.s2n_debug_info, ptr %3447, i32 0, i32 0
  %3449 = load ptr, ptr %3448, align 8, !tbaa !11
  %3450 = getelementptr inbounds i8, ptr %3449, i64 21
  %3451 = call ptr @strrchr(ptr noundef %3450, i32 noundef 47) #7
  %3452 = getelementptr inbounds i8, ptr %3451, i64 1
  br label %3458

3453:                                             ; preds = %3437
  %3454 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3455 = getelementptr inbounds %struct.s2n_debug_info, ptr %3454, i32 0, i32 0
  %3456 = load ptr, ptr %3455, align 8, !tbaa !11
  %3457 = getelementptr inbounds i8, ptr %3456, i64 21
  br label %3458

3458:                                             ; preds = %3453, %3446
  %3459 = phi ptr [ %3452, %3446 ], [ %3457, %3453 ]
  %3460 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3461 = getelementptr inbounds %struct.s2n_debug_info, ptr %3460, i32 0, i32 1
  store ptr %3459, ptr %3461, align 8, !tbaa !13
  %3462 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %3462, align 4, !tbaa !14
  %3463 = call i32 @s2n_calculate_stacktrace()
  br label %3464

3464:                                             ; preds = %3458
  br label %3465

3465:                                             ; preds = %3464
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %3474

3466:                                             ; No predecessors!
  br label %3467

3467:                                             ; preds = %3466
  br label %3468

3468:                                             ; preds = %3467, %3432
  br label %3469

3469:                                             ; preds = %3468
  br label %3470

3470:                                             ; preds = %3469
  %3471 = load ptr, ptr %32, align 8, !tbaa !5
  %3472 = load i32, ptr %31, align 4, !tbaa !14
  %3473 = sext i32 %3472 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %3471, i8 0, i64 %3473, i1 false)
  store i32 0, ptr %16, align 4
  br label %3474

3474:                                             ; preds = %3470, %3465
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  %3475 = load i32, ptr %16, align 4
  switch i32 %3475, label %3478 [
    i32 0, label %3476
  ]

3476:                                             ; preds = %3474
  br label %3477

3477:                                             ; preds = %3476, %3421
  store i32 0, ptr %16, align 4
  br label %3478

3478:                                             ; preds = %3477, %3474
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  %3479 = load i32, ptr %16, align 4
  switch i32 %3479, label %4086 [
    i32 0, label %3480
  ]

3480:                                             ; preds = %3478
  br label %3481

3481:                                             ; preds = %3480
  br label %3482

3482:                                             ; preds = %3481
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %3483 = load ptr, ptr %14, align 8, !tbaa !5
  %3484 = getelementptr inbounds %struct.s2n_connection, ptr %3483, i32 0, i32 28
  %3485 = getelementptr inbounds %struct.s2n_secrets, ptr %3484, i32 0, i32 0
  store ptr %3485, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %3486 = load ptr, ptr %15, align 8, !tbaa !5
  %3487 = getelementptr inbounds %struct.s2n_connection, ptr %3486, i32 0, i32 28
  %3488 = getelementptr inbounds %struct.s2n_secrets, ptr %3487, i32 0, i32 0
  store ptr %3488, ptr %34, align 8, !tbaa !5
  br label %3489

3489:                                             ; preds = %3482
  %3490 = getelementptr inbounds %struct.s2n_tls13_keys, ptr %28, i32 0, i32 2
  %3491 = load i8, ptr %3490, align 8, !tbaa !66
  %3492 = zext i8 %3491 to i32
  %3493 = getelementptr inbounds %struct.s2n_tls13_keys, ptr %29, i32 0, i32 2
  %3494 = load i8, ptr %3493, align 8, !tbaa !66
  %3495 = zext i8 %3494 to i32
  %3496 = icmp eq i32 %3492, %3495
  br i1 %3496, label %3530, label %3497

3497:                                             ; preds = %3489
  br label %3498

3498:                                             ; preds = %3497
  br label %3499

3499:                                             ; preds = %3498
  %3500 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3501 = getelementptr inbounds %struct.s2n_debug_info, ptr %3500, i32 0, i32 0
  store ptr @.str.106, ptr %3501, align 8, !tbaa !11
  %3502 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3503 = getelementptr inbounds %struct.s2n_debug_info, ptr %3502, i32 0, i32 0
  %3504 = load ptr, ptr %3503, align 8, !tbaa !11
  %3505 = getelementptr inbounds i8, ptr %3504, i64 21
  %3506 = call ptr @strrchr(ptr noundef %3505, i32 noundef 47) #7
  %3507 = icmp ne ptr %3506, null
  br i1 %3507, label %3508, label %3515

3508:                                             ; preds = %3499
  %3509 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3510 = getelementptr inbounds %struct.s2n_debug_info, ptr %3509, i32 0, i32 0
  %3511 = load ptr, ptr %3510, align 8, !tbaa !11
  %3512 = getelementptr inbounds i8, ptr %3511, i64 21
  %3513 = call ptr @strrchr(ptr noundef %3512, i32 noundef 47) #7
  %3514 = getelementptr inbounds i8, ptr %3513, i64 1
  br label %3520

3515:                                             ; preds = %3499
  %3516 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3517 = getelementptr inbounds %struct.s2n_debug_info, ptr %3516, i32 0, i32 0
  %3518 = load ptr, ptr %3517, align 8, !tbaa !11
  %3519 = getelementptr inbounds i8, ptr %3518, i64 21
  br label %3520

3520:                                             ; preds = %3515, %3508
  %3521 = phi ptr [ %3514, %3508 ], [ %3519, %3515 ]
  %3522 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3523 = getelementptr inbounds %struct.s2n_debug_info, ptr %3522, i32 0, i32 1
  store ptr %3521, ptr %3523, align 8, !tbaa !13
  %3524 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3524, align 4, !tbaa !14
  %3525 = call i32 @s2n_calculate_stacktrace()
  br label %3526

3526:                                             ; preds = %3520
  br label %3527

3527:                                             ; preds = %3526
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4085

3528:                                             ; No predecessors!
  br label %3529

3529:                                             ; preds = %3528
  br label %3530

3530:                                             ; preds = %3529, %3489
  br label %3531

3531:                                             ; preds = %3530
  br label %3532

3532:                                             ; preds = %3531
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #8
  %3533 = getelementptr inbounds %struct.s2n_tls13_keys, ptr %28, i32 0, i32 2
  %3534 = load i8, ptr %3533, align 8, !tbaa !66
  store i8 %3534, ptr %35, align 1, !tbaa !68
  br label %3535

3535:                                             ; preds = %3532
  %3536 = load ptr, ptr %14, align 8, !tbaa !5
  %3537 = getelementptr inbounds %struct.s2n_connection, ptr %3536, i32 0, i32 28
  %3538 = getelementptr inbounds %struct.s2n_secrets, ptr %3537, i32 0, i32 1
  %3539 = load i32, ptr %3538, align 4, !tbaa !69
  %3540 = icmp eq i32 %3539, 2
  br i1 %3540, label %3574, label %3541

3541:                                             ; preds = %3535
  br label %3542

3542:                                             ; preds = %3541
  br label %3543

3543:                                             ; preds = %3542
  %3544 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3545 = getelementptr inbounds %struct.s2n_debug_info, ptr %3544, i32 0, i32 0
  store ptr @.str.107, ptr %3545, align 8, !tbaa !11
  %3546 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3547 = getelementptr inbounds %struct.s2n_debug_info, ptr %3546, i32 0, i32 0
  %3548 = load ptr, ptr %3547, align 8, !tbaa !11
  %3549 = getelementptr inbounds i8, ptr %3548, i64 21
  %3550 = call ptr @strrchr(ptr noundef %3549, i32 noundef 47) #7
  %3551 = icmp ne ptr %3550, null
  br i1 %3551, label %3552, label %3559

3552:                                             ; preds = %3543
  %3553 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3554 = getelementptr inbounds %struct.s2n_debug_info, ptr %3553, i32 0, i32 0
  %3555 = load ptr, ptr %3554, align 8, !tbaa !11
  %3556 = getelementptr inbounds i8, ptr %3555, i64 21
  %3557 = call ptr @strrchr(ptr noundef %3556, i32 noundef 47) #7
  %3558 = getelementptr inbounds i8, ptr %3557, i64 1
  br label %3564

3559:                                             ; preds = %3543
  %3560 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3561 = getelementptr inbounds %struct.s2n_debug_info, ptr %3560, i32 0, i32 0
  %3562 = load ptr, ptr %3561, align 8, !tbaa !11
  %3563 = getelementptr inbounds i8, ptr %3562, i64 21
  br label %3564

3564:                                             ; preds = %3559, %3552
  %3565 = phi ptr [ %3558, %3552 ], [ %3563, %3559 ]
  %3566 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3567 = getelementptr inbounds %struct.s2n_debug_info, ptr %3566, i32 0, i32 1
  store ptr %3565, ptr %3567, align 8, !tbaa !13
  %3568 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3568, align 4, !tbaa !14
  %3569 = call i32 @s2n_calculate_stacktrace()
  br label %3570

3570:                                             ; preds = %3564
  br label %3571

3571:                                             ; preds = %3570
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3572:                                             ; No predecessors!
  br label %3573

3573:                                             ; preds = %3572
  br label %3574

3574:                                             ; preds = %3573, %3535
  br label %3575

3575:                                             ; preds = %3574
  br label %3576

3576:                                             ; preds = %3575
  br label %3577

3577:                                             ; preds = %3576
  %3578 = getelementptr inbounds [48 x i8], ptr %30, i64 0, i64 0
  %3579 = load ptr, ptr %33, align 8, !tbaa !5
  %3580 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3579, i32 0, i32 0
  %3581 = getelementptr inbounds [48 x i8], ptr %3580, i64 0, i64 0
  %3582 = load i8, ptr %35, align 1, !tbaa !68
  %3583 = zext i8 %3582 to i64
  %3584 = call i32 @memcmp(ptr noundef %3578, ptr noundef %3581, i64 noundef %3583) #7
  %3585 = icmp ne i32 0, %3584
  br i1 %3585, label %3619, label %3586

3586:                                             ; preds = %3577
  br label %3587

3587:                                             ; preds = %3586
  br label %3588

3588:                                             ; preds = %3587
  %3589 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3590 = getelementptr inbounds %struct.s2n_debug_info, ptr %3589, i32 0, i32 0
  store ptr @.str.108, ptr %3590, align 8, !tbaa !11
  %3591 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3592 = getelementptr inbounds %struct.s2n_debug_info, ptr %3591, i32 0, i32 0
  %3593 = load ptr, ptr %3592, align 8, !tbaa !11
  %3594 = getelementptr inbounds i8, ptr %3593, i64 21
  %3595 = call ptr @strrchr(ptr noundef %3594, i32 noundef 47) #7
  %3596 = icmp ne ptr %3595, null
  br i1 %3596, label %3597, label %3604

3597:                                             ; preds = %3588
  %3598 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3599 = getelementptr inbounds %struct.s2n_debug_info, ptr %3598, i32 0, i32 0
  %3600 = load ptr, ptr %3599, align 8, !tbaa !11
  %3601 = getelementptr inbounds i8, ptr %3600, i64 21
  %3602 = call ptr @strrchr(ptr noundef %3601, i32 noundef 47) #7
  %3603 = getelementptr inbounds i8, ptr %3602, i64 1
  br label %3609

3604:                                             ; preds = %3588
  %3605 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3606 = getelementptr inbounds %struct.s2n_debug_info, ptr %3605, i32 0, i32 0
  %3607 = load ptr, ptr %3606, align 8, !tbaa !11
  %3608 = getelementptr inbounds i8, ptr %3607, i64 21
  br label %3609

3609:                                             ; preds = %3604, %3597
  %3610 = phi ptr [ %3603, %3597 ], [ %3608, %3604 ]
  %3611 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3612 = getelementptr inbounds %struct.s2n_debug_info, ptr %3611, i32 0, i32 1
  store ptr %3610, ptr %3612, align 8, !tbaa !13
  %3613 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3613, align 4, !tbaa !14
  %3614 = call i32 @s2n_calculate_stacktrace()
  br label %3615

3615:                                             ; preds = %3609
  br label %3616

3616:                                             ; preds = %3615
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3617:                                             ; No predecessors!
  br label %3618

3618:                                             ; preds = %3617
  br label %3619

3619:                                             ; preds = %3618, %3577
  br label %3620

3620:                                             ; preds = %3619
  br label %3621

3621:                                             ; preds = %3620
  br label %3622

3622:                                             ; preds = %3621
  %3623 = getelementptr inbounds [48 x i8], ptr %30, i64 0, i64 0
  %3624 = load ptr, ptr %33, align 8, !tbaa !5
  %3625 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3624, i32 0, i32 2
  %3626 = getelementptr inbounds [48 x i8], ptr %3625, i64 0, i64 0
  %3627 = load i8, ptr %35, align 1, !tbaa !68
  %3628 = zext i8 %3627 to i64
  %3629 = call i32 @memcmp(ptr noundef %3623, ptr noundef %3626, i64 noundef %3628) #7
  %3630 = icmp ne i32 0, %3629
  br i1 %3630, label %3664, label %3631

3631:                                             ; preds = %3622
  br label %3632

3632:                                             ; preds = %3631
  br label %3633

3633:                                             ; preds = %3632
  %3634 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3635 = getelementptr inbounds %struct.s2n_debug_info, ptr %3634, i32 0, i32 0
  store ptr @.str.109, ptr %3635, align 8, !tbaa !11
  %3636 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3637 = getelementptr inbounds %struct.s2n_debug_info, ptr %3636, i32 0, i32 0
  %3638 = load ptr, ptr %3637, align 8, !tbaa !11
  %3639 = getelementptr inbounds i8, ptr %3638, i64 21
  %3640 = call ptr @strrchr(ptr noundef %3639, i32 noundef 47) #7
  %3641 = icmp ne ptr %3640, null
  br i1 %3641, label %3642, label %3649

3642:                                             ; preds = %3633
  %3643 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3644 = getelementptr inbounds %struct.s2n_debug_info, ptr %3643, i32 0, i32 0
  %3645 = load ptr, ptr %3644, align 8, !tbaa !11
  %3646 = getelementptr inbounds i8, ptr %3645, i64 21
  %3647 = call ptr @strrchr(ptr noundef %3646, i32 noundef 47) #7
  %3648 = getelementptr inbounds i8, ptr %3647, i64 1
  br label %3654

3649:                                             ; preds = %3633
  %3650 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3651 = getelementptr inbounds %struct.s2n_debug_info, ptr %3650, i32 0, i32 0
  %3652 = load ptr, ptr %3651, align 8, !tbaa !11
  %3653 = getelementptr inbounds i8, ptr %3652, i64 21
  br label %3654

3654:                                             ; preds = %3649, %3642
  %3655 = phi ptr [ %3648, %3642 ], [ %3653, %3649 ]
  %3656 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3657 = getelementptr inbounds %struct.s2n_debug_info, ptr %3656, i32 0, i32 1
  store ptr %3655, ptr %3657, align 8, !tbaa !13
  %3658 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3658, align 4, !tbaa !14
  %3659 = call i32 @s2n_calculate_stacktrace()
  br label %3660

3660:                                             ; preds = %3654
  br label %3661

3661:                                             ; preds = %3660
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3662:                                             ; No predecessors!
  br label %3663

3663:                                             ; preds = %3662
  br label %3664

3664:                                             ; preds = %3663, %3622
  br label %3665

3665:                                             ; preds = %3664
  br label %3666

3666:                                             ; preds = %3665
  br label %3667

3667:                                             ; preds = %3666
  %3668 = getelementptr inbounds [48 x i8], ptr %30, i64 0, i64 0
  %3669 = load ptr, ptr %33, align 8, !tbaa !5
  %3670 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3669, i32 0, i32 3
  %3671 = getelementptr inbounds [48 x i8], ptr %3670, i64 0, i64 0
  %3672 = load i8, ptr %35, align 1, !tbaa !68
  %3673 = zext i8 %3672 to i64
  %3674 = call i32 @memcmp(ptr noundef %3668, ptr noundef %3671, i64 noundef %3673) #7
  %3675 = icmp ne i32 0, %3674
  br i1 %3675, label %3709, label %3676

3676:                                             ; preds = %3667
  br label %3677

3677:                                             ; preds = %3676
  br label %3678

3678:                                             ; preds = %3677
  %3679 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3680 = getelementptr inbounds %struct.s2n_debug_info, ptr %3679, i32 0, i32 0
  store ptr @.str.110, ptr %3680, align 8, !tbaa !11
  %3681 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3682 = getelementptr inbounds %struct.s2n_debug_info, ptr %3681, i32 0, i32 0
  %3683 = load ptr, ptr %3682, align 8, !tbaa !11
  %3684 = getelementptr inbounds i8, ptr %3683, i64 21
  %3685 = call ptr @strrchr(ptr noundef %3684, i32 noundef 47) #7
  %3686 = icmp ne ptr %3685, null
  br i1 %3686, label %3687, label %3694

3687:                                             ; preds = %3678
  %3688 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3689 = getelementptr inbounds %struct.s2n_debug_info, ptr %3688, i32 0, i32 0
  %3690 = load ptr, ptr %3689, align 8, !tbaa !11
  %3691 = getelementptr inbounds i8, ptr %3690, i64 21
  %3692 = call ptr @strrchr(ptr noundef %3691, i32 noundef 47) #7
  %3693 = getelementptr inbounds i8, ptr %3692, i64 1
  br label %3699

3694:                                             ; preds = %3678
  %3695 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3696 = getelementptr inbounds %struct.s2n_debug_info, ptr %3695, i32 0, i32 0
  %3697 = load ptr, ptr %3696, align 8, !tbaa !11
  %3698 = getelementptr inbounds i8, ptr %3697, i64 21
  br label %3699

3699:                                             ; preds = %3694, %3687
  %3700 = phi ptr [ %3693, %3687 ], [ %3698, %3694 ]
  %3701 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3702 = getelementptr inbounds %struct.s2n_debug_info, ptr %3701, i32 0, i32 1
  store ptr %3700, ptr %3702, align 8, !tbaa !13
  %3703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3703, align 4, !tbaa !14
  %3704 = call i32 @s2n_calculate_stacktrace()
  br label %3705

3705:                                             ; preds = %3699
  br label %3706

3706:                                             ; preds = %3705
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3707:                                             ; No predecessors!
  br label %3708

3708:                                             ; preds = %3707
  br label %3709

3709:                                             ; preds = %3708, %3667
  br label %3710

3710:                                             ; preds = %3709
  br label %3711

3711:                                             ; preds = %3710
  br label %3712

3712:                                             ; preds = %3711
  %3713 = load ptr, ptr %15, align 8, !tbaa !5
  %3714 = getelementptr inbounds %struct.s2n_connection, ptr %3713, i32 0, i32 28
  %3715 = getelementptr inbounds %struct.s2n_secrets, ptr %3714, i32 0, i32 1
  %3716 = load i32, ptr %3715, align 4, !tbaa !69
  %3717 = icmp eq i32 %3716, 2
  br i1 %3717, label %3751, label %3718

3718:                                             ; preds = %3712
  br label %3719

3719:                                             ; preds = %3718
  br label %3720

3720:                                             ; preds = %3719
  %3721 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3722 = getelementptr inbounds %struct.s2n_debug_info, ptr %3721, i32 0, i32 0
  store ptr @.str.111, ptr %3722, align 8, !tbaa !11
  %3723 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3724 = getelementptr inbounds %struct.s2n_debug_info, ptr %3723, i32 0, i32 0
  %3725 = load ptr, ptr %3724, align 8, !tbaa !11
  %3726 = getelementptr inbounds i8, ptr %3725, i64 21
  %3727 = call ptr @strrchr(ptr noundef %3726, i32 noundef 47) #7
  %3728 = icmp ne ptr %3727, null
  br i1 %3728, label %3729, label %3736

3729:                                             ; preds = %3720
  %3730 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3731 = getelementptr inbounds %struct.s2n_debug_info, ptr %3730, i32 0, i32 0
  %3732 = load ptr, ptr %3731, align 8, !tbaa !11
  %3733 = getelementptr inbounds i8, ptr %3732, i64 21
  %3734 = call ptr @strrchr(ptr noundef %3733, i32 noundef 47) #7
  %3735 = getelementptr inbounds i8, ptr %3734, i64 1
  br label %3741

3736:                                             ; preds = %3720
  %3737 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3738 = getelementptr inbounds %struct.s2n_debug_info, ptr %3737, i32 0, i32 0
  %3739 = load ptr, ptr %3738, align 8, !tbaa !11
  %3740 = getelementptr inbounds i8, ptr %3739, i64 21
  br label %3741

3741:                                             ; preds = %3736, %3729
  %3742 = phi ptr [ %3735, %3729 ], [ %3740, %3736 ]
  %3743 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3744 = getelementptr inbounds %struct.s2n_debug_info, ptr %3743, i32 0, i32 1
  store ptr %3742, ptr %3744, align 8, !tbaa !13
  %3745 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3745, align 4, !tbaa !14
  %3746 = call i32 @s2n_calculate_stacktrace()
  br label %3747

3747:                                             ; preds = %3741
  br label %3748

3748:                                             ; preds = %3747
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3749:                                             ; No predecessors!
  br label %3750

3750:                                             ; preds = %3749
  br label %3751

3751:                                             ; preds = %3750, %3712
  br label %3752

3752:                                             ; preds = %3751
  br label %3753

3753:                                             ; preds = %3752
  br label %3754

3754:                                             ; preds = %3753
  %3755 = getelementptr inbounds [48 x i8], ptr %30, i64 0, i64 0
  %3756 = load ptr, ptr %34, align 8, !tbaa !5
  %3757 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3756, i32 0, i32 0
  %3758 = getelementptr inbounds [48 x i8], ptr %3757, i64 0, i64 0
  %3759 = load i8, ptr %35, align 1, !tbaa !68
  %3760 = zext i8 %3759 to i64
  %3761 = call i32 @memcmp(ptr noundef %3755, ptr noundef %3758, i64 noundef %3760) #7
  %3762 = icmp ne i32 0, %3761
  br i1 %3762, label %3796, label %3763

3763:                                             ; preds = %3754
  br label %3764

3764:                                             ; preds = %3763
  br label %3765

3765:                                             ; preds = %3764
  %3766 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3767 = getelementptr inbounds %struct.s2n_debug_info, ptr %3766, i32 0, i32 0
  store ptr @.str.112, ptr %3767, align 8, !tbaa !11
  %3768 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3769 = getelementptr inbounds %struct.s2n_debug_info, ptr %3768, i32 0, i32 0
  %3770 = load ptr, ptr %3769, align 8, !tbaa !11
  %3771 = getelementptr inbounds i8, ptr %3770, i64 21
  %3772 = call ptr @strrchr(ptr noundef %3771, i32 noundef 47) #7
  %3773 = icmp ne ptr %3772, null
  br i1 %3773, label %3774, label %3781

3774:                                             ; preds = %3765
  %3775 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3776 = getelementptr inbounds %struct.s2n_debug_info, ptr %3775, i32 0, i32 0
  %3777 = load ptr, ptr %3776, align 8, !tbaa !11
  %3778 = getelementptr inbounds i8, ptr %3777, i64 21
  %3779 = call ptr @strrchr(ptr noundef %3778, i32 noundef 47) #7
  %3780 = getelementptr inbounds i8, ptr %3779, i64 1
  br label %3786

3781:                                             ; preds = %3765
  %3782 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3783 = getelementptr inbounds %struct.s2n_debug_info, ptr %3782, i32 0, i32 0
  %3784 = load ptr, ptr %3783, align 8, !tbaa !11
  %3785 = getelementptr inbounds i8, ptr %3784, i64 21
  br label %3786

3786:                                             ; preds = %3781, %3774
  %3787 = phi ptr [ %3780, %3774 ], [ %3785, %3781 ]
  %3788 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3789 = getelementptr inbounds %struct.s2n_debug_info, ptr %3788, i32 0, i32 1
  store ptr %3787, ptr %3789, align 8, !tbaa !13
  %3790 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3790, align 4, !tbaa !14
  %3791 = call i32 @s2n_calculate_stacktrace()
  br label %3792

3792:                                             ; preds = %3786
  br label %3793

3793:                                             ; preds = %3792
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3794:                                             ; No predecessors!
  br label %3795

3795:                                             ; preds = %3794
  br label %3796

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

3797:                                             ; preds = %3796
  br label %3798

3798:                                             ; preds = %3797
  br label %3799

3799:                                             ; preds = %3798
  %3800 = getelementptr inbounds [48 x i8], ptr %30, i64 0, i64 0
  %3801 = load ptr, ptr %34, align 8, !tbaa !5
  %3802 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3801, i32 0, i32 2
  %3803 = getelementptr inbounds [48 x i8], ptr %3802, i64 0, i64 0
  %3804 = load i8, ptr %35, align 1, !tbaa !68
  %3805 = zext i8 %3804 to i64
  %3806 = call i32 @memcmp(ptr noundef %3800, ptr noundef %3803, i64 noundef %3805) #7
  %3807 = icmp ne i32 0, %3806
  br i1 %3807, label %3841, label %3808

3808:                                             ; preds = %3799
  br label %3809

3809:                                             ; preds = %3808
  br label %3810

3810:                                             ; preds = %3809
  %3811 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3812 = getelementptr inbounds %struct.s2n_debug_info, ptr %3811, i32 0, i32 0
  store ptr @.str.113, ptr %3812, align 8, !tbaa !11
  %3813 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3814 = getelementptr inbounds %struct.s2n_debug_info, ptr %3813, i32 0, i32 0
  %3815 = load ptr, ptr %3814, align 8, !tbaa !11
  %3816 = getelementptr inbounds i8, ptr %3815, i64 21
  %3817 = call ptr @strrchr(ptr noundef %3816, i32 noundef 47) #7
  %3818 = icmp ne ptr %3817, null
  br i1 %3818, label %3819, label %3826

3819:                                             ; preds = %3810
  %3820 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3821 = getelementptr inbounds %struct.s2n_debug_info, ptr %3820, i32 0, i32 0
  %3822 = load ptr, ptr %3821, align 8, !tbaa !11
  %3823 = getelementptr inbounds i8, ptr %3822, i64 21
  %3824 = call ptr @strrchr(ptr noundef %3823, i32 noundef 47) #7
  %3825 = getelementptr inbounds i8, ptr %3824, i64 1
  br label %3831

3826:                                             ; preds = %3810
  %3827 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3828 = getelementptr inbounds %struct.s2n_debug_info, ptr %3827, i32 0, i32 0
  %3829 = load ptr, ptr %3828, align 8, !tbaa !11
  %3830 = getelementptr inbounds i8, ptr %3829, i64 21
  br label %3831

3831:                                             ; preds = %3826, %3819
  %3832 = phi ptr [ %3825, %3819 ], [ %3830, %3826 ]
  %3833 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3834 = getelementptr inbounds %struct.s2n_debug_info, ptr %3833, i32 0, i32 1
  store ptr %3832, ptr %3834, align 8, !tbaa !13
  %3835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3835, align 4, !tbaa !14
  %3836 = call i32 @s2n_calculate_stacktrace()
  br label %3837

3837:                                             ; preds = %3831
  br label %3838

3838:                                             ; preds = %3837
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3839:                                             ; No predecessors!
  br label %3840

3840:                                             ; preds = %3839
  br label %3841

3841:                                             ; preds = %3840, %3799
  br label %3842

3842:                                             ; preds = %3841
  br label %3843

3843:                                             ; preds = %3842
  br label %3844

3844:                                             ; preds = %3843
  %3845 = getelementptr inbounds [48 x i8], ptr %30, i64 0, i64 0
  %3846 = load ptr, ptr %34, align 8, !tbaa !5
  %3847 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3846, i32 0, i32 3
  %3848 = getelementptr inbounds [48 x i8], ptr %3847, i64 0, i64 0
  %3849 = load i8, ptr %35, align 1, !tbaa !68
  %3850 = zext i8 %3849 to i64
  %3851 = call i32 @memcmp(ptr noundef %3845, ptr noundef %3848, i64 noundef %3850) #7
  %3852 = icmp ne i32 0, %3851
  br i1 %3852, label %3886, label %3853

3853:                                             ; preds = %3844
  br label %3854

3854:                                             ; preds = %3853
  br label %3855

3855:                                             ; preds = %3854
  %3856 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3857 = getelementptr inbounds %struct.s2n_debug_info, ptr %3856, i32 0, i32 0
  store ptr @.str.114, ptr %3857, align 8, !tbaa !11
  %3858 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3859 = getelementptr inbounds %struct.s2n_debug_info, ptr %3858, i32 0, i32 0
  %3860 = load ptr, ptr %3859, align 8, !tbaa !11
  %3861 = getelementptr inbounds i8, ptr %3860, i64 21
  %3862 = call ptr @strrchr(ptr noundef %3861, i32 noundef 47) #7
  %3863 = icmp ne ptr %3862, null
  br i1 %3863, label %3864, label %3871

3864:                                             ; preds = %3855
  %3865 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3866 = getelementptr inbounds %struct.s2n_debug_info, ptr %3865, i32 0, i32 0
  %3867 = load ptr, ptr %3866, align 8, !tbaa !11
  %3868 = getelementptr inbounds i8, ptr %3867, i64 21
  %3869 = call ptr @strrchr(ptr noundef %3868, i32 noundef 47) #7
  %3870 = getelementptr inbounds i8, ptr %3869, i64 1
  br label %3876

3871:                                             ; preds = %3855
  %3872 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3873 = getelementptr inbounds %struct.s2n_debug_info, ptr %3872, i32 0, i32 0
  %3874 = load ptr, ptr %3873, align 8, !tbaa !11
  %3875 = getelementptr inbounds i8, ptr %3874, i64 21
  br label %3876

3876:                                             ; preds = %3871, %3864
  %3877 = phi ptr [ %3870, %3864 ], [ %3875, %3871 ]
  %3878 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3879 = getelementptr inbounds %struct.s2n_debug_info, ptr %3878, i32 0, i32 1
  store ptr %3877, ptr %3879, align 8, !tbaa !13
  %3880 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3880, align 4, !tbaa !14
  %3881 = call i32 @s2n_calculate_stacktrace()
  br label %3882

3882:                                             ; preds = %3876
  br label %3883

3883:                                             ; preds = %3882
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3884:                                             ; No predecessors!
  br label %3885

3885:                                             ; preds = %3884
  br label %3886

3886:                                             ; preds = %3885, %3844
  br label %3887

3887:                                             ; preds = %3886
  br label %3888

3888:                                             ; preds = %3887
  br label %3889

3889:                                             ; preds = %3888
  %3890 = load ptr, ptr %34, align 8, !tbaa !5
  %3891 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3890, i32 0, i32 0
  %3892 = getelementptr inbounds [48 x i8], ptr %3891, i64 0, i64 0
  %3893 = load ptr, ptr %33, align 8, !tbaa !5
  %3894 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3893, i32 0, i32 0
  %3895 = getelementptr inbounds [48 x i8], ptr %3894, i64 0, i64 0
  %3896 = load i8, ptr %35, align 1, !tbaa !68
  %3897 = zext i8 %3896 to i64
  %3898 = call i32 @memcmp(ptr noundef %3892, ptr noundef %3895, i64 noundef %3897) #7
  %3899 = icmp eq i32 0, %3898
  br i1 %3899, label %3933, label %3900

3900:                                             ; preds = %3889
  br label %3901

3901:                                             ; preds = %3900
  br label %3902

3902:                                             ; preds = %3901
  %3903 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3904 = getelementptr inbounds %struct.s2n_debug_info, ptr %3903, i32 0, i32 0
  store ptr @.str.115, ptr %3904, align 8, !tbaa !11
  %3905 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3906 = getelementptr inbounds %struct.s2n_debug_info, ptr %3905, i32 0, i32 0
  %3907 = load ptr, ptr %3906, align 8, !tbaa !11
  %3908 = getelementptr inbounds i8, ptr %3907, i64 21
  %3909 = call ptr @strrchr(ptr noundef %3908, i32 noundef 47) #7
  %3910 = icmp ne ptr %3909, null
  br i1 %3910, label %3911, label %3918

3911:                                             ; preds = %3902
  %3912 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3913 = getelementptr inbounds %struct.s2n_debug_info, ptr %3912, i32 0, i32 0
  %3914 = load ptr, ptr %3913, align 8, !tbaa !11
  %3915 = getelementptr inbounds i8, ptr %3914, i64 21
  %3916 = call ptr @strrchr(ptr noundef %3915, i32 noundef 47) #7
  %3917 = getelementptr inbounds i8, ptr %3916, i64 1
  br label %3923

3918:                                             ; preds = %3902
  %3919 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3920 = getelementptr inbounds %struct.s2n_debug_info, ptr %3919, i32 0, i32 0
  %3921 = load ptr, ptr %3920, align 8, !tbaa !11
  %3922 = getelementptr inbounds i8, ptr %3921, i64 21
  br label %3923

3923:                                             ; preds = %3918, %3911
  %3924 = phi ptr [ %3917, %3911 ], [ %3922, %3918 ]
  %3925 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3926 = getelementptr inbounds %struct.s2n_debug_info, ptr %3925, i32 0, i32 1
  store ptr %3924, ptr %3926, align 8, !tbaa !13
  %3927 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3927, align 4, !tbaa !14
  %3928 = call i32 @s2n_calculate_stacktrace()
  br label %3929

3929:                                             ; preds = %3923
  br label %3930

3930:                                             ; preds = %3929
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3931:                                             ; No predecessors!
  br label %3932

3932:                                             ; preds = %3931
  br label %3933

3933:                                             ; preds = %3932, %3889
  br label %3934

3934:                                             ; preds = %3933
  br label %3935

3935:                                             ; preds = %3934
  br label %3936

3936:                                             ; preds = %3935
  %3937 = load ptr, ptr %34, align 8, !tbaa !5
  %3938 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3937, i32 0, i32 2
  %3939 = getelementptr inbounds [48 x i8], ptr %3938, i64 0, i64 0
  %3940 = load ptr, ptr %33, align 8, !tbaa !5
  %3941 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3940, i32 0, i32 2
  %3942 = getelementptr inbounds [48 x i8], ptr %3941, i64 0, i64 0
  %3943 = load i8, ptr %35, align 1, !tbaa !68
  %3944 = zext i8 %3943 to i64
  %3945 = call i32 @memcmp(ptr noundef %3939, ptr noundef %3942, i64 noundef %3944) #7
  %3946 = icmp eq i32 0, %3945
  br i1 %3946, label %3980, label %3947

3947:                                             ; preds = %3936
  br label %3948

3948:                                             ; preds = %3947
  br label %3949

3949:                                             ; preds = %3948
  %3950 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3951 = getelementptr inbounds %struct.s2n_debug_info, ptr %3950, i32 0, i32 0
  store ptr @.str.116, ptr %3951, align 8, !tbaa !11
  %3952 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3953 = getelementptr inbounds %struct.s2n_debug_info, ptr %3952, i32 0, i32 0
  %3954 = load ptr, ptr %3953, align 8, !tbaa !11
  %3955 = getelementptr inbounds i8, ptr %3954, i64 21
  %3956 = call ptr @strrchr(ptr noundef %3955, i32 noundef 47) #7
  %3957 = icmp ne ptr %3956, null
  br i1 %3957, label %3958, label %3965

3958:                                             ; preds = %3949
  %3959 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3960 = getelementptr inbounds %struct.s2n_debug_info, ptr %3959, i32 0, i32 0
  %3961 = load ptr, ptr %3960, align 8, !tbaa !11
  %3962 = getelementptr inbounds i8, ptr %3961, i64 21
  %3963 = call ptr @strrchr(ptr noundef %3962, i32 noundef 47) #7
  %3964 = getelementptr inbounds i8, ptr %3963, i64 1
  br label %3970

3965:                                             ; preds = %3949
  %3966 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3967 = getelementptr inbounds %struct.s2n_debug_info, ptr %3966, i32 0, i32 0
  %3968 = load ptr, ptr %3967, align 8, !tbaa !11
  %3969 = getelementptr inbounds i8, ptr %3968, i64 21
  br label %3970

3970:                                             ; preds = %3965, %3958
  %3971 = phi ptr [ %3964, %3958 ], [ %3969, %3965 ]
  %3972 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3973 = getelementptr inbounds %struct.s2n_debug_info, ptr %3972, i32 0, i32 1
  store ptr %3971, ptr %3973, align 8, !tbaa !13
  %3974 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %3974, align 4, !tbaa !14
  %3975 = call i32 @s2n_calculate_stacktrace()
  br label %3976

3976:                                             ; preds = %3970
  br label %3977

3977:                                             ; preds = %3976
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

3978:                                             ; No predecessors!
  br label %3979

3979:                                             ; preds = %3978
  br label %3980

3980:                                             ; preds = %3979, %3936
  br label %3981

3981:                                             ; preds = %3980
  br label %3982

3982:                                             ; preds = %3981
  br label %3983

3983:                                             ; preds = %3982
  %3984 = load ptr, ptr %34, align 8, !tbaa !5
  %3985 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3984, i32 0, i32 3
  %3986 = getelementptr inbounds [48 x i8], ptr %3985, i64 0, i64 0
  %3987 = load ptr, ptr %33, align 8, !tbaa !5
  %3988 = getelementptr inbounds %struct.s2n_tls13_secrets, ptr %3987, i32 0, i32 3
  %3989 = getelementptr inbounds [48 x i8], ptr %3988, i64 0, i64 0
  %3990 = load i8, ptr %35, align 1, !tbaa !68
  %3991 = zext i8 %3990 to i64
  %3992 = call i32 @memcmp(ptr noundef %3986, ptr noundef %3989, i64 noundef %3991) #7
  %3993 = icmp eq i32 0, %3992
  br i1 %3993, label %4027, label %3994

3994:                                             ; preds = %3983
  br label %3995

3995:                                             ; preds = %3994
  br label %3996

3996:                                             ; preds = %3995
  %3997 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %3998 = getelementptr inbounds %struct.s2n_debug_info, ptr %3997, i32 0, i32 0
  store ptr @.str.117, ptr %3998, align 8, !tbaa !11
  %3999 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %4000 = getelementptr inbounds %struct.s2n_debug_info, ptr %3999, i32 0, i32 0
  %4001 = load ptr, ptr %4000, align 8, !tbaa !11
  %4002 = getelementptr inbounds i8, ptr %4001, i64 21
  %4003 = call ptr @strrchr(ptr noundef %4002, i32 noundef 47) #7
  %4004 = icmp ne ptr %4003, null
  br i1 %4004, label %4005, label %4012

4005:                                             ; preds = %3996
  %4006 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %4007 = getelementptr inbounds %struct.s2n_debug_info, ptr %4006, i32 0, i32 0
  %4008 = load ptr, ptr %4007, align 8, !tbaa !11
  %4009 = getelementptr inbounds i8, ptr %4008, i64 21
  %4010 = call ptr @strrchr(ptr noundef %4009, i32 noundef 47) #7
  %4011 = getelementptr inbounds i8, ptr %4010, i64 1
  br label %4017

4012:                                             ; preds = %3996
  %4013 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %4014 = getelementptr inbounds %struct.s2n_debug_info, ptr %4013, i32 0, i32 0
  %4015 = load ptr, ptr %4014, align 8, !tbaa !11
  %4016 = getelementptr inbounds i8, ptr %4015, i64 21
  br label %4017

4017:                                             ; preds = %4012, %4005
  %4018 = phi ptr [ %4011, %4005 ], [ %4016, %4012 ]
  %4019 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %4020 = getelementptr inbounds %struct.s2n_debug_info, ptr %4019, i32 0, i32 1
  store ptr %4018, ptr %4020, align 8, !tbaa !13
  %4021 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %4021, align 4, !tbaa !14
  %4022 = call i32 @s2n_calculate_stacktrace()
  br label %4023

4023:                                             ; preds = %4017
  br label %4024

4024:                                             ; preds = %4023
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4025:                                             ; No predecessors!
  br label %4026

4026:                                             ; preds = %4025
  br label %4027

4027:                                             ; preds = %4026, %3983
  br label %4028

4028:                                             ; preds = %4027
  br label %4029

4029:                                             ; preds = %4028
  br label %4030

4030:                                             ; preds = %4029
  %4031 = call i32 @s2n_stuffer_free(ptr noundef %22)
  %4032 = icmp sgt i32 %4031, -1
  br i1 %4032, label %4034, label %4033

4033:                                             ; preds = %4030
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4034:                                             ; preds = %4030
  br label %4035

4035:                                             ; preds = %4034
  br label %4036

4036:                                             ; preds = %4035
  br label %4037

4037:                                             ; preds = %4036
  %4038 = call i32 @s2n_stuffer_free(ptr noundef %23)
  %4039 = icmp sgt i32 %4038, -1
  br i1 %4039, label %4041, label %4040

4040:                                             ; preds = %4037
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4041:                                             ; preds = %4037
  br label %4042

4042:                                             ; preds = %4041
  br label %4043

4043:                                             ; preds = %4042
  br label %4044

4044:                                             ; preds = %4043
  %4045 = load ptr, ptr %14, align 8, !tbaa !5
  %4046 = call i32 @s2n_connection_free(ptr noundef %4045)
  %4047 = icmp sgt i32 %4046, -1
  br i1 %4047, label %4049, label %4048

4048:                                             ; preds = %4044
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4049:                                             ; preds = %4044
  br label %4050

4050:                                             ; preds = %4049
  br label %4051

4051:                                             ; preds = %4050
  br label %4052

4052:                                             ; preds = %4051
  %4053 = load ptr, ptr %15, align 8, !tbaa !5
  %4054 = call i32 @s2n_connection_free(ptr noundef %4053)
  %4055 = icmp sgt i32 %4054, -1
  br i1 %4055, label %4057, label %4056

4056:                                             ; preds = %4052
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4057:                                             ; preds = %4052
  br label %4058

4058:                                             ; preds = %4057
  br label %4059

4059:                                             ; preds = %4058
  br label %4060

4060:                                             ; preds = %4059
  %4061 = load ptr, ptr %21, align 8, !tbaa !5
  %4062 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %4061)
  %4063 = icmp sgt i32 %4062, -1
  br i1 %4063, label %4065, label %4064

4064:                                             ; preds = %4060
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4065:                                             ; preds = %4060
  br label %4066

4066:                                             ; preds = %4065
  br label %4067

4067:                                             ; preds = %4066
  br label %4068

4068:                                             ; preds = %4067
  %4069 = load ptr, ptr %18, align 8, !tbaa !5
  %4070 = call i32 @s2n_config_free(ptr noundef %4069)
  %4071 = icmp sgt i32 %4070, -1
  br i1 %4071, label %4073, label %4072

4072:                                             ; preds = %4068
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4073:                                             ; preds = %4068
  br label %4074

4074:                                             ; preds = %4073
  br label %4075

4075:                                             ; preds = %4074
  br label %4076

4076:                                             ; preds = %4075
  %4077 = load ptr, ptr %17, align 8, !tbaa !5
  %4078 = call i32 @s2n_config_free(ptr noundef %4077)
  %4079 = icmp sgt i32 %4078, -1
  br i1 %4079, label %4081, label %4080

4080:                                             ; preds = %4076
  store i32 -1, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4081:                                             ; preds = %4076
  br label %4082

4082:                                             ; preds = %4081
  br label %4083

4083:                                             ; preds = %4082
  store i32 0, ptr %7, align 4
  store i32 1, ptr %16, align 4
  br label %4084

4084:                                             ; preds = %4083, %4080, %4072, %4064, %4056, %4048, %4040, %4033, %4024, %3977, %3930, %3883, %3838, %3793, %3748, %3706, %3661, %3616, %3571
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #8
  br label %4085

4085:                                             ; preds = %4084, %3527
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %4086

4086:                                             ; preds = %4085, %3478
  call void @llvm.lifetime.end.p0(i64 48, ptr %30) #8
  br label %4087

4087:                                             ; preds = %4086, %3414, %3373, %3331, %3290, %3242, %3196
  %4088 = call i32 @s2n_tls13_keys_free(ptr noundef %29)
  call void @llvm.lifetime.end.p0(i64 592, ptr %29) #8
  br label %4089

4089:                                             ; preds = %4087, %3188
  %4090 = call i32 @s2n_tls13_keys_free(ptr noundef %28)
  call void @llvm.lifetime.end.p0(i64 592, ptr %28) #8
  br label %4091

4091:                                             ; preds = %4089, %3180, %2976, %2928, %2883, %2835, %2790, %2746, %2702, %2658, %2615, %2571, %2527, %2483, %2442, %2238, %2190, %2145, %2097, %2052, %2009, %1962, %1915, %1871, %1828, %1781, %1734, %1689, %1679, %1640, %1630, %1592, %1582, %1544, %1534, %1496, %1486, %1448, %1438, %1400, %1390, %1350, %1309, %1301, %1291, %1250, %1240, %1202, %1192, %1150, %1139, %1095, %1051, %1007, %963, %920, %873, %826, %782, %728, %682, %630, %590, %580, %540, %498, %456, %416, %406, %362, %354, %346, %339
  call void @llvm.lifetime.end.p0(i64 40, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %22) #8
  br label %4092

4092:                                             ; preds = %4091, %332, %323, %314, %305, %296, %286, %278, %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 12000, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 12000, ptr %19) #8
  br label %4093

4093:                                             ; preds = %4092, %229, %190
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %4094

4094:                                             ; preds = %4093, %151, %112
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %4095

4095:                                             ; preds = %4094, %75
  %4096 = load i32, ptr %7, align 4
  ret i32 %4096
}

declare ptr @s2n_connection_new(i32 noundef) #5

declare ptr @s2n_config_new() #5

declare ptr @s2n_cert_chain_and_key_new() #5

declare i32 @s2n_read_test_pem(ptr noundef, ptr noundef, i64 noundef) #5

declare i32 @s2n_cert_chain_and_key_load_pem(ptr noundef, ptr noundef, ptr noundef) #5

declare i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef, ptr noundef) #5

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

declare i32 @s2n_stuffer_growable_alloc(ptr noundef, i32 noundef) #5

declare i32 @s2n_connection_set_io_stuffers(ptr noundef, ptr noundef, ptr noundef) #5

declare zeroext i1 @s2n_tls13_client_must_use_hybrid_kem_length_prefix(ptr noundef) #5

declare ptr @s2n_connection_get_kem_group_name(ptr noundef) #5

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

declare i32 @s2n_connection_get_key_exchange_group(ptr noundef, ptr noundef) #5

declare ptr @s2n_connection_get_curve(ptr noundef) #5

declare i32 @s2n_tls13_keys_free(ptr noundef) #5

declare i32 @s2n_tls13_keys_from_conn(ptr noundef, ptr noundef) #5

declare i32 @s2n_stuffer_free(ptr noundef) #5

declare i32 @s2n_connection_free(ptr noundef) #5

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) #5

declare i32 @s2n_config_free(ptr noundef) #5

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


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

%struct.s2n_debug_info = type { ptr, ptr }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_tls13_keys = type { i32, i32, i8, %struct.s2n_blob, %struct.s2n_blob, [48 x i8], [48 x i8], %struct.s2n_hmac_state }
%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 }

@_s2n_debug_info = external thread_local local_unnamed_addr global %struct.s2n_debug_info, align 8
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.32 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [111 x i8], align 1
@s2n_tls13_aes_256_gcm_sha384 = external global %struct.s2n_cipher_suite, align 8
@.str.101 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [111 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local i32 @s2n_conn_get_current_message_type(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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #3

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

declare i32 @s2n_calculate_stacktrace() local_unnamed_addr #5

declare zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef, i32 noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #4

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @s2n_test_tls13_pq_handshake(ptr noundef %0, ptr noundef %1, ptr noundef readonly %2, ptr noundef readonly %3, i1 noundef zeroext %4, i1 noundef zeroext %5) local_unnamed_addr #0 {
  %7 = alloca [12000 x i8], align 16
  %8 = alloca [12000 x i8], align 16
  %9 = alloca %struct.s2n_stuffer, align 8
  %10 = alloca %struct.s2n_stuffer, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %struct.s2n_tls13_keys, align 8
  %16 = alloca %struct.s2n_tls13_keys, align 8
  %17 = alloca [48 x i8], align 16
  %18 = icmp eq ptr %2, null
  %19 = icmp ne ptr %3, null
  %.not = xor i1 %18, %19
  br i1 %.not, label %20, label %28

20:                                               ; preds = %6
  %21 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.32, ptr %21, align 8, !tbaa !5
  %22 = tail call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.32, i64 21), i32 noundef 47) #7
  %.not276 = icmp eq ptr %22, null
  %23 = getelementptr inbounds i8, ptr %22, i64 1
  %24 = select i1 %.not276, ptr getelementptr inbounds (i8, ptr @.str.32, i64 21), ptr %23
  %25 = getelementptr inbounds i8, ptr %21, i64 8
  store ptr %24, ptr %25, align 8, !tbaa !10
  %26 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %26, align 4, !tbaa !11
  %27 = tail call i32 @s2n_calculate_stacktrace() #8
  br label %1058

28:                                               ; preds = %6
  %29 = tail call ptr @s2n_connection_new(i32 noundef 1) #8
  %.not277 = icmp eq ptr %29, null
  br i1 %.not277, label %30, label %38

30:                                               ; preds = %28
  %31 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.33, ptr %31, align 8, !tbaa !5
  %32 = tail call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.33, i64 21), i32 noundef 47) #7
  %.not278 = icmp eq ptr %32, null
  %33 = getelementptr inbounds i8, ptr %32, i64 1
  %34 = select i1 %.not278, ptr getelementptr inbounds (i8, ptr @.str.33, i64 21), ptr %33
  %35 = getelementptr inbounds i8, ptr %31, i64 8
  store ptr %34, ptr %35, align 8, !tbaa !10
  %36 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %36, align 4, !tbaa !11
  %37 = tail call i32 @s2n_calculate_stacktrace() #8
  br label %1058

38:                                               ; preds = %28
  %39 = tail call ptr @s2n_connection_new(i32 noundef 0) #8
  %.not279 = icmp eq ptr %39, null
  br i1 %.not279, label %40, label %48

40:                                               ; preds = %38
  %41 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.34, ptr %41, align 8, !tbaa !5
  %42 = tail call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.34, i64 21), i32 noundef 47) #7
  %.not280 = icmp eq ptr %42, null
  %43 = getelementptr inbounds i8, ptr %42, i64 1
  %44 = select i1 %.not280, ptr getelementptr inbounds (i8, ptr @.str.34, i64 21), ptr %43
  %45 = getelementptr inbounds i8, ptr %41, i64 8
  store ptr %44, ptr %45, align 8, !tbaa !10
  %46 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %46, align 4, !tbaa !11
  %47 = tail call i32 @s2n_calculate_stacktrace() #8
  br label %1058

48:                                               ; preds = %38
  %49 = tail call ptr @s2n_config_new() #8
  %.not281 = icmp eq ptr %49, null
  br i1 %.not281, label %50, label %58

50:                                               ; preds = %48
  %51 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.35, ptr %51, align 8, !tbaa !5
  %52 = tail call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.35, i64 21), i32 noundef 47) #7
  %.not282 = icmp eq ptr %52, null
  %53 = getelementptr inbounds i8, ptr %52, i64 1
  %54 = select i1 %.not282, ptr getelementptr inbounds (i8, ptr @.str.35, i64 21), ptr %53
  %55 = getelementptr inbounds i8, ptr %51, i64 8
  store ptr %54, ptr %55, align 8, !tbaa !10
  %56 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %56, align 4, !tbaa !11
  %57 = tail call i32 @s2n_calculate_stacktrace() #8
  br label %1058

58:                                               ; preds = %48
  %59 = tail call ptr @s2n_config_new() #8
  %.not283 = icmp eq ptr %59, null
  br i1 %.not283, label %60, label %68

60:                                               ; preds = %58
  %61 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.36, ptr %61, align 8, !tbaa !5
  %62 = tail call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.36, i64 21), i32 noundef 47) #7
  %.not284 = icmp eq ptr %62, null
  %63 = getelementptr inbounds i8, ptr %62, i64 1
  %64 = select i1 %.not284, ptr getelementptr inbounds (i8, ptr @.str.36, i64 21), ptr %63
  %65 = getelementptr inbounds i8, ptr %61, i64 8
  store ptr %64, ptr %65, align 8, !tbaa !10
  %66 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %66, align 4, !tbaa !11
  %67 = tail call i32 @s2n_calculate_stacktrace() #8
  br label %1058

68:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 12000, ptr nonnull %7) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(12000) %7, i8 0, i64 12000, i1 false)
  call void @llvm.lifetime.start.p0(i64 12000, ptr nonnull %8) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(12000) %8, i8 0, i64 12000, i1 false)
  %69 = tail call ptr @s2n_cert_chain_and_key_new() #8
  %.not285 = icmp eq ptr %69, null
  br i1 %.not285, label %70, label %78

70:                                               ; preds = %68
  %71 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.37, ptr %71, align 8, !tbaa !5
  %72 = tail call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.37, i64 21), i32 noundef 47) #7
  %.not286 = icmp eq ptr %72, null
  %73 = getelementptr inbounds i8, ptr %72, i64 1
  %74 = select i1 %.not286, ptr getelementptr inbounds (i8, ptr @.str.37, i64 21), ptr %73
  %75 = getelementptr inbounds i8, ptr %71, i64 8
  store ptr %74, ptr %75, align 8, !tbaa !10
  %76 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %76, align 4, !tbaa !11
  %77 = tail call i32 @s2n_calculate_stacktrace() #8
  br label %1057

78:                                               ; preds = %68
  %79 = call i32 @s2n_read_test_pem(ptr noundef nonnull @.str.38, ptr noundef nonnull %7, i64 noundef 12000) #8
  %80 = icmp sgt i32 %79, -1
  br i1 %80, label %81, label %1057

81:                                               ; preds = %78
  %82 = call i32 @s2n_read_test_pem(ptr noundef nonnull @.str.39, ptr noundef nonnull %8, i64 noundef 12000) #8
  %83 = icmp sgt i32 %82, -1
  br i1 %83, label %84, label %1057

84:                                               ; preds = %81
  %85 = call i32 @s2n_cert_chain_and_key_load_pem(ptr noundef nonnull %69, ptr noundef nonnull %7, ptr noundef nonnull %8) #8
  %86 = icmp sgt i32 %85, -1
  br i1 %86, label %87, label %1057

87:                                               ; preds = %84
  %88 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %49, ptr noundef nonnull %69) #8
  %89 = icmp sgt i32 %88, -1
  br i1 %89, label %90, label %1057

90:                                               ; preds = %87
  %91 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %59, ptr noundef nonnull %69) #8
  %92 = icmp sgt i32 %91, -1
  br i1 %92, label %93, label %1057

93:                                               ; preds = %90
  %94 = call i32 @s2n_connection_set_config(ptr noundef nonnull %29, ptr noundef nonnull %49) #8
  %95 = icmp sgt i32 %94, -1
  br i1 %95, label %96, label %1057

96:                                               ; preds = %93
  %97 = call i32 @s2n_connection_set_config(ptr noundef nonnull %39, ptr noundef nonnull %59) #8
  %98 = icmp sgt i32 %97, -1
  br i1 %98, label %99, label %1057

99:                                               ; preds = %96
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %9, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %10, i8 0, i64 40, i1 false)
  %100 = call i32 @s2n_stuffer_growable_alloc(ptr noundef nonnull %9, i32 noundef 2048) #8
  %101 = icmp sgt i32 %100, -1
  br i1 %101, label %102, label %1056

102:                                              ; preds = %99
  %103 = call i32 @s2n_stuffer_growable_alloc(ptr noundef nonnull %10, i32 noundef 2048) #8
  %104 = icmp sgt i32 %103, -1
  br i1 %104, label %105, label %1056

105:                                              ; preds = %102
  %106 = call i32 @s2n_connection_set_io_stuffers(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef nonnull %29) #8
  %107 = icmp sgt i32 %106, -1
  br i1 %107, label %108, label %1056

108:                                              ; preds = %105
  %109 = call i32 @s2n_connection_set_io_stuffers(ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %39) #8
  %110 = icmp sgt i32 %109, -1
  br i1 %110, label %111, label %1056

111:                                              ; preds = %108
  %112 = getelementptr inbounds i8, ptr %29, i64 16
  store ptr %0, ptr %112, align 8, !tbaa !13
  %113 = getelementptr inbounds i8, ptr %39, i64 16
  store ptr %1, ptr %113, align 8, !tbaa !13
  %114 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %29)
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %124, label %116

116:                                              ; preds = %111
  %117 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.40, ptr %117, align 8, !tbaa !5
  %118 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.40, i64 21), i32 noundef 47) #7
  %.not287 = icmp eq ptr %118, null
  %119 = getelementptr inbounds i8, ptr %118, i64 1
  %120 = select i1 %.not287, ptr getelementptr inbounds (i8, ptr @.str.40, i64 21), ptr %119
  %121 = getelementptr inbounds i8, ptr %117, i64 8
  store ptr %120, ptr %121, align 8, !tbaa !10
  %122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %122, align 4, !tbaa !11
  %123 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

124:                                              ; preds = %111
  %125 = call i32 @s2n_handshake_write_io(ptr noundef nonnull %29)
  %126 = icmp sgt i32 %125, -1
  br i1 %126, label %127, label %1056

127:                                              ; preds = %124
  %128 = getelementptr inbounds i8, ptr %29, i64 220
  %129 = load i8, ptr %128, align 4, !tbaa !41
  %130 = icmp eq i8 %129, 34
  br i1 %130, label %139, label %131

131:                                              ; preds = %127
  %132 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.41, ptr %132, align 8, !tbaa !5
  %133 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.41, i64 21), i32 noundef 47) #7
  %.not288 = icmp eq ptr %133, null
  %134 = getelementptr inbounds i8, ptr %133, i64 1
  %135 = select i1 %.not288, ptr getelementptr inbounds (i8, ptr @.str.41, i64 21), ptr %134
  %136 = getelementptr inbounds i8, ptr %132, i64 8
  store ptr %135, ptr %136, align 8, !tbaa !10
  %137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %137, align 4, !tbaa !11
  %138 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

139:                                              ; preds = %127
  %140 = getelementptr inbounds i8, ptr %39, i64 220
  %141 = load i8, ptr %140, align 4, !tbaa !41
  %142 = icmp eq i8 %141, 0
  br i1 %142, label %151, label %143

143:                                              ; preds = %139
  %144 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.42, ptr %144, align 8, !tbaa !5
  %145 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.42, i64 21), i32 noundef 47) #7
  %.not289 = icmp eq ptr %145, null
  %146 = getelementptr inbounds i8, ptr %145, i64 1
  %147 = select i1 %.not289, ptr getelementptr inbounds (i8, ptr @.str.42, i64 21), ptr %146
  %148 = getelementptr inbounds i8, ptr %144, i64 8
  store ptr %147, ptr %148, align 8, !tbaa !10
  %149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %149, align 4, !tbaa !11
  %150 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

151:                                              ; preds = %139
  %152 = getelementptr inbounds i8, ptr %29, i64 2172
  %153 = load i32, ptr %152, align 4, !tbaa !42
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %163, label %155

155:                                              ; preds = %151
  %156 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.43, ptr %156, align 8, !tbaa !5
  %157 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.43, i64 21), i32 noundef 47) #7
  %.not290 = icmp eq ptr %157, null
  %158 = getelementptr inbounds i8, ptr %157, i64 1
  %159 = select i1 %.not290, ptr getelementptr inbounds (i8, ptr @.str.43, i64 21), ptr %158
  %160 = getelementptr inbounds i8, ptr %156, i64 8
  store ptr %159, ptr %160, align 8, !tbaa !10
  %161 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %161, align 4, !tbaa !11
  %162 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

163:                                              ; preds = %151
  %164 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %39)
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %174, label %166

166:                                              ; preds = %163
  %167 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.44, ptr %167, align 8, !tbaa !5
  %168 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.44, i64 21), i32 noundef 47) #7
  %.not291 = icmp eq ptr %168, null
  %169 = getelementptr inbounds i8, ptr %168, i64 1
  %170 = select i1 %.not291, ptr getelementptr inbounds (i8, ptr @.str.44, i64 21), ptr %169
  %171 = getelementptr inbounds i8, ptr %167, i64 8
  store ptr %170, ptr %171, align 8, !tbaa !10
  %172 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %172, align 4, !tbaa !11
  %173 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

174:                                              ; preds = %163
  %175 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %39)
  %176 = icmp sgt i32 %175, -1
  br i1 %176, label %177, label %1056

177:                                              ; preds = %174
  %178 = load i8, ptr %140, align 4, !tbaa !41
  %179 = icmp eq i8 %178, 34
  br i1 %179, label %188, label %180

180:                                              ; preds = %177
  %181 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.45, ptr %181, align 8, !tbaa !5
  %182 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.45, i64 21), i32 noundef 47) #7
  %.not292 = icmp eq ptr %182, null
  %183 = getelementptr inbounds i8, ptr %182, i64 1
  %184 = select i1 %.not292, ptr getelementptr inbounds (i8, ptr @.str.45, i64 21), ptr %183
  %185 = getelementptr inbounds i8, ptr %181, i64 8
  store ptr %184, ptr %185, align 8, !tbaa !10
  %186 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %186, align 4, !tbaa !11
  %187 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

188:                                              ; preds = %177
  br i1 %18, label %280, label %189

189:                                              ; preds = %188
  %190 = getelementptr inbounds i8, ptr %29, i64 920
  %191 = load i8, ptr %190, align 8, !tbaa !43, !range !44, !noundef !45
  %192 = zext i1 %5 to i8
  %193 = icmp eq i8 %191, %192
  br i1 %193, label %202, label %194

194:                                              ; preds = %189
  %195 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.46, ptr %195, align 8, !tbaa !5
  %196 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.46, i64 21), i32 noundef 47) #7
  %.not298 = icmp eq ptr %196, null
  %197 = getelementptr inbounds i8, ptr %196, i64 1
  %198 = select i1 %.not298, ptr getelementptr inbounds (i8, ptr @.str.46, i64 21), ptr %197
  %199 = getelementptr inbounds i8, ptr %195, i64 8
  store ptr %198, ptr %199, align 8, !tbaa !10
  %200 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %200, align 4, !tbaa !11
  %201 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

202:                                              ; preds = %189
  %203 = getelementptr inbounds i8, ptr %0, i64 16
  %204 = load ptr, ptr %203, align 8, !tbaa !46
  %205 = call zeroext i1 @s2n_tls13_client_must_use_hybrid_kem_length_prefix(ptr noundef %204) #8
  %206 = xor i1 %205, %5
  br i1 %206, label %207, label %215

207:                                              ; preds = %202
  %208 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.47, ptr %208, align 8, !tbaa !5
  %209 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.47, i64 21), i32 noundef 47) #7
  %.not299 = icmp eq ptr %209, null
  %210 = getelementptr inbounds i8, ptr %209, i64 1
  %211 = select i1 %.not299, ptr getelementptr inbounds (i8, ptr @.str.47, i64 21), ptr %210
  %212 = getelementptr inbounds i8, ptr %208, i64 8
  store ptr %211, ptr %212, align 8, !tbaa !10
  %213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %213, align 4, !tbaa !11
  %214 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

215:                                              ; preds = %202
  %216 = getelementptr inbounds i8, ptr %39, i64 920
  %217 = load i8, ptr %216, align 8, !tbaa !43, !range !44, !noundef !45
  %218 = load i8, ptr %190, align 8, !tbaa !43, !range !44, !noundef !45
  %219 = icmp eq i8 %217, %218
  br i1 %219, label %228, label %220

220:                                              ; preds = %215
  %221 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.48, ptr %221, align 8, !tbaa !5
  %222 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.48, i64 21), i32 noundef 47) #7
  %.not300 = icmp eq ptr %222, null
  %223 = getelementptr inbounds i8, ptr %222, i64 1
  %224 = select i1 %.not300, ptr getelementptr inbounds (i8, ptr @.str.48, i64 21), ptr %223
  %225 = getelementptr inbounds i8, ptr %221, i64 8
  store ptr %224, ptr %225, align 8, !tbaa !10
  %226 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %226, align 4, !tbaa !11
  %227 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

228:                                              ; preds = %215
  %229 = getelementptr inbounds i8, ptr %39, i64 720
  %230 = load ptr, ptr %229, align 8, !tbaa !48
  %231 = icmp eq ptr %230, %2
  br i1 %231, label %240, label %232

232:                                              ; preds = %228
  %233 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.49, ptr %233, align 8, !tbaa !5
  %234 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.49, i64 21), i32 noundef 47) #7
  %.not301 = icmp eq ptr %234, null
  %235 = getelementptr inbounds i8, ptr %234, i64 1
  %236 = select i1 %.not301, ptr getelementptr inbounds (i8, ptr @.str.49, i64 21), ptr %235
  %237 = getelementptr inbounds i8, ptr %233, i64 8
  store ptr %236, ptr %237, align 8, !tbaa !10
  %238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %238, align 4, !tbaa !11
  %239 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

240:                                              ; preds = %228
  %241 = getelementptr inbounds i8, ptr %2, i64 24
  %242 = load ptr, ptr %241, align 8, !tbaa !49
  %243 = getelementptr inbounds i8, ptr %39, i64 728
  %244 = load ptr, ptr %243, align 8, !tbaa !51
  %245 = icmp eq ptr %242, %244
  br i1 %245, label %254, label %246

246:                                              ; preds = %240
  %247 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.50, ptr %247, align 8, !tbaa !5
  %248 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.50, i64 21), i32 noundef 47) #7
  %.not302 = icmp eq ptr %248, null
  %249 = getelementptr inbounds i8, ptr %248, i64 1
  %250 = select i1 %.not302, ptr getelementptr inbounds (i8, ptr @.str.50, i64 21), ptr %249
  %251 = getelementptr inbounds i8, ptr %247, i64 8
  store ptr %250, ptr %251, align 8, !tbaa !10
  %252 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %252, align 4, !tbaa !11
  %253 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

254:                                              ; preds = %240
  %255 = getelementptr inbounds i8, ptr %2, i64 16
  %256 = load ptr, ptr %255, align 8, !tbaa !52
  %257 = getelementptr inbounds i8, ptr %39, i64 816
  %258 = load ptr, ptr %257, align 8, !tbaa !53
  %259 = icmp eq ptr %256, %258
  br i1 %259, label %268, label %260

260:                                              ; preds = %254
  %261 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.51, ptr %261, align 8, !tbaa !5
  %262 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.51, i64 21), i32 noundef 47) #7
  %.not303 = icmp eq ptr %262, null
  %263 = getelementptr inbounds i8, ptr %262, i64 1
  %264 = select i1 %.not303, ptr getelementptr inbounds (i8, ptr @.str.51, i64 21), ptr %263
  %265 = getelementptr inbounds i8, ptr %261, i64 8
  store ptr %264, ptr %265, align 8, !tbaa !10
  %266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %266, align 4, !tbaa !11
  %267 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

268:                                              ; preds = %254
  %269 = getelementptr inbounds i8, ptr %39, i64 656
  %270 = load ptr, ptr %269, align 8, !tbaa !54
  %271 = icmp eq ptr %270, null
  br i1 %271, label %328, label %272

272:                                              ; preds = %268
  %273 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.52, ptr %273, align 8, !tbaa !5
  %274 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.52, i64 21), i32 noundef 47) #7
  %.not304 = icmp eq ptr %274, null
  %275 = getelementptr inbounds i8, ptr %274, i64 1
  %276 = select i1 %.not304, ptr getelementptr inbounds (i8, ptr @.str.52, i64 21), ptr %275
  %277 = getelementptr inbounds i8, ptr %273, i64 8
  store ptr %276, ptr %277, align 8, !tbaa !10
  %278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %278, align 4, !tbaa !11
  %279 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

280:                                              ; preds = %188
  %281 = getelementptr inbounds i8, ptr %39, i64 720
  %282 = load ptr, ptr %281, align 8, !tbaa !48
  %283 = icmp eq ptr %282, null
  br i1 %283, label %292, label %284

284:                                              ; preds = %280
  %285 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.53, ptr %285, align 8, !tbaa !5
  %286 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.53, i64 21), i32 noundef 47) #7
  %.not294 = icmp eq ptr %286, null
  %287 = getelementptr inbounds i8, ptr %286, i64 1
  %288 = select i1 %.not294, ptr getelementptr inbounds (i8, ptr @.str.53, i64 21), ptr %287
  %289 = getelementptr inbounds i8, ptr %285, i64 8
  store ptr %288, ptr %289, align 8, !tbaa !10
  %290 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %290, align 4, !tbaa !11
  %291 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

292:                                              ; preds = %280
  %293 = getelementptr inbounds i8, ptr %39, i64 728
  %294 = load ptr, ptr %293, align 8, !tbaa !51
  %295 = icmp eq ptr %294, null
  br i1 %295, label %304, label %296

296:                                              ; preds = %292
  %297 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.54, ptr %297, align 8, !tbaa !5
  %298 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.54, i64 21), i32 noundef 47) #7
  %.not295 = icmp eq ptr %298, null
  %299 = getelementptr inbounds i8, ptr %298, i64 1
  %300 = select i1 %.not295, ptr getelementptr inbounds (i8, ptr @.str.54, i64 21), ptr %299
  %301 = getelementptr inbounds i8, ptr %297, i64 8
  store ptr %300, ptr %301, align 8, !tbaa !10
  %302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %302, align 4, !tbaa !11
  %303 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

304:                                              ; preds = %292
  %305 = getelementptr inbounds i8, ptr %39, i64 816
  %306 = load ptr, ptr %305, align 8, !tbaa !53
  %307 = icmp eq ptr %306, null
  br i1 %307, label %316, label %308

308:                                              ; preds = %304
  %309 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.55, ptr %309, align 8, !tbaa !5
  %310 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.55, i64 21), i32 noundef 47) #7
  %.not296 = icmp eq ptr %310, null
  %311 = getelementptr inbounds i8, ptr %310, i64 1
  %312 = select i1 %.not296, ptr getelementptr inbounds (i8, ptr @.str.55, i64 21), ptr %311
  %313 = getelementptr inbounds i8, ptr %309, i64 8
  store ptr %312, ptr %313, align 8, !tbaa !10
  %314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %314, align 4, !tbaa !11
  %315 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

316:                                              ; preds = %304
  %317 = getelementptr inbounds i8, ptr %39, i64 656
  %318 = load ptr, ptr %317, align 8, !tbaa !54
  %319 = icmp eq ptr %318, %3
  br i1 %319, label %328, label %320

320:                                              ; preds = %316
  %321 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.56, ptr %321, align 8, !tbaa !5
  %322 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.56, i64 21), i32 noundef 47) #7
  %.not297 = icmp eq ptr %322, null
  %323 = getelementptr inbounds i8, ptr %322, i64 1
  %324 = select i1 %.not297, ptr getelementptr inbounds (i8, ptr @.str.56, i64 21), ptr %323
  %325 = getelementptr inbounds i8, ptr %321, i64 8
  store ptr %324, ptr %325, align 8, !tbaa !10
  %326 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %326, align 4, !tbaa !11
  %327 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

328:                                              ; preds = %268, %316
  %329 = call i32 @s2n_conn_set_handshake_type(ptr noundef nonnull %39)
  %330 = icmp sgt i32 %329, -1
  br i1 %330, label %331, label %1056

331:                                              ; preds = %328
  %332 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef nonnull %39, i32 noundef 16) #8
  %333 = xor i1 %332, %4
  br i1 %333, label %334, label %342

334:                                              ; preds = %331
  %335 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.57, ptr %335, align 8, !tbaa !5
  %336 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.57, i64 21), i32 noundef 47) #7
  %.not305 = icmp eq ptr %336, null
  %337 = getelementptr inbounds i8, ptr %336, i64 1
  %338 = select i1 %.not305, ptr getelementptr inbounds (i8, ptr @.str.57, i64 21), ptr %337
  %339 = getelementptr inbounds i8, ptr %335, i64 8
  store ptr %338, ptr %339, align 8, !tbaa !10
  %340 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %340, align 4, !tbaa !11
  %341 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

342:                                              ; preds = %331
  %343 = call i32 @s2n_handshake_write_io(ptr noundef nonnull %39)
  %344 = icmp sgt i32 %343, -1
  br i1 %344, label %345, label %1056

345:                                              ; preds = %342
  %346 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %39)
  %347 = icmp eq i32 %346, 14
  br i1 %347, label %356, label %348

348:                                              ; preds = %345
  %349 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.58, ptr %349, align 8, !tbaa !5
  %350 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.58, i64 21), i32 noundef 47) #7
  %.not306 = icmp eq ptr %350, null
  %351 = getelementptr inbounds i8, ptr %350, i64 1
  %352 = select i1 %.not306, ptr getelementptr inbounds (i8, ptr @.str.58, i64 21), ptr %351
  %353 = getelementptr inbounds i8, ptr %349, i64 8
  store ptr %352, ptr %353, align 8, !tbaa !10
  %354 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %354, align 4, !tbaa !11
  %355 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

356:                                              ; preds = %345
  %357 = call i32 @s2n_handshake_write_io(ptr noundef nonnull %39)
  %358 = icmp sgt i32 %357, -1
  br i1 %358, label %359, label %1056

359:                                              ; preds = %356
  br i1 %4, label %360, label %472

360:                                              ; preds = %359
  %361 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %29)
  %362 = icmp eq i32 %361, 1
  br i1 %362, label %371, label %363

363:                                              ; preds = %360
  %364 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.59, ptr %364, align 8, !tbaa !5
  %365 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.59, i64 21), i32 noundef 47) #7
  %.not307 = icmp eq ptr %365, null
  %366 = getelementptr inbounds i8, ptr %365, i64 1
  %367 = select i1 %.not307, ptr getelementptr inbounds (i8, ptr @.str.59, i64 21), ptr %366
  %368 = getelementptr inbounds i8, ptr %364, i64 8
  store ptr %367, ptr %368, align 8, !tbaa !10
  %369 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %369, align 4, !tbaa !11
  %370 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

371:                                              ; preds = %360
  %372 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %29)
  %373 = icmp sgt i32 %372, -1
  br i1 %373, label %374, label %1056

374:                                              ; preds = %371
  %375 = call i32 @s2n_conn_set_handshake_type(ptr noundef nonnull %29)
  %376 = icmp sgt i32 %375, -1
  br i1 %376, label %377, label %1056

377:                                              ; preds = %374
  %378 = load i32, ptr %152, align 4, !tbaa !42
  %379 = and i32 %378, 16
  %.not308 = icmp eq i32 %379, 0
  br i1 %.not308, label %380, label %388

380:                                              ; preds = %377
  %381 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.60, ptr %381, align 8, !tbaa !5
  %382 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.60, i64 21), i32 noundef 47) #7
  %.not309 = icmp eq ptr %382, null
  %383 = getelementptr inbounds i8, ptr %382, i64 1
  %384 = select i1 %.not309, ptr getelementptr inbounds (i8, ptr @.str.60, i64 21), ptr %383
  %385 = getelementptr inbounds i8, ptr %381, i64 8
  store ptr %384, ptr %385, align 8, !tbaa !10
  %386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %386, align 4, !tbaa !11
  %387 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

388:                                              ; preds = %377
  %389 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %29)
  %390 = icmp eq i32 %389, 11
  br i1 %390, label %399, label %391

391:                                              ; preds = %388
  %392 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.61, ptr %392, align 8, !tbaa !5
  %393 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.61, i64 21), i32 noundef 47) #7
  %.not310 = icmp eq ptr %393, null
  %394 = getelementptr inbounds i8, ptr %393, i64 1
  %395 = select i1 %.not310, ptr getelementptr inbounds (i8, ptr @.str.61, i64 21), ptr %394
  %396 = getelementptr inbounds i8, ptr %392, i64 8
  store ptr %395, ptr %396, align 8, !tbaa !10
  %397 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %397, align 4, !tbaa !11
  %398 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

399:                                              ; preds = %388
  %400 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %29)
  %401 = icmp sgt i32 %400, -1
  br i1 %401, label %402, label %1056

402:                                              ; preds = %399
  %403 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %29)
  %404 = icmp eq i32 %403, 11
  br i1 %404, label %413, label %405

405:                                              ; preds = %402
  %406 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.62, ptr %406, align 8, !tbaa !5
  %407 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.62, i64 21), i32 noundef 47) #7
  %.not311 = icmp eq ptr %407, null
  %408 = getelementptr inbounds i8, ptr %407, i64 1
  %409 = select i1 %.not311, ptr getelementptr inbounds (i8, ptr @.str.62, i64 21), ptr %408
  %410 = getelementptr inbounds i8, ptr %406, i64 8
  store ptr %409, ptr %410, align 8, !tbaa !10
  %411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %411, align 4, !tbaa !11
  %412 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

413:                                              ; preds = %402
  %414 = call i32 @s2n_handshake_write_io(ptr noundef nonnull %29)
  %415 = icmp sgt i32 %414, -1
  br i1 %415, label %416, label %1056

416:                                              ; preds = %413
  %417 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %29)
  %418 = icmp eq i32 %417, 0
  br i1 %418, label %427, label %419

419:                                              ; preds = %416
  %420 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.63, ptr %420, align 8, !tbaa !5
  %421 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.63, i64 21), i32 noundef 47) #7
  %.not312 = icmp eq ptr %421, null
  %422 = getelementptr inbounds i8, ptr %421, i64 1
  %423 = select i1 %.not312, ptr getelementptr inbounds (i8, ptr @.str.63, i64 21), ptr %422
  %424 = getelementptr inbounds i8, ptr %420, i64 8
  store ptr %423, ptr %424, align 8, !tbaa !10
  %425 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %425, align 4, !tbaa !11
  %426 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

427:                                              ; preds = %416
  %428 = call i32 @s2n_handshake_write_io(ptr noundef nonnull %29)
  %429 = icmp sgt i32 %428, -1
  br i1 %429, label %430, label %1056

430:                                              ; preds = %427
  %431 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %39)
  %432 = icmp eq i32 %431, 0
  br i1 %432, label %441, label %433

433:                                              ; preds = %430
  %434 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.64, ptr %434, align 8, !tbaa !5
  %435 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.64, i64 21), i32 noundef 47) #7
  %.not313 = icmp eq ptr %435, null
  %436 = getelementptr inbounds i8, ptr %435, i64 1
  %437 = select i1 %.not313, ptr getelementptr inbounds (i8, ptr @.str.64, i64 21), ptr %436
  %438 = getelementptr inbounds i8, ptr %434, i64 8
  store ptr %437, ptr %438, align 8, !tbaa !10
  %439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %439, align 4, !tbaa !11
  %440 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

441:                                              ; preds = %430
  %442 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %39)
  %443 = icmp sgt i32 %442, -1
  br i1 %443, label %444, label %1056

444:                                              ; preds = %441
  %445 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %39)
  %446 = icmp eq i32 %445, 0
  br i1 %446, label %455, label %447

447:                                              ; preds = %444
  %448 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.65, ptr %448, align 8, !tbaa !5
  %449 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.65, i64 21), i32 noundef 47) #7
  %.not314 = icmp eq ptr %449, null
  %450 = getelementptr inbounds i8, ptr %449, i64 1
  %451 = select i1 %.not314, ptr getelementptr inbounds (i8, ptr @.str.65, i64 21), ptr %450
  %452 = getelementptr inbounds i8, ptr %448, i64 8
  store ptr %451, ptr %452, align 8, !tbaa !10
  %453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %453, align 4, !tbaa !11
  %454 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

455:                                              ; preds = %444
  %456 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %39)
  %457 = icmp sgt i32 %456, -1
  br i1 %457, label %458, label %1056

458:                                              ; preds = %455
  %459 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %39)
  %460 = icmp eq i32 %459, 1
  br i1 %460, label %469, label %461

461:                                              ; preds = %458
  %462 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.66, ptr %462, align 8, !tbaa !5
  %463 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.66, i64 21), i32 noundef 47) #7
  %.not315 = icmp eq ptr %463, null
  %464 = getelementptr inbounds i8, ptr %463, i64 1
  %465 = select i1 %.not315, ptr getelementptr inbounds (i8, ptr @.str.66, i64 21), ptr %464
  %466 = getelementptr inbounds i8, ptr %462, i64 8
  store ptr %465, ptr %466, align 8, !tbaa !10
  %467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %467, align 4, !tbaa !11
  %468 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

469:                                              ; preds = %458
  %470 = call i32 @s2n_handshake_write_io(ptr noundef nonnull %39)
  %471 = icmp sgt i32 %470, -1
  br i1 %471, label %472, label %1056

472:                                              ; preds = %359, %469
  %473 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %29)
  %474 = icmp eq i32 %473, 1
  br i1 %474, label %483, label %475

475:                                              ; preds = %472
  %476 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.67, ptr %476, align 8, !tbaa !5
  %477 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.67, i64 21), i32 noundef 47) #7
  %.not316 = icmp eq ptr %477, null
  %478 = getelementptr inbounds i8, ptr %477, i64 1
  %479 = select i1 %.not316, ptr getelementptr inbounds (i8, ptr @.str.67, i64 21), ptr %478
  %480 = getelementptr inbounds i8, ptr %476, i64 8
  store ptr %479, ptr %480, align 8, !tbaa !10
  %481 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %481, align 4, !tbaa !11
  %482 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

483:                                              ; preds = %472
  %484 = call i32 @s2n_handshake_read_io(ptr noundef nonnull %29)
  %485 = icmp sgt i32 %484, -1
  br i1 %485, label %486, label %1056

486:                                              ; preds = %483
  %487 = getelementptr inbounds i8, ptr %29, i64 720
  %488 = load ptr, ptr %487, align 8, !tbaa !48
  br i1 %18, label %662, label %489

489:                                              ; preds = %486
  %490 = icmp eq ptr %488, %2
  br i1 %490, label %499, label %491

491:                                              ; preds = %489
  %492 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.68, ptr %492, align 8, !tbaa !5
  %493 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.68, i64 21), i32 noundef 47) #7
  %.not336 = icmp eq ptr %493, null
  %494 = getelementptr inbounds i8, ptr %493, i64 1
  %495 = select i1 %.not336, ptr getelementptr inbounds (i8, ptr @.str.68, i64 21), ptr %494
  %496 = getelementptr inbounds i8, ptr %492, i64 8
  store ptr %495, ptr %496, align 8, !tbaa !10
  %497 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %497, align 4, !tbaa !11
  %498 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

499:                                              ; preds = %489
  %500 = getelementptr inbounds i8, ptr %2, i64 24
  %501 = load ptr, ptr %500, align 8, !tbaa !49
  %502 = getelementptr inbounds i8, ptr %29, i64 728
  %503 = load ptr, ptr %502, align 8, !tbaa !51
  %504 = icmp eq ptr %501, %503
  br i1 %504, label %513, label %505

505:                                              ; preds = %499
  %506 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.69, ptr %506, align 8, !tbaa !5
  %507 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.69, i64 21), i32 noundef 47) #7
  %.not337 = icmp eq ptr %507, null
  %508 = getelementptr inbounds i8, ptr %507, i64 1
  %509 = select i1 %.not337, ptr getelementptr inbounds (i8, ptr @.str.69, i64 21), ptr %508
  %510 = getelementptr inbounds i8, ptr %506, i64 8
  store ptr %509, ptr %510, align 8, !tbaa !10
  %511 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %511, align 4, !tbaa !11
  %512 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

513:                                              ; preds = %499
  %514 = getelementptr inbounds i8, ptr %2, i64 16
  %515 = load ptr, ptr %514, align 8, !tbaa !52
  %516 = getelementptr inbounds i8, ptr %29, i64 816
  %517 = load ptr, ptr %516, align 8, !tbaa !53
  %518 = icmp eq ptr %515, %517
  br i1 %518, label %527, label %519

519:                                              ; preds = %513
  %520 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.70, ptr %520, align 8, !tbaa !5
  %521 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.70, i64 21), i32 noundef 47) #7
  %.not338 = icmp eq ptr %521, null
  %522 = getelementptr inbounds i8, ptr %521, i64 1
  %523 = select i1 %.not338, ptr getelementptr inbounds (i8, ptr @.str.70, i64 21), ptr %522
  %524 = getelementptr inbounds i8, ptr %520, i64 8
  store ptr %523, ptr %524, align 8, !tbaa !10
  %525 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %525, align 4, !tbaa !11
  %526 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

527:                                              ; preds = %513
  %528 = getelementptr inbounds i8, ptr %29, i64 656
  %529 = load ptr, ptr %528, align 8, !tbaa !54
  %530 = icmp eq ptr %529, null
  br i1 %530, label %539, label %531

531:                                              ; preds = %527
  %532 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.71, ptr %532, align 8, !tbaa !5
  %533 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.71, i64 21), i32 noundef 47) #7
  %.not339 = icmp eq ptr %533, null
  %534 = getelementptr inbounds i8, ptr %533, i64 1
  %535 = select i1 %.not339, ptr getelementptr inbounds (i8, ptr @.str.71, i64 21), ptr %534
  %536 = getelementptr inbounds i8, ptr %532, i64 8
  store ptr %535, ptr %536, align 8, !tbaa !10
  %537 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %537, align 4, !tbaa !11
  %538 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

539:                                              ; preds = %527
  %540 = getelementptr inbounds i8, ptr %39, i64 720
  %541 = load ptr, ptr %540, align 8, !tbaa !48
  %542 = icmp eq ptr %541, %2
  br i1 %542, label %551, label %543

543:                                              ; preds = %539
  %544 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.72, ptr %544, align 8, !tbaa !5
  %545 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.72, i64 21), i32 noundef 47) #7
  %.not340 = icmp eq ptr %545, null
  %546 = getelementptr inbounds i8, ptr %545, i64 1
  %547 = select i1 %.not340, ptr getelementptr inbounds (i8, ptr @.str.72, i64 21), ptr %546
  %548 = getelementptr inbounds i8, ptr %544, i64 8
  store ptr %547, ptr %548, align 8, !tbaa !10
  %549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %549, align 4, !tbaa !11
  %550 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

551:                                              ; preds = %539
  %552 = getelementptr inbounds i8, ptr %39, i64 728
  %553 = load ptr, ptr %552, align 8, !tbaa !51
  %554 = icmp eq ptr %501, %553
  br i1 %554, label %563, label %555

555:                                              ; preds = %551
  %556 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.73, ptr %556, align 8, !tbaa !5
  %557 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.73, i64 21), i32 noundef 47) #7
  %.not341 = icmp eq ptr %557, null
  %558 = getelementptr inbounds i8, ptr %557, i64 1
  %559 = select i1 %.not341, ptr getelementptr inbounds (i8, ptr @.str.73, i64 21), ptr %558
  %560 = getelementptr inbounds i8, ptr %556, i64 8
  store ptr %559, ptr %560, align 8, !tbaa !10
  %561 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %561, align 4, !tbaa !11
  %562 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

563:                                              ; preds = %551
  %564 = getelementptr inbounds i8, ptr %39, i64 816
  %565 = load ptr, ptr %564, align 8, !tbaa !53
  %566 = icmp eq ptr %515, %565
  br i1 %566, label %575, label %567

567:                                              ; preds = %563
  %568 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.74, ptr %568, align 8, !tbaa !5
  %569 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.74, i64 21), i32 noundef 47) #7
  %.not342 = icmp eq ptr %569, null
  %570 = getelementptr inbounds i8, ptr %569, i64 1
  %571 = select i1 %.not342, ptr getelementptr inbounds (i8, ptr @.str.74, i64 21), ptr %570
  %572 = getelementptr inbounds i8, ptr %568, i64 8
  store ptr %571, ptr %572, align 8, !tbaa !10
  %573 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %573, align 4, !tbaa !11
  %574 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

575:                                              ; preds = %563
  %576 = getelementptr inbounds i8, ptr %39, i64 656
  %577 = load ptr, ptr %576, align 8, !tbaa !54
  %578 = icmp eq ptr %577, null
  br i1 %578, label %587, label %579

579:                                              ; preds = %575
  %580 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.75, ptr %580, align 8, !tbaa !5
  %581 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.75, i64 21), i32 noundef 47) #7
  %.not343 = icmp eq ptr %581, null
  %582 = getelementptr inbounds i8, ptr %581, i64 1
  %583 = select i1 %.not343, ptr getelementptr inbounds (i8, ptr @.str.75, i64 21), ptr %582
  %584 = getelementptr inbounds i8, ptr %580, i64 8
  store ptr %583, ptr %584, align 8, !tbaa !10
  %585 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %585, align 4, !tbaa !11
  %586 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

587:                                              ; preds = %575
  %588 = load ptr, ptr %2, align 8, !tbaa !55
  %589 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %588) #7
  %590 = call ptr @s2n_connection_get_kem_group_name(ptr noundef nonnull %39) #8
  %591 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %590) #7
  %592 = icmp eq i64 %589, %591
  br i1 %592, label %601, label %593

593:                                              ; preds = %587
  %594 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.76, ptr %594, align 8, !tbaa !5
  %595 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.76, i64 21), i32 noundef 47) #7
  %.not344 = icmp eq ptr %595, null
  %596 = getelementptr inbounds i8, ptr %595, i64 1
  %597 = select i1 %.not344, ptr getelementptr inbounds (i8, ptr @.str.76, i64 21), ptr %596
  %598 = getelementptr inbounds i8, ptr %594, i64 8
  store ptr %597, ptr %598, align 8, !tbaa !10
  %599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %599, align 4, !tbaa !11
  %600 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

601:                                              ; preds = %587
  %602 = load ptr, ptr %2, align 8, !tbaa !55
  %603 = call ptr @s2n_connection_get_kem_group_name(ptr noundef nonnull %39) #8
  %604 = load ptr, ptr %2, align 8, !tbaa !55
  %605 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %604) #7
  %bcmp345 = call i32 @bcmp(ptr %602, ptr %603, i64 %605)
  %606 = icmp eq i32 %bcmp345, 0
  br i1 %606, label %615, label %607

607:                                              ; preds = %601
  %608 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.77, ptr %608, align 8, !tbaa !5
  %609 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.77, i64 21), i32 noundef 47) #7
  %.not346 = icmp eq ptr %609, null
  %610 = getelementptr inbounds i8, ptr %609, i64 1
  %611 = select i1 %.not346, ptr getelementptr inbounds (i8, ptr @.str.77, i64 21), ptr %610
  %612 = getelementptr inbounds i8, ptr %608, i64 8
  store ptr %611, ptr %612, align 8, !tbaa !10
  %613 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %613, align 4, !tbaa !11
  %614 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

615:                                              ; preds = %601
  %616 = call ptr @s2n_connection_get_kem_group_name(ptr noundef nonnull %29) #8
  %617 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %616) #7
  %618 = icmp eq i64 %605, %617
  br i1 %618, label %627, label %619

619:                                              ; preds = %615
  %620 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.78, ptr %620, align 8, !tbaa !5
  %621 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.78, i64 21), i32 noundef 47) #7
  %.not347 = icmp eq ptr %621, null
  %622 = getelementptr inbounds i8, ptr %621, i64 1
  %623 = select i1 %.not347, ptr getelementptr inbounds (i8, ptr @.str.78, i64 21), ptr %622
  %624 = getelementptr inbounds i8, ptr %620, i64 8
  store ptr %623, ptr %624, align 8, !tbaa !10
  %625 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %625, align 4, !tbaa !11
  %626 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

627:                                              ; preds = %615
  %628 = load ptr, ptr %2, align 8, !tbaa !55
  %629 = call ptr @s2n_connection_get_kem_group_name(ptr noundef nonnull %29) #8
  %630 = load ptr, ptr %2, align 8, !tbaa !55
  %631 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %630) #7
  %bcmp348 = call i32 @bcmp(ptr %628, ptr %629, i64 %631)
  %632 = icmp eq i32 %bcmp348, 0
  br i1 %632, label %641, label %633

633:                                              ; preds = %627
  %634 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.79, ptr %634, align 8, !tbaa !5
  %635 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.79, i64 21), i32 noundef 47) #7
  %.not349 = icmp eq ptr %635, null
  %636 = getelementptr inbounds i8, ptr %635, i64 1
  %637 = select i1 %.not349, ptr getelementptr inbounds (i8, ptr @.str.79, i64 21), ptr %636
  %638 = getelementptr inbounds i8, ptr %634, i64 8
  store ptr %637, ptr %638, align 8, !tbaa !10
  %639 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %639, align 4, !tbaa !11
  %640 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

641:                                              ; preds = %627
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  store ptr null, ptr %11, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  store ptr null, ptr %12, align 8, !tbaa !56
  %642 = call i32 @s2n_connection_get_key_exchange_group(ptr noundef nonnull %39, ptr noundef nonnull %11) #8
  %643 = icmp sgt i32 %642, -1
  br i1 %643, label %644, label %.critedge

644:                                              ; preds = %641
  %645 = call i32 @s2n_connection_get_key_exchange_group(ptr noundef nonnull %29, ptr noundef nonnull %12) #8
  %646 = icmp sgt i32 %645, -1
  br i1 %646, label %647, label %.critedge

647:                                              ; preds = %644
  %648 = load ptr, ptr %2, align 8, !tbaa !55
  %649 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %648) #7
  %650 = load ptr, ptr %11, align 8, !tbaa !56
  %651 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %650) #7
  %652 = icmp eq i64 %649, %651
  br i1 %652, label %653, label %.critedge.sink.split

653:                                              ; preds = %647
  %bcmp351 = call i32 @bcmp(ptr %648, ptr %650, i64 %649)
  %654 = icmp eq i32 %bcmp351, 0
  br i1 %654, label %655, label %.critedge.sink.split

655:                                              ; preds = %653
  %656 = load ptr, ptr %12, align 8, !tbaa !56
  %657 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %656) #7
  %658 = icmp eq i64 %649, %657
  br i1 %658, label %659, label %.critedge.sink.split

659:                                              ; preds = %655
  %bcmp354 = call i32 @bcmp(ptr %648, ptr %656, i64 %649)
  %660 = icmp eq i32 %bcmp354, 0
  br i1 %660, label %661, label %.critedge.sink.split

661:                                              ; preds = %659
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %832

662:                                              ; preds = %486
  %663 = icmp eq ptr %488, null
  br i1 %663, label %672, label %664

664:                                              ; preds = %662
  %665 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.84, ptr %665, align 8, !tbaa !5
  %666 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.84, i64 21), i32 noundef 47) #7
  %.not317 = icmp eq ptr %666, null
  %667 = getelementptr inbounds i8, ptr %666, i64 1
  %668 = select i1 %.not317, ptr getelementptr inbounds (i8, ptr @.str.84, i64 21), ptr %667
  %669 = getelementptr inbounds i8, ptr %665, i64 8
  store ptr %668, ptr %669, align 8, !tbaa !10
  %670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %670, align 4, !tbaa !11
  %671 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

672:                                              ; preds = %662
  %673 = getelementptr inbounds i8, ptr %29, i64 728
  %674 = load ptr, ptr %673, align 8, !tbaa !51
  %675 = icmp eq ptr %674, null
  br i1 %675, label %684, label %676

676:                                              ; preds = %672
  %677 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.85, ptr %677, align 8, !tbaa !5
  %678 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.85, i64 21), i32 noundef 47) #7
  %.not318 = icmp eq ptr %678, null
  %679 = getelementptr inbounds i8, ptr %678, i64 1
  %680 = select i1 %.not318, ptr getelementptr inbounds (i8, ptr @.str.85, i64 21), ptr %679
  %681 = getelementptr inbounds i8, ptr %677, i64 8
  store ptr %680, ptr %681, align 8, !tbaa !10
  %682 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %682, align 4, !tbaa !11
  %683 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

684:                                              ; preds = %672
  %685 = getelementptr inbounds i8, ptr %29, i64 816
  %686 = load ptr, ptr %685, align 8, !tbaa !53
  %687 = icmp eq ptr %686, null
  br i1 %687, label %696, label %688

688:                                              ; preds = %684
  %689 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.86, ptr %689, align 8, !tbaa !5
  %690 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.86, i64 21), i32 noundef 47) #7
  %.not319 = icmp eq ptr %690, null
  %691 = getelementptr inbounds i8, ptr %690, i64 1
  %692 = select i1 %.not319, ptr getelementptr inbounds (i8, ptr @.str.86, i64 21), ptr %691
  %693 = getelementptr inbounds i8, ptr %689, i64 8
  store ptr %692, ptr %693, align 8, !tbaa !10
  %694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %694, align 4, !tbaa !11
  %695 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

696:                                              ; preds = %684
  %697 = getelementptr inbounds i8, ptr %29, i64 656
  %698 = load ptr, ptr %697, align 8, !tbaa !54
  %699 = icmp eq ptr %698, %3
  br i1 %699, label %708, label %700

700:                                              ; preds = %696
  %701 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.87, ptr %701, align 8, !tbaa !5
  %702 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.87, i64 21), i32 noundef 47) #7
  %.not320 = icmp eq ptr %702, null
  %703 = getelementptr inbounds i8, ptr %702, i64 1
  %704 = select i1 %.not320, ptr getelementptr inbounds (i8, ptr @.str.87, i64 21), ptr %703
  %705 = getelementptr inbounds i8, ptr %701, i64 8
  store ptr %704, ptr %705, align 8, !tbaa !10
  %706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %706, align 4, !tbaa !11
  %707 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

708:                                              ; preds = %696
  %709 = getelementptr inbounds i8, ptr %39, i64 720
  %710 = load ptr, ptr %709, align 8, !tbaa !48
  %711 = icmp eq ptr %710, null
  br i1 %711, label %720, label %712

712:                                              ; preds = %708
  %713 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.88, ptr %713, align 8, !tbaa !5
  %714 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.88, i64 21), i32 noundef 47) #7
  %.not321 = icmp eq ptr %714, null
  %715 = getelementptr inbounds i8, ptr %714, i64 1
  %716 = select i1 %.not321, ptr getelementptr inbounds (i8, ptr @.str.88, i64 21), ptr %715
  %717 = getelementptr inbounds i8, ptr %713, i64 8
  store ptr %716, ptr %717, align 8, !tbaa !10
  %718 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %718, align 4, !tbaa !11
  %719 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

720:                                              ; preds = %708
  %721 = getelementptr inbounds i8, ptr %39, i64 728
  %722 = load ptr, ptr %721, align 8, !tbaa !51
  %723 = icmp eq ptr %722, null
  br i1 %723, label %732, label %724

724:                                              ; preds = %720
  %725 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.89, ptr %725, align 8, !tbaa !5
  %726 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.89, i64 21), i32 noundef 47) #7
  %.not322 = icmp eq ptr %726, null
  %727 = getelementptr inbounds i8, ptr %726, i64 1
  %728 = select i1 %.not322, ptr getelementptr inbounds (i8, ptr @.str.89, i64 21), ptr %727
  %729 = getelementptr inbounds i8, ptr %725, i64 8
  store ptr %728, ptr %729, align 8, !tbaa !10
  %730 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %730, align 4, !tbaa !11
  %731 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

732:                                              ; preds = %720
  %733 = getelementptr inbounds i8, ptr %39, i64 816
  %734 = load ptr, ptr %733, align 8, !tbaa !53
  %735 = icmp eq ptr %734, null
  br i1 %735, label %744, label %736

736:                                              ; preds = %732
  %737 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.90, ptr %737, align 8, !tbaa !5
  %738 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.90, i64 21), i32 noundef 47) #7
  %.not323 = icmp eq ptr %738, null
  %739 = getelementptr inbounds i8, ptr %738, i64 1
  %740 = select i1 %.not323, ptr getelementptr inbounds (i8, ptr @.str.90, i64 21), ptr %739
  %741 = getelementptr inbounds i8, ptr %737, i64 8
  store ptr %740, ptr %741, align 8, !tbaa !10
  %742 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %742, align 4, !tbaa !11
  %743 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

744:                                              ; preds = %732
  %745 = getelementptr inbounds i8, ptr %39, i64 656
  %746 = load ptr, ptr %745, align 8, !tbaa !54
  %747 = icmp eq ptr %746, %3
  br i1 %747, label %756, label %748

748:                                              ; preds = %744
  %749 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.91, ptr %749, align 8, !tbaa !5
  %750 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.91, i64 21), i32 noundef 47) #7
  %.not324 = icmp eq ptr %750, null
  %751 = getelementptr inbounds i8, ptr %750, i64 1
  %752 = select i1 %.not324, ptr getelementptr inbounds (i8, ptr @.str.91, i64 21), ptr %751
  %753 = getelementptr inbounds i8, ptr %749, i64 8
  store ptr %752, ptr %753, align 8, !tbaa !10
  %754 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %754, align 4, !tbaa !11
  %755 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

756:                                              ; preds = %744
  %757 = getelementptr inbounds i8, ptr %3, i64 8
  %758 = load ptr, ptr %757, align 8, !tbaa !57
  %759 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %758) #7
  %760 = call ptr @s2n_connection_get_curve(ptr noundef nonnull %39) #8
  %761 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %760) #7
  %762 = icmp eq i64 %759, %761
  br i1 %762, label %771, label %763

763:                                              ; preds = %756
  %764 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.92, ptr %764, align 8, !tbaa !5
  %765 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.92, i64 21), i32 noundef 47) #7
  %.not325 = icmp eq ptr %765, null
  %766 = getelementptr inbounds i8, ptr %765, i64 1
  %767 = select i1 %.not325, ptr getelementptr inbounds (i8, ptr @.str.92, i64 21), ptr %766
  %768 = getelementptr inbounds i8, ptr %764, i64 8
  store ptr %767, ptr %768, align 8, !tbaa !10
  %769 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %769, align 4, !tbaa !11
  %770 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

771:                                              ; preds = %756
  %772 = load ptr, ptr %757, align 8, !tbaa !57
  %773 = call ptr @s2n_connection_get_curve(ptr noundef nonnull %39) #8
  %774 = load ptr, ptr %757, align 8, !tbaa !57
  %775 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %774) #7
  %bcmp = call i32 @bcmp(ptr %772, ptr %773, i64 %775)
  %776 = icmp eq i32 %bcmp, 0
  br i1 %776, label %785, label %777

777:                                              ; preds = %771
  %778 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.93, ptr %778, align 8, !tbaa !5
  %779 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.93, i64 21), i32 noundef 47) #7
  %.not326 = icmp eq ptr %779, null
  %780 = getelementptr inbounds i8, ptr %779, i64 1
  %781 = select i1 %.not326, ptr getelementptr inbounds (i8, ptr @.str.93, i64 21), ptr %780
  %782 = getelementptr inbounds i8, ptr %778, i64 8
  store ptr %781, ptr %782, align 8, !tbaa !10
  %783 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %783, align 4, !tbaa !11
  %784 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

785:                                              ; preds = %771
  %786 = call ptr @s2n_connection_get_curve(ptr noundef nonnull %29) #8
  %787 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %786) #7
  %788 = icmp eq i64 %775, %787
  br i1 %788, label %797, label %789

789:                                              ; preds = %785
  %790 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.94, ptr %790, align 8, !tbaa !5
  %791 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.94, i64 21), i32 noundef 47) #7
  %.not327 = icmp eq ptr %791, null
  %792 = getelementptr inbounds i8, ptr %791, i64 1
  %793 = select i1 %.not327, ptr getelementptr inbounds (i8, ptr @.str.94, i64 21), ptr %792
  %794 = getelementptr inbounds i8, ptr %790, i64 8
  store ptr %793, ptr %794, align 8, !tbaa !10
  %795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %795, align 4, !tbaa !11
  %796 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

797:                                              ; preds = %785
  %798 = load ptr, ptr %757, align 8, !tbaa !57
  %799 = call ptr @s2n_connection_get_curve(ptr noundef nonnull %29) #8
  %800 = load ptr, ptr %757, align 8, !tbaa !57
  %801 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %800) #7
  %bcmp328 = call i32 @bcmp(ptr %798, ptr %799, i64 %801)
  %802 = icmp eq i32 %bcmp328, 0
  br i1 %802, label %811, label %803

803:                                              ; preds = %797
  %804 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.95, ptr %804, align 8, !tbaa !5
  %805 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.95, i64 21), i32 noundef 47) #7
  %.not329 = icmp eq ptr %805, null
  %806 = getelementptr inbounds i8, ptr %805, i64 1
  %807 = select i1 %.not329, ptr getelementptr inbounds (i8, ptr @.str.95, i64 21), ptr %806
  %808 = getelementptr inbounds i8, ptr %804, i64 8
  store ptr %807, ptr %808, align 8, !tbaa !10
  %809 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %809, align 4, !tbaa !11
  %810 = call i32 @s2n_calculate_stacktrace() #8
  br label %1056

811:                                              ; preds = %797
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  store ptr null, ptr %13, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  store ptr null, ptr %14, align 8, !tbaa !56
  %812 = call i32 @s2n_connection_get_key_exchange_group(ptr noundef nonnull %39, ptr noundef nonnull %13) #8
  %813 = icmp sgt i32 %812, -1
  br i1 %813, label %814, label %.critedge380

814:                                              ; preds = %811
  %815 = call i32 @s2n_connection_get_key_exchange_group(ptr noundef nonnull %29, ptr noundef nonnull %14) #8
  %816 = icmp sgt i32 %815, -1
  br i1 %816, label %817, label %.critedge380

817:                                              ; preds = %814
  %818 = load ptr, ptr %757, align 8, !tbaa !57
  %819 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %818) #7
  %820 = load ptr, ptr %13, align 8, !tbaa !56
  %821 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %820) #7
  %822 = icmp eq i64 %819, %821
  br i1 %822, label %823, label %.critedge380.sink.split

823:                                              ; preds = %817
  %bcmp331 = call i32 @bcmp(ptr %818, ptr %820, i64 %819)
  %824 = icmp eq i32 %bcmp331, 0
  br i1 %824, label %825, label %.critedge380.sink.split

825:                                              ; preds = %823
  %826 = load ptr, ptr %14, align 8, !tbaa !56
  %827 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %826) #7
  %828 = icmp eq i64 %819, %827
  br i1 %828, label %829, label %.critedge380.sink.split

829:                                              ; preds = %825
  %bcmp334 = call i32 @bcmp(ptr %818, ptr %826, i64 %819)
  %830 = icmp eq i32 %bcmp334, 0
  br i1 %830, label %831, label %.critedge380.sink.split

831:                                              ; preds = %829
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %832

832:                                              ; preds = %831, %661
  call void @llvm.lifetime.start.p0(i64 592, ptr nonnull %15) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(592) %15, i8 0, i64 592, i1 false)
  %833 = call i32 @s2n_tls13_keys_from_conn(ptr noundef nonnull %15, ptr noundef nonnull %39) #8
  %834 = icmp sgt i32 %833, -1
  br i1 %834, label %835, label %1040

835:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 592, ptr nonnull %16) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(592) %16, i8 0, i64 592, i1 false)
  %836 = call i32 @s2n_tls13_keys_from_conn(ptr noundef nonnull %16, ptr noundef nonnull %29) #8
  %837 = icmp sgt i32 %836, -1
  br i1 %837, label %838, label %1038

838:                                              ; preds = %835
  %839 = getelementptr inbounds i8, ptr %39, i64 232
  %840 = load ptr, ptr %839, align 8, !tbaa !59
  %841 = load ptr, ptr %840, align 8, !tbaa !60
  %842 = getelementptr inbounds i8, ptr %29, i64 232
  %843 = load ptr, ptr %842, align 8, !tbaa !59
  %844 = load ptr, ptr %843, align 8, !tbaa !60
  %845 = icmp eq ptr %841, %844
  br i1 %845, label %854, label %846

846:                                              ; preds = %838
  %847 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.100, ptr %847, align 8, !tbaa !5
  %848 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.100, i64 21), i32 noundef 47) #7
  %.not356 = icmp eq ptr %848, null
  %849 = getelementptr inbounds i8, ptr %848, i64 1
  %850 = select i1 %.not356, ptr getelementptr inbounds (i8, ptr @.str.100, i64 21), ptr %849
  %851 = getelementptr inbounds i8, ptr %847, i64 8
  store ptr %850, ptr %851, align 8, !tbaa !10
  %852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %852, align 4, !tbaa !11
  %853 = call i32 @s2n_calculate_stacktrace() #8
  br label %1038

854:                                              ; preds = %838
  %855 = icmp eq ptr %841, @s2n_tls13_aes_256_gcm_sha384
  %856 = getelementptr inbounds i8, ptr %15, i64 8
  %857 = load i8, ptr %856, align 8, !tbaa !65
  br i1 %855, label %858, label %880

858:                                              ; preds = %854
  %859 = icmp eq i8 %857, 48
  br i1 %859, label %868, label %860

860:                                              ; preds = %858
  %861 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.101, ptr %861, align 8, !tbaa !5
  %862 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.101, i64 21), i32 noundef 47) #7
  %.not359 = icmp eq ptr %862, null
  %863 = getelementptr inbounds i8, ptr %862, i64 1
  %864 = select i1 %.not359, ptr getelementptr inbounds (i8, ptr @.str.101, i64 21), ptr %863
  %865 = getelementptr inbounds i8, ptr %861, i64 8
  store ptr %864, ptr %865, align 8, !tbaa !10
  %866 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %866, align 4, !tbaa !11
  %867 = call i32 @s2n_calculate_stacktrace() #8
  br label %1038

868:                                              ; preds = %858
  %869 = getelementptr inbounds i8, ptr %16, i64 8
  %870 = load i8, ptr %869, align 8, !tbaa !65
  %871 = icmp eq i8 %870, 48
  br i1 %871, label %902, label %872

872:                                              ; preds = %868
  %873 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.102, ptr %873, align 8, !tbaa !5
  %874 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.102, i64 21), i32 noundef 47) #7
  %.not360 = icmp eq ptr %874, null
  %875 = getelementptr inbounds i8, ptr %874, i64 1
  %876 = select i1 %.not360, ptr getelementptr inbounds (i8, ptr @.str.102, i64 21), ptr %875
  %877 = getelementptr inbounds i8, ptr %873, i64 8
  store ptr %876, ptr %877, align 8, !tbaa !10
  %878 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %878, align 4, !tbaa !11
  %879 = call i32 @s2n_calculate_stacktrace() #8
  br label %1038

880:                                              ; preds = %854
  %881 = icmp eq i8 %857, 32
  br i1 %881, label %890, label %882

882:                                              ; preds = %880
  %883 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.103, ptr %883, align 8, !tbaa !5
  %884 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.103, i64 21), i32 noundef 47) #7
  %.not357 = icmp eq ptr %884, null
  %885 = getelementptr inbounds i8, ptr %884, i64 1
  %886 = select i1 %.not357, ptr getelementptr inbounds (i8, ptr @.str.103, i64 21), ptr %885
  %887 = getelementptr inbounds i8, ptr %883, i64 8
  store ptr %886, ptr %887, align 8, !tbaa !10
  %888 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %888, align 4, !tbaa !11
  %889 = call i32 @s2n_calculate_stacktrace() #8
  br label %1038

890:                                              ; preds = %880
  %891 = getelementptr inbounds i8, ptr %16, i64 8
  %892 = load i8, ptr %891, align 8, !tbaa !65
  %893 = icmp eq i8 %892, 32
  br i1 %893, label %902, label %894

894:                                              ; preds = %890
  %895 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.104, ptr %895, align 8, !tbaa !5
  %896 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.104, i64 21), i32 noundef 47) #7
  %.not358 = icmp eq ptr %896, null
  %897 = getelementptr inbounds i8, ptr %896, i64 1
  %898 = select i1 %.not358, ptr getelementptr inbounds (i8, ptr @.str.104, i64 21), ptr %897
  %899 = getelementptr inbounds i8, ptr %895, i64 8
  store ptr %898, ptr %899, align 8, !tbaa !10
  %900 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %900, align 4, !tbaa !11
  %901 = call i32 @s2n_calculate_stacktrace() #8
  br label %1038

902:                                              ; preds = %868, %890
  %903 = phi i64 [ 32, %890 ], [ 48, %868 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #8
  %904 = getelementptr inbounds i8, ptr %29, i64 240
  %905 = getelementptr inbounds i8, ptr %39, i64 240
  %906 = getelementptr inbounds i8, ptr %29, i64 628
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %17, i8 0, i64 48, i1 false)
  %907 = load i32, ptr %906, align 4, !tbaa !67
  %908 = icmp eq i32 %907, 2
  br i1 %908, label %917, label %909

909:                                              ; preds = %902
  %910 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.107, ptr %910, align 8, !tbaa !5
  %911 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.107, i64 21), i32 noundef 47) #7
  %.not362 = icmp eq ptr %911, null
  %912 = getelementptr inbounds i8, ptr %911, i64 1
  %913 = select i1 %.not362, ptr getelementptr inbounds (i8, ptr @.str.107, i64 21), ptr %912
  %914 = getelementptr inbounds i8, ptr %910, i64 8
  store ptr %913, ptr %914, align 8, !tbaa !10
  %915 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %915, align 4, !tbaa !11
  %916 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

917:                                              ; preds = %902
  %bcmp381 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(1) %904, i64 %903)
  %.not363 = icmp eq i32 %bcmp381, 0
  br i1 %.not363, label %918, label %926

918:                                              ; preds = %917
  %919 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.108, ptr %919, align 8, !tbaa !5
  %920 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.108, i64 21), i32 noundef 47) #7
  %.not364 = icmp eq ptr %920, null
  %921 = getelementptr inbounds i8, ptr %920, i64 1
  %922 = select i1 %.not364, ptr getelementptr inbounds (i8, ptr @.str.108, i64 21), ptr %921
  %923 = getelementptr inbounds i8, ptr %919, i64 8
  store ptr %922, ptr %923, align 8, !tbaa !10
  %924 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %924, align 4, !tbaa !11
  %925 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

926:                                              ; preds = %917
  %927 = getelementptr inbounds i8, ptr %29, i64 336
  %bcmp382 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(1) %927, i64 %903)
  %.not365 = icmp eq i32 %bcmp382, 0
  br i1 %.not365, label %928, label %936

928:                                              ; preds = %926
  %929 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.109, ptr %929, align 8, !tbaa !5
  %930 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.109, i64 21), i32 noundef 47) #7
  %.not366 = icmp eq ptr %930, null
  %931 = getelementptr inbounds i8, ptr %930, i64 1
  %932 = select i1 %.not366, ptr getelementptr inbounds (i8, ptr @.str.109, i64 21), ptr %931
  %933 = getelementptr inbounds i8, ptr %929, i64 8
  store ptr %932, ptr %933, align 8, !tbaa !10
  %934 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %934, align 4, !tbaa !11
  %935 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

936:                                              ; preds = %926
  %937 = getelementptr inbounds i8, ptr %29, i64 384
  %bcmp383 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(1) %937, i64 %903)
  %.not367 = icmp eq i32 %bcmp383, 0
  br i1 %.not367, label %938, label %946

938:                                              ; preds = %936
  %939 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.110, ptr %939, align 8, !tbaa !5
  %940 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.110, i64 21), i32 noundef 47) #7
  %.not368 = icmp eq ptr %940, null
  %941 = getelementptr inbounds i8, ptr %940, i64 1
  %942 = select i1 %.not368, ptr getelementptr inbounds (i8, ptr @.str.110, i64 21), ptr %941
  %943 = getelementptr inbounds i8, ptr %939, i64 8
  store ptr %942, ptr %943, align 8, !tbaa !10
  %944 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %944, align 4, !tbaa !11
  %945 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

946:                                              ; preds = %936
  %947 = getelementptr inbounds i8, ptr %39, i64 628
  %948 = load i32, ptr %947, align 4, !tbaa !67
  %949 = icmp eq i32 %948, 2
  br i1 %949, label %958, label %950

950:                                              ; preds = %946
  %951 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.111, ptr %951, align 8, !tbaa !5
  %952 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.111, i64 21), i32 noundef 47) #7
  %.not369 = icmp eq ptr %952, null
  %953 = getelementptr inbounds i8, ptr %952, i64 1
  %954 = select i1 %.not369, ptr getelementptr inbounds (i8, ptr @.str.111, i64 21), ptr %953
  %955 = getelementptr inbounds i8, ptr %951, i64 8
  store ptr %954, ptr %955, align 8, !tbaa !10
  %956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %956, align 4, !tbaa !11
  %957 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

958:                                              ; preds = %946
  %bcmp384 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(1) %905, i64 %903)
  %.not370 = icmp eq i32 %bcmp384, 0
  br i1 %.not370, label %959, label %967

959:                                              ; preds = %958
  %960 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.112, ptr %960, align 8, !tbaa !5
  %961 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.112, i64 21), i32 noundef 47) #7
  %.not371 = icmp eq ptr %961, null
  %962 = getelementptr inbounds i8, ptr %961, i64 1
  %963 = select i1 %.not371, ptr getelementptr inbounds (i8, ptr @.str.112, i64 21), ptr %962
  %964 = getelementptr inbounds i8, ptr %960, i64 8
  store ptr %963, ptr %964, align 8, !tbaa !10
  %965 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %965, align 4, !tbaa !11
  %966 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

967:                                              ; preds = %958
  %968 = getelementptr inbounds i8, ptr %39, i64 336
  %bcmp385 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(1) %968, i64 %903)
  %.not372 = icmp eq i32 %bcmp385, 0
  br i1 %.not372, label %969, label %977

969:                                              ; preds = %967
  %970 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.113, ptr %970, align 8, !tbaa !5
  %971 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.113, i64 21), i32 noundef 47) #7
  %.not373 = icmp eq ptr %971, null
  %972 = getelementptr inbounds i8, ptr %971, i64 1
  %973 = select i1 %.not373, ptr getelementptr inbounds (i8, ptr @.str.113, i64 21), ptr %972
  %974 = getelementptr inbounds i8, ptr %970, i64 8
  store ptr %973, ptr %974, align 8, !tbaa !10
  %975 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %975, align 4, !tbaa !11
  %976 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

977:                                              ; preds = %967
  %978 = getelementptr inbounds i8, ptr %39, i64 384
  %bcmp386 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %17, ptr noundef nonnull dereferenceable(1) %978, i64 %903)
  %.not374 = icmp eq i32 %bcmp386, 0
  br i1 %.not374, label %979, label %987

979:                                              ; preds = %977
  %980 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.114, ptr %980, align 8, !tbaa !5
  %981 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.114, i64 21), i32 noundef 47) #7
  %.not375 = icmp eq ptr %981, null
  %982 = getelementptr inbounds i8, ptr %981, i64 1
  %983 = select i1 %.not375, ptr getelementptr inbounds (i8, ptr @.str.114, i64 21), ptr %982
  %984 = getelementptr inbounds i8, ptr %980, i64 8
  store ptr %983, ptr %984, align 8, !tbaa !10
  %985 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %985, align 4, !tbaa !11
  %986 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

987:                                              ; preds = %977
  %bcmp387 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %905, ptr noundef nonnull dereferenceable(1) %904, i64 %903)
  %988 = icmp eq i32 %bcmp387, 0
  br i1 %988, label %997, label %989

989:                                              ; preds = %987
  %990 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.115, ptr %990, align 8, !tbaa !5
  %991 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.115, i64 21), i32 noundef 47) #7
  %.not376 = icmp eq ptr %991, null
  %992 = getelementptr inbounds i8, ptr %991, i64 1
  %993 = select i1 %.not376, ptr getelementptr inbounds (i8, ptr @.str.115, i64 21), ptr %992
  %994 = getelementptr inbounds i8, ptr %990, i64 8
  store ptr %993, ptr %994, align 8, !tbaa !10
  %995 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %995, align 4, !tbaa !11
  %996 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

997:                                              ; preds = %987
  %bcmp388 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %968, ptr noundef nonnull dereferenceable(1) %927, i64 %903)
  %998 = icmp eq i32 %bcmp388, 0
  br i1 %998, label %1007, label %999

999:                                              ; preds = %997
  %1000 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.116, ptr %1000, align 8, !tbaa !5
  %1001 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.116, i64 21), i32 noundef 47) #7
  %.not377 = icmp eq ptr %1001, null
  %1002 = getelementptr inbounds i8, ptr %1001, i64 1
  %1003 = select i1 %.not377, ptr getelementptr inbounds (i8, ptr @.str.116, i64 21), ptr %1002
  %1004 = getelementptr inbounds i8, ptr %1000, i64 8
  store ptr %1003, ptr %1004, align 8, !tbaa !10
  %1005 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1005, align 4, !tbaa !11
  %1006 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

1007:                                             ; preds = %997
  %bcmp389 = call i32 @bcmp(ptr noundef nonnull dereferenceable(1) %978, ptr noundef nonnull dereferenceable(1) %937, i64 %903)
  %1008 = icmp eq i32 %bcmp389, 0
  br i1 %1008, label %1017, label %1009

1009:                                             ; preds = %1007
  %1010 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr @.str.117, ptr %1010, align 8, !tbaa !5
  %1011 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) getelementptr inbounds (i8, ptr @.str.117, i64 21), i32 noundef 47) #7
  %.not378 = icmp eq ptr %1011, null
  %1012 = getelementptr inbounds i8, ptr %1011, i64 1
  %1013 = select i1 %.not378, ptr getelementptr inbounds (i8, ptr @.str.117, i64 21), ptr %1012
  %1014 = getelementptr inbounds i8, ptr %1010, i64 8
  store ptr %1013, ptr %1014, align 8, !tbaa !10
  %1015 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1015, align 4, !tbaa !11
  %1016 = call i32 @s2n_calculate_stacktrace() #8
  br label %1037

1017:                                             ; preds = %1007
  %1018 = call i32 @s2n_stuffer_free(ptr noundef nonnull %9) #8
  %1019 = icmp sgt i32 %1018, -1
  br i1 %1019, label %1020, label %1037

1020:                                             ; preds = %1017
  %1021 = call i32 @s2n_stuffer_free(ptr noundef nonnull %10) #8
  %1022 = icmp sgt i32 %1021, -1
  br i1 %1022, label %1023, label %1037

1023:                                             ; preds = %1020
  %1024 = call i32 @s2n_connection_free(ptr noundef nonnull %29) #8
  %1025 = icmp sgt i32 %1024, -1
  br i1 %1025, label %1026, label %1037

1026:                                             ; preds = %1023
  %1027 = call i32 @s2n_connection_free(ptr noundef nonnull %39) #8
  %1028 = icmp sgt i32 %1027, -1
  br i1 %1028, label %1029, label %1037

1029:                                             ; preds = %1026
  %1030 = call i32 @s2n_cert_chain_and_key_free(ptr noundef nonnull %69) #8
  %1031 = icmp sgt i32 %1030, -1
  br i1 %1031, label %1032, label %1037

1032:                                             ; preds = %1029
  %1033 = call i32 @s2n_config_free(ptr noundef nonnull %59) #8
  %1034 = icmp sgt i32 %1033, -1
  br i1 %1034, label %1035, label %1037

1035:                                             ; preds = %1032
  %1036 = call i32 @s2n_config_free(ptr noundef nonnull %49) #8
  %.lobit = ashr i32 %1036, 31
  br label %1037

1037:                                             ; preds = %1035, %1032, %1029, %1026, %1023, %1020, %1017, %1009, %999, %989, %979, %969, %959, %950, %938, %928, %918, %909
  %.7 = phi i32 [ -1, %1009 ], [ -1, %999 ], [ -1, %989 ], [ -1, %979 ], [ -1, %969 ], [ -1, %959 ], [ -1, %950 ], [ -1, %938 ], [ -1, %928 ], [ -1, %918 ], [ -1, %909 ], [ -1, %1017 ], [ -1, %1020 ], [ -1, %1023 ], [ -1, %1026 ], [ -1, %1029 ], [ -1, %1032 ], [ %.lobit, %1035 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #8
  br label %1038

1038:                                             ; preds = %835, %1037, %894, %882, %872, %860, %846
  %.9 = phi i32 [ %.7, %1037 ], [ -1, %872 ], [ -1, %860 ], [ -1, %894 ], [ -1, %882 ], [ -1, %846 ], [ -1, %835 ]
  %1039 = call i32 @s2n_tls13_keys_free(ptr noundef nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 592, ptr nonnull %16) #8
  br label %1040

1040:                                             ; preds = %832, %1038
  %.10 = phi i32 [ %.9, %1038 ], [ -1, %832 ]
  %1041 = call i32 @s2n_tls13_keys_free(ptr noundef nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 592, ptr nonnull %15) #8
  br label %1056

.critedge.sink.split:                             ; preds = %659, %655, %653, %647
  %.str.80.sink = phi ptr [ @.str.80, %647 ], [ @.str.81, %653 ], [ @.str.82, %655 ], [ @.str.83, %659 ]
  %.sink395 = phi ptr [ getelementptr inbounds (i8, ptr @.str.80, i64 21), %647 ], [ getelementptr inbounds (i8, ptr @.str.81, i64 21), %653 ], [ getelementptr inbounds (i8, ptr @.str.82, i64 21), %655 ], [ getelementptr inbounds (i8, ptr @.str.83, i64 21), %659 ]
  %1042 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr %.str.80.sink, ptr %1042, align 8, !tbaa !5
  %1043 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %.sink395, i32 noundef 47) #7
  %.not350 = icmp eq ptr %1043, null
  %1044 = getelementptr inbounds i8, ptr %1043, i64 1
  %1045 = select i1 %.not350, ptr %.sink395, ptr %1044
  %1046 = getelementptr inbounds i8, ptr %1042, i64 8
  store ptr %1045, ptr %1046, align 8, !tbaa !10
  %1047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1047, align 4, !tbaa !11
  %1048 = call i32 @s2n_calculate_stacktrace() #8
  br label %.critedge

.critedge:                                        ; preds = %.critedge.sink.split, %644, %641
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %1056

.critedge380.sink.split:                          ; preds = %829, %825, %823, %817
  %.str.96.sink = phi ptr [ @.str.96, %817 ], [ @.str.97, %823 ], [ @.str.98, %825 ], [ @.str.99, %829 ]
  %.sink401 = phi ptr [ getelementptr inbounds (i8, ptr @.str.96, i64 21), %817 ], [ getelementptr inbounds (i8, ptr @.str.97, i64 21), %823 ], [ getelementptr inbounds (i8, ptr @.str.98, i64 21), %825 ], [ getelementptr inbounds (i8, ptr @.str.99, i64 21), %829 ]
  %1049 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr %.str.96.sink, ptr %1049, align 8, !tbaa !5
  %1050 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %.sink401, i32 noundef 47) #7
  %.not330 = icmp eq ptr %1050, null
  %1051 = getelementptr inbounds i8, ptr %1050, i64 1
  %1052 = select i1 %.not330, ptr %.sink401, ptr %1051
  %1053 = getelementptr inbounds i8, ptr %1049, i64 8
  store ptr %1052, ptr %1053, align 8, !tbaa !10
  %1054 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %1054, align 4, !tbaa !11
  %1055 = call i32 @s2n_calculate_stacktrace() #8
  br label %.critedge380

.critedge380:                                     ; preds = %.critedge380.sink.split, %814, %811
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %1056

1056:                                             ; preds = %.critedge380, %.critedge, %483, %469, %455, %441, %427, %413, %399, %374, %371, %356, %342, %328, %174, %124, %108, %105, %102, %99, %1040, %803, %789, %777, %763, %748, %736, %724, %712, %700, %688, %676, %664, %633, %619, %607, %593, %579, %567, %555, %543, %531, %519, %505, %491, %475, %461, %447, %433, %419, %405, %391, %380, %363, %348, %334, %320, %308, %296, %284, %272, %260, %246, %232, %220, %207, %194, %180, %166, %155, %143, %131, %116
  %.11 = phi i32 [ %.10, %1040 ], [ -1, %633 ], [ -1, %619 ], [ -1, %607 ], [ -1, %593 ], [ -1, %579 ], [ -1, %567 ], [ -1, %555 ], [ -1, %543 ], [ -1, %531 ], [ -1, %519 ], [ -1, %505 ], [ -1, %491 ], [ -1, %803 ], [ -1, %789 ], [ -1, %777 ], [ -1, %763 ], [ -1, %748 ], [ -1, %736 ], [ -1, %724 ], [ -1, %712 ], [ -1, %700 ], [ -1, %688 ], [ -1, %676 ], [ -1, %664 ], [ -1, %475 ], [ -1, %461 ], [ -1, %447 ], [ -1, %433 ], [ -1, %419 ], [ -1, %405 ], [ -1, %391 ], [ -1, %380 ], [ -1, %363 ], [ -1, %348 ], [ -1, %334 ], [ -1, %272 ], [ -1, %260 ], [ -1, %246 ], [ -1, %232 ], [ -1, %220 ], [ -1, %207 ], [ -1, %194 ], [ -1, %320 ], [ -1, %308 ], [ -1, %296 ], [ -1, %284 ], [ -1, %180 ], [ -1, %166 ], [ -1, %155 ], [ -1, %143 ], [ -1, %131 ], [ -1, %116 ], [ -1, %99 ], [ -1, %102 ], [ -1, %105 ], [ -1, %108 ], [ -1, %124 ], [ -1, %174 ], [ -1, %328 ], [ -1, %342 ], [ -1, %356 ], [ -1, %371 ], [ -1, %374 ], [ -1, %399 ], [ -1, %413 ], [ -1, %427 ], [ -1, %441 ], [ -1, %455 ], [ -1, %469 ], [ -1, %483 ], [ -1, %.critedge ], [ -1, %.critedge380 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #8
  br label %1057

1057:                                             ; preds = %96, %93, %90, %87, %84, %81, %78, %1056, %70
  %.12 = phi i32 [ %.11, %1056 ], [ -1, %70 ], [ -1, %78 ], [ -1, %81 ], [ -1, %84 ], [ -1, %87 ], [ -1, %90 ], [ -1, %93 ], [ -1, %96 ]
  call void @llvm.lifetime.end.p0(i64 12000, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 12000, ptr nonnull %7) #8
  br label %1058

1058:                                             ; preds = %30, %40, %1057, %60, %50, %20
  %.15 = phi i32 [ -1, %20 ], [ -1, %40 ], [ -1, %30 ], [ %.12, %1057 ], [ -1, %60 ], [ -1, %50 ]
  ret i32 %.15
}

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #5

declare ptr @s2n_config_new() local_unnamed_addr #5

declare ptr @s2n_cert_chain_and_key_new() local_unnamed_addr #5

declare i32 @s2n_read_test_pem(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

declare i32 @s2n_cert_chain_and_key_load_pem(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef, ptr noundef) local_unnamed_addr #5

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

declare i32 @s2n_stuffer_growable_alloc(ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @s2n_connection_set_io_stuffers(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare zeroext i1 @s2n_tls13_client_must_use_hybrid_kem_length_prefix(ptr noundef) local_unnamed_addr #5

declare ptr @s2n_connection_get_kem_group_name(ptr noundef) local_unnamed_addr #5

declare i32 @s2n_connection_get_key_exchange_group(ptr noundef, ptr noundef) local_unnamed_addr #5

declare ptr @s2n_connection_get_curve(ptr noundef) local_unnamed_addr #5

declare i32 @s2n_tls13_keys_free(ptr noundef) local_unnamed_addr #5

declare i32 @s2n_tls13_keys_from_conn(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @s2n_stuffer_free(ptr noundef) local_unnamed_addr #5

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #5

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) local_unnamed_addr #5

declare i32 @s2n_config_free(ptr noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #6

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


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LowerExpectIntrinsicPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass