; LLVM IR from guanzhi/GmSSL :: src (tls13)

; 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.SM2_KEY = type { %struct.SM2_Z256_POINT, [4 x i64] }
%struct.SM2_Z256_POINT = type { [4 x i64], [4 x i64], [4 x i64] }
%struct.DIGEST_CTX = type { %union.anon.0, ptr }
%union.anon.0 = type { %struct.SM3_CTX }
%struct.SM3_CTX = type { [8 x i32], i64, [64 x i8], i64 }
%struct.TLS_CONNECT = type { i32, i32, [64 x i32], i64, i32, [18437 x i8], i64, [18437 x i8], [18437 x i8], ptr, i64, i32, [32 x i8], i64, [2048 x i8], i64, [2048 x i8], i64, [2048 x i8], i64, %struct.SM2_KEY, %struct.SM2_KEY, i32, [48 x i8], [96 x i8], %struct.SM3_HMAC_CTX, %struct.SM3_HMAC_CTX, %struct.SM4_KEY, %struct.SM4_KEY, [8 x i8], [8 x i8], [12 x i8], [12 x i8], %struct.BLOCK_CIPHER_KEY, %struct.BLOCK_CIPHER_KEY, i32 }
%struct.SM3_HMAC_CTX = type { %struct.SM3_CTX, [64 x i8] }
%struct.SM4_KEY = type { [32 x i32] }
%struct.BLOCK_CIPHER_KEY = type { %union.anon, ptr }
%union.anon = type { %struct.SM4_KEY }

@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [13 x i8], align 1
@__const.tls13_do_accept.server_ciphers = external hidden unnamed_addr constant [1 x i32], align 4
@__FUNCTION__.tls13_do_accept = external hidden unnamed_addr constant [16 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [26 x i8], align 1

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, 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: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_encrypt(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_decrypt(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #4

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

declare i32 @tls_seq_num_incr(ptr noundef) #5

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_hkdf_extract(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_hkdf_expand_label(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_derive_secret(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_sign_certificate_verify(i32 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #4

declare void @gmssl_secure_clear(ptr noundef, i64 noundef) #5

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_verify_certificate_verify(i32 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_compute_verify_data(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_process_client_hello_exts(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_encrypted_extensions(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_certificate_verify(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i64 noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_get_handshake_certificate_verify(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_certificate_request_default(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_process_certificate_list(ptr noundef, i64 noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_certificate(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_get_handshake_certificate(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_finished(ptr noundef, ptr noundef, ptr noundef, i64 noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_get_handshake_finished(ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_padding_len_rand(ptr noundef) #4

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_cipher_suite_get(i32 noundef, ptr noundef, ptr noundef) #4

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

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

declare i32 @sm2_key_generate(ptr noundef) #5

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @tls13_do_accept(ptr noundef %0) #4 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca [25600 x i8], align 16
  %8 = alloca i64, align 8
  %9 = alloca [1 x i32], align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca [32 x i8], align 16
  %17 = alloca [32 x i8], align 16
  %18 = alloca ptr, align 8
  %19 = alloca i64, align 8
  %20 = alloca [512 x i8], align 16
  %21 = alloca i64, align 8
  %22 = alloca %struct.SM2_KEY, align 8
  %23 = alloca %struct.SM2_Z256_POINT, align 8
  %24 = alloca %struct.SM2_KEY, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %struct.DIGEST_CTX, align 8
  %28 = alloca %struct.DIGEST_CTX, align 8
  %29 = alloca i64, align 8
  %30 = alloca [72 x i8], align 16
  %31 = alloca i64, align 8
  %32 = alloca [32 x i8], align 16
  %33 = alloca i64, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i64, align 8
  %36 = alloca [16 x i8], align 16
  %37 = alloca [16 x i8], align 16
  %38 = alloca [32 x i8], align 16
  %39 = alloca [32 x i8], align 16
  %40 = alloca [32 x i8], align 16
  %41 = alloca [32 x i8], align 16
  %42 = alloca [32 x i8], align 16
  %43 = alloca [32 x i8], align 16
  %44 = alloca [32 x i8], align 16
  %45 = alloca [32 x i8], align 16
  %46 = alloca [32 x i8], align 16
  %47 = alloca ptr, align 8
  %48 = alloca i64, align 8
  %49 = alloca ptr, align 8
  %50 = alloca i64, align 8
  %51 = alloca ptr, align 8
  %52 = alloca i64, align 8
  %53 = alloca i32, align 4
  %54 = alloca [64 x i8], align 16
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca ptr, align 8
  %59 = alloca i64, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  store i32 -1, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  %60 = load ptr, ptr %3, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.TLS_CONNECT, ptr %60, i32 0, i32 7
  %62 = getelementptr inbounds [18437 x i8], ptr %61, i64 0, i64 0
  store ptr %62, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 25600, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  store i64 25600, ptr %8, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %9, ptr align 4 @__const.tls13_do_accept.server_ciphers, i64 4, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 512, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 96, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  store ptr null, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  store ptr null, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 120, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 72, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  store i64 72, ptr %31, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  call void @llvm.memset.p0.i64(ptr align 16 %38, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  call void @llvm.memset.p0.i64(ptr align 16 %39, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #7
  store i32 0, ptr %53, align 4, !tbaa !9
  %63 = load ptr, ptr %3, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.TLS_CONNECT, ptr %63, i32 0, i32 19
  %65 = load i64, ptr %64, align 8, !tbaa !13
  %66 = icmp ne i64 %65, 0
  br i1 %66, label %67, label %68

67:                                               ; preds = %1
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %68

68:                                               ; preds = %67, %1
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  %70 = load ptr, ptr %3, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.TLS_CONNECT, ptr %70, i32 0, i32 4
  %72 = load i32, ptr %71, align 8, !tbaa !21
  %73 = call i32 @tls_record_recv(ptr noundef %69, ptr noundef %6, i32 noundef %72)
  %74 = icmp ne i32 %73, 1
  br i1 %74, label %75, label %83

75:                                               ; preds = %68
  br label %76

76:                                               ; preds = %75
  %77 = load ptr, ptr @stderr, align 8, !tbaa !5
  %78 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %77, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2024, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %79

79:                                               ; preds = %76
  br label %80

80:                                               ; preds = %79
  %81 = load ptr, ptr %3, align 8, !tbaa !5
  %82 = call i32 @tls_send_alert(ptr noundef %81, i32 noundef 10)
  br label %928

83:                                               ; preds = %68
  %84 = load ptr, ptr %5, align 8, !tbaa !5
  %85 = call i32 @tls_record_get_handshake_client_hello(ptr noundef %84, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %18, ptr noundef %19, ptr noundef %14, ptr noundef %15)
  %86 = icmp ne i32 %85, 1
  br i1 %86, label %87, label %95

87:                                               ; preds = %83
  br label %88

88:                                               ; preds = %87
  %89 = load ptr, ptr @stderr, align 8, !tbaa !5
  %90 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %89, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2034, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %91

91:                                               ; preds = %88
  br label %92

92:                                               ; preds = %91
  %93 = load ptr, ptr %3, align 8, !tbaa !5
  %94 = call i32 @tls_send_alert(ptr noundef %93, i32 noundef 10)
  br label %928

95:                                               ; preds = %83
  %96 = load i32, ptr %10, align 4, !tbaa !9
  %97 = icmp ne i32 %96, 771
  br i1 %97, label %98, label %106

98:                                               ; preds = %95
  br label %99

99:                                               ; preds = %98
  %100 = load ptr, ptr @stderr, align 8, !tbaa !5
  %101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %100, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2039, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %102

102:                                              ; preds = %99
  br label %103

103:                                              ; preds = %102
  %104 = load ptr, ptr %3, align 8, !tbaa !5
  %105 = call i32 @tls_send_alert(ptr noundef %104, i32 noundef 70)
  br label %928

106:                                              ; preds = %95
  %107 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %107, ptr align 1 %108, i64 32, i1 false)
  %109 = load ptr, ptr %18, align 8, !tbaa !5
  %110 = load i64, ptr %19, align 8, !tbaa !11
  %111 = getelementptr inbounds [1 x i32], ptr %9, i64 0, i64 0
  %112 = load ptr, ptr %3, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.TLS_CONNECT, ptr %112, i32 0, i32 11
  %114 = call i32 @tls_cipher_suites_select(ptr noundef %109, i64 noundef %110, ptr noundef %111, i64 noundef 1, ptr noundef %113)
  %115 = icmp ne i32 %114, 1
  br i1 %115, label %116, label %124

116:                                              ; preds = %106
  br label %117

117:                                              ; preds = %116
  %118 = load ptr, ptr @stderr, align 8, !tbaa !5
  %119 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %118, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2047, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %120

120:                                              ; preds = %117
  br label %121

121:                                              ; preds = %120
  %122 = load ptr, ptr %3, align 8, !tbaa !5
  %123 = call i32 @tls_send_alert(ptr noundef %122, i32 noundef 71)
  br label %928

124:                                              ; preds = %106
  %125 = load ptr, ptr %14, align 8, !tbaa !5
  %126 = icmp ne ptr %125, null
  br i1 %126, label %133, label %127

127:                                              ; preds = %124
  br label %128

128:                                              ; preds = %127
  %129 = load ptr, ptr @stderr, align 8, !tbaa !5
  %130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %129, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2052, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %131

131:                                              ; preds = %128
  br label %132

132:                                              ; preds = %131
  br label %928

133:                                              ; preds = %124
  %134 = load ptr, ptr %3, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.TLS_CONNECT, ptr %134, i32 0, i32 11
  %136 = load i32, ptr %135, align 8, !tbaa !22
  %137 = call i32 @tls13_cipher_suite_get(i32 noundef %136, ptr noundef %26, ptr noundef %25)
  %138 = load ptr, ptr %26, align 8, !tbaa !5
  %139 = call i32 @digest_init(ptr noundef %27, ptr noundef %138)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %28, ptr align 8 %27, i64 120, i1 false), !tbaa.struct !23
  %140 = load ptr, ptr %5, align 8, !tbaa !5
  %141 = getelementptr inbounds i8, ptr %140, i64 5
  %142 = load i64, ptr %6, align 8, !tbaa !11
  %143 = sub i64 %142, 5
  %144 = call i32 @digest_update(ptr noundef %27, ptr noundef %141, i64 noundef %143)
  %145 = getelementptr inbounds [32 x i8], ptr %17, i64 0, i64 0
  %146 = call i32 @rand_bytes(ptr noundef %145, i64 noundef 32)
  %147 = call i32 @sm2_key_generate(ptr noundef %22)
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = load i64, ptr %15, align 8, !tbaa !11
  %150 = getelementptr inbounds [512 x i8], ptr %20, i64 0, i64 0
  %151 = call i32 @tls13_process_client_hello_exts(ptr noundef %148, i64 noundef %149, ptr noundef %22, ptr noundef %23, ptr noundef %150, ptr noundef %21, i64 noundef 512)
  %152 = icmp ne i32 %151, 1
  br i1 %152, label %153, label %161

153:                                              ; preds = %133
  br label %154

154:                                              ; preds = %153
  %155 = load ptr, ptr @stderr, align 8, !tbaa !5
  %156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %155, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2068, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %157

157:                                              ; preds = %154
  br label %158

158:                                              ; preds = %157
  %159 = load ptr, ptr %3, align 8, !tbaa !5
  %160 = call i32 @tls_send_alert(ptr noundef %159, i32 noundef 10)
  br label %928

161:                                              ; preds = %133
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  %163 = call i32 @tls_record_set_protocol(ptr noundef %162, i32 noundef 771)
  %164 = load ptr, ptr %5, align 8, !tbaa !5
  %165 = getelementptr inbounds [32 x i8], ptr %17, i64 0, i64 0
  %166 = load ptr, ptr %3, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.TLS_CONNECT, ptr %166, i32 0, i32 11
  %168 = load i32, ptr %167, align 8, !tbaa !22
  %169 = getelementptr inbounds [512 x i8], ptr %20, i64 0, i64 0
  %170 = load i64, ptr %21, align 8, !tbaa !11
  %171 = call i32 @tls_record_set_handshake_server_hello(ptr noundef %164, ptr noundef %6, i32 noundef 771, ptr noundef %165, ptr noundef null, i64 noundef 0, i32 noundef %168, ptr noundef %169, i64 noundef %170)
  %172 = icmp ne i32 %171, 1
  br i1 %172, label %173, label %181

173:                                              ; preds = %161
  br label %174

174:                                              ; preds = %173
  %175 = load ptr, ptr @stderr, align 8, !tbaa !5
  %176 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %175, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2077, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %177

177:                                              ; preds = %174
  br label %178

178:                                              ; preds = %177
  %179 = load ptr, ptr %3, align 8, !tbaa !5
  %180 = call i32 @tls_send_alert(ptr noundef %179, i32 noundef 10)
  br label %928

181:                                              ; preds = %161
  %182 = load ptr, ptr %5, align 8, !tbaa !5
  %183 = load i64, ptr %6, align 8, !tbaa !11
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.TLS_CONNECT, ptr %184, i32 0, i32 4
  %186 = load i32, ptr %185, align 8, !tbaa !21
  %187 = call i32 @tls_record_send(ptr noundef %182, i64 noundef %183, i32 noundef %186)
  %188 = icmp ne i32 %187, 1
  br i1 %188, label %189, label %195

189:                                              ; preds = %181
  br label %190

190:                                              ; preds = %189
  %191 = load ptr, ptr @stderr, align 8, !tbaa !5
  %192 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %191, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2083, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %193

193:                                              ; preds = %190
  br label %194

194:                                              ; preds = %193
  br label %928

195:                                              ; preds = %181
  %196 = load ptr, ptr %5, align 8, !tbaa !5
  %197 = getelementptr inbounds i8, ptr %196, i64 5
  %198 = load i64, ptr %6, align 8, !tbaa !11
  %199 = sub i64 %198, 5
  %200 = call i32 @digest_update(ptr noundef %27, ptr noundef %197, i64 noundef %199)
  %201 = call i32 @sm2_do_ecdh(ptr noundef %22, ptr noundef %23, ptr noundef %23)
  %202 = getelementptr inbounds [64 x i8], ptr %54, i64 0, i64 0
  %203 = call i32 @sm2_z256_point_to_bytes(ptr noundef %23, ptr noundef %202)
  %204 = load ptr, ptr %26, align 8, !tbaa !5
  %205 = getelementptr inbounds [32 x i8], ptr %38, i64 0, i64 0
  %206 = getelementptr inbounds [32 x i8], ptr %39, i64 0, i64 0
  %207 = getelementptr inbounds [32 x i8], ptr %40, i64 0, i64 0
  %208 = call i32 @tls13_hkdf_extract(ptr noundef %204, ptr noundef %205, ptr noundef %206, ptr noundef %207)
  %209 = getelementptr inbounds [32 x i8], ptr %40, i64 0, i64 0
  %210 = getelementptr inbounds [32 x i8], ptr %41, i64 0, i64 0
  %211 = call i32 @tls13_derive_secret(ptr noundef %209, ptr noundef @.str.16, ptr noundef %28, ptr noundef %210)
  %212 = load ptr, ptr %26, align 8, !tbaa !5
  %213 = getelementptr inbounds [32 x i8], ptr %41, i64 0, i64 0
  %214 = getelementptr inbounds [64 x i8], ptr %54, i64 0, i64 0
  %215 = getelementptr inbounds [32 x i8], ptr %41, i64 0, i64 0
  %216 = call i32 @tls13_hkdf_extract(ptr noundef %212, ptr noundef %213, ptr noundef %214, ptr noundef %215)
  %217 = getelementptr inbounds [32 x i8], ptr %41, i64 0, i64 0
  %218 = getelementptr inbounds [32 x i8], ptr %42, i64 0, i64 0
  %219 = call i32 @tls13_derive_secret(ptr noundef %217, ptr noundef @.str.17, ptr noundef %27, ptr noundef %218)
  %220 = getelementptr inbounds [32 x i8], ptr %41, i64 0, i64 0
  %221 = getelementptr inbounds [32 x i8], ptr %43, i64 0, i64 0
  %222 = call i32 @tls13_derive_secret(ptr noundef %220, ptr noundef @.str.18, ptr noundef %27, ptr noundef %221)
  %223 = getelementptr inbounds [32 x i8], ptr %41, i64 0, i64 0
  %224 = getelementptr inbounds [32 x i8], ptr %46, i64 0, i64 0
  %225 = call i32 @tls13_derive_secret(ptr noundef %223, ptr noundef @.str.16, ptr noundef %28, ptr noundef %224)
  %226 = load ptr, ptr %26, align 8, !tbaa !5
  %227 = getelementptr inbounds [32 x i8], ptr %46, i64 0, i64 0
  %228 = getelementptr inbounds [32 x i8], ptr %38, i64 0, i64 0
  %229 = getelementptr inbounds [32 x i8], ptr %46, i64 0, i64 0
  %230 = call i32 @tls13_hkdf_extract(ptr noundef %226, ptr noundef %227, ptr noundef %228, ptr noundef %229)
  %231 = load ptr, ptr %26, align 8, !tbaa !5
  %232 = getelementptr inbounds [32 x i8], ptr %43, i64 0, i64 0
  %233 = getelementptr inbounds [16 x i8], ptr %37, i64 0, i64 0
  %234 = call i32 @tls13_hkdf_expand_label(ptr noundef %231, ptr noundef %232, ptr noundef @.str.19, ptr noundef null, i64 noundef 0, i64 noundef 16, ptr noundef %233)
  %235 = load ptr, ptr %3, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.TLS_CONNECT, ptr %235, i32 0, i32 34
  %237 = load ptr, ptr %25, align 8, !tbaa !5
  %238 = getelementptr inbounds [16 x i8], ptr %37, i64 0, i64 0
  %239 = call i32 @block_cipher_set_encrypt_key(ptr noundef %236, ptr noundef %237, ptr noundef %238)
  %240 = load ptr, ptr %26, align 8, !tbaa !5
  %241 = getelementptr inbounds [32 x i8], ptr %43, i64 0, i64 0
  %242 = load ptr, ptr %3, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.TLS_CONNECT, ptr %242, i32 0, i32 32
  %244 = getelementptr inbounds [12 x i8], ptr %243, i64 0, i64 0
  %245 = call i32 @tls13_hkdf_expand_label(ptr noundef %240, ptr noundef %241, ptr noundef @.str.20, ptr noundef null, i64 noundef 0, i64 noundef 12, ptr noundef %244)
  %246 = load ptr, ptr %3, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.TLS_CONNECT, ptr %246, i32 0, i32 30
  %248 = getelementptr inbounds [8 x i8], ptr %247, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %248, i8 0, i64 8, i1 false)
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = getelementptr inbounds [32 x i8], ptr %42, i64 0, i64 0
  %251 = getelementptr inbounds [16 x i8], ptr %36, i64 0, i64 0
  %252 = call i32 @tls13_hkdf_expand_label(ptr noundef %249, ptr noundef %250, ptr noundef @.str.19, ptr noundef null, i64 noundef 0, i64 noundef 16, ptr noundef %251)
  %253 = load ptr, ptr %3, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.TLS_CONNECT, ptr %253, i32 0, i32 33
  %255 = load ptr, ptr %25, align 8, !tbaa !5
  %256 = getelementptr inbounds [16 x i8], ptr %36, i64 0, i64 0
  %257 = call i32 @block_cipher_set_encrypt_key(ptr noundef %254, ptr noundef %255, ptr noundef %256)
  %258 = load ptr, ptr %26, align 8, !tbaa !5
  %259 = getelementptr inbounds [32 x i8], ptr %42, i64 0, i64 0
  %260 = load ptr, ptr %3, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.TLS_CONNECT, ptr %260, i32 0, i32 31
  %262 = getelementptr inbounds [12 x i8], ptr %261, i64 0, i64 0
  %263 = call i32 @tls13_hkdf_expand_label(ptr noundef %258, ptr noundef %259, ptr noundef @.str.20, ptr noundef null, i64 noundef 0, i64 noundef 12, ptr noundef %262)
  %264 = load ptr, ptr %3, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.TLS_CONNECT, ptr %264, i32 0, i32 29
  %266 = getelementptr inbounds [8 x i8], ptr %265, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %266, i8 0, i64 8, i1 false)
  %267 = load ptr, ptr %5, align 8, !tbaa !5
  %268 = call i32 @tls_record_set_protocol(ptr noundef %267, i32 noundef 771)
  %269 = load ptr, ptr %5, align 8, !tbaa !5
  %270 = call i32 @tls13_record_set_handshake_encrypted_extensions(ptr noundef %269, ptr noundef %6)
  %271 = call i32 @tls13_padding_len_rand(ptr noundef %29)
  %272 = load ptr, ptr %3, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.TLS_CONNECT, ptr %272, i32 0, i32 34
  %274 = load ptr, ptr %3, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.TLS_CONNECT, ptr %274, i32 0, i32 32
  %276 = getelementptr inbounds [12 x i8], ptr %275, i64 0, i64 0
  %277 = load ptr, ptr %3, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.TLS_CONNECT, ptr %277, i32 0, i32 30
  %279 = getelementptr inbounds [8 x i8], ptr %278, i64 0, i64 0
  %280 = load ptr, ptr %5, align 8, !tbaa !5
  %281 = load i64, ptr %6, align 8, !tbaa !11
  %282 = load i64, ptr %29, align 8, !tbaa !11
  %283 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %284 = call i32 @tls13_record_encrypt(ptr noundef %273, ptr noundef %276, ptr noundef %279, ptr noundef %280, i64 noundef %281, i64 noundef %282, ptr noundef %283, ptr noundef %8)
  %285 = icmp ne i32 %284, 1
  br i1 %285, label %286, label %294

286:                                              ; preds = %195
  br label %287

287:                                              ; preds = %286
  %288 = load ptr, ptr @stderr, align 8, !tbaa !5
  %289 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %288, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2128, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %290

290:                                              ; preds = %287
  br label %291

291:                                              ; preds = %290
  %292 = load ptr, ptr %3, align 8, !tbaa !5
  %293 = call i32 @tls_send_alert(ptr noundef %292, i32 noundef 80)
  br label %928

294:                                              ; preds = %195
  %295 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %296 = load i64, ptr %8, align 8, !tbaa !11
  %297 = load ptr, ptr %3, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.TLS_CONNECT, ptr %297, i32 0, i32 4
  %299 = load i32, ptr %298, align 8, !tbaa !21
  %300 = call i32 @tls_record_send(ptr noundef %295, i64 noundef %296, i32 noundef %299)
  %301 = icmp ne i32 %300, 1
  br i1 %301, label %302, label %308

302:                                              ; preds = %294
  br label %303

303:                                              ; preds = %302
  %304 = load ptr, ptr @stderr, align 8, !tbaa !5
  %305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %304, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2135, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %306

306:                                              ; preds = %303
  br label %307

307:                                              ; preds = %306
  br label %928

308:                                              ; preds = %294
  %309 = load ptr, ptr %5, align 8, !tbaa !5
  %310 = getelementptr inbounds i8, ptr %309, i64 5
  %311 = load i64, ptr %6, align 8, !tbaa !11
  %312 = sub i64 %311, 5
  %313 = call i32 @digest_update(ptr noundef %27, ptr noundef %310, i64 noundef %312)
  %314 = load ptr, ptr %3, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.TLS_CONNECT, ptr %314, i32 0, i32 30
  %316 = getelementptr inbounds [8 x i8], ptr %315, i64 0, i64 0
  %317 = call i32 @tls_seq_num_incr(ptr noundef %316)
  %318 = load i32, ptr %53, align 4, !tbaa !9
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %320, label %380

320:                                              ; preds = %308
  %321 = load ptr, ptr %5, align 8, !tbaa !5
  %322 = call i32 @tls13_record_set_handshake_certificate_request_default(ptr noundef %321, ptr noundef %6)
  %323 = icmp ne i32 %322, 1
  br i1 %323, label %324, label %332

324:                                              ; preds = %320
  br label %325

325:                                              ; preds = %324
  %326 = load ptr, ptr @stderr, align 8, !tbaa !5
  %327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %326, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2148, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %328

328:                                              ; preds = %325
  br label %329

329:                                              ; preds = %328
  %330 = load ptr, ptr %3, align 8, !tbaa !5
  %331 = call i32 @tls_send_alert(ptr noundef %330, i32 noundef 80)
  br label %928

332:                                              ; preds = %320
  %333 = call i32 @tls13_padding_len_rand(ptr noundef %29)
  %334 = load ptr, ptr %3, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.TLS_CONNECT, ptr %334, i32 0, i32 34
  %336 = load ptr, ptr %3, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.TLS_CONNECT, ptr %336, i32 0, i32 32
  %338 = getelementptr inbounds [12 x i8], ptr %337, i64 0, i64 0
  %339 = load ptr, ptr %3, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.TLS_CONNECT, ptr %339, i32 0, i32 30
  %341 = getelementptr inbounds [8 x i8], ptr %340, i64 0, i64 0
  %342 = load ptr, ptr %5, align 8, !tbaa !5
  %343 = load i64, ptr %6, align 8, !tbaa !11
  %344 = load i64, ptr %29, align 8, !tbaa !11
  %345 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %346 = call i32 @tls13_record_encrypt(ptr noundef %335, ptr noundef %338, ptr noundef %341, ptr noundef %342, i64 noundef %343, i64 noundef %344, ptr noundef %345, ptr noundef %8)
  %347 = icmp ne i32 %346, 1
  br i1 %347, label %348, label %356

348:                                              ; preds = %332
  br label %349

349:                                              ; preds = %348
  %350 = load ptr, ptr @stderr, align 8, !tbaa !5
  %351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %350, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2157, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %352

352:                                              ; preds = %349
  br label %353

353:                                              ; preds = %352
  %354 = load ptr, ptr %3, align 8, !tbaa !5
  %355 = call i32 @tls_send_alert(ptr noundef %354, i32 noundef 80)
  br label %928

356:                                              ; preds = %332
  %357 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %358 = load i64, ptr %8, align 8, !tbaa !11
  %359 = load ptr, ptr %3, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.TLS_CONNECT, ptr %359, i32 0, i32 4
  %361 = load i32, ptr %360, align 8, !tbaa !21
  %362 = call i32 @tls_record_send(ptr noundef %357, i64 noundef %358, i32 noundef %361)
  %363 = icmp ne i32 %362, 1
  br i1 %363, label %364, label %370

364:                                              ; preds = %356
  br label %365

365:                                              ; preds = %364
  %366 = load ptr, ptr @stderr, align 8, !tbaa !5
  %367 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %366, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2162, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %368

368:                                              ; preds = %365
  br label %369

369:                                              ; preds = %368
  br label %928

370:                                              ; preds = %356
  %371 = load ptr, ptr %5, align 8, !tbaa !5
  %372 = getelementptr inbounds i8, ptr %371, i64 5
  %373 = load i64, ptr %6, align 8, !tbaa !11
  %374 = sub i64 %373, 5
  %375 = call i32 @digest_update(ptr noundef %27, ptr noundef %372, i64 noundef %374)
  %376 = load ptr, ptr %3, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.TLS_CONNECT, ptr %376, i32 0, i32 30
  %378 = getelementptr inbounds [8 x i8], ptr %377, i64 0, i64 0
  %379 = call i32 @tls_seq_num_incr(ptr noundef %378)
  br label %380

380:                                              ; preds = %370, %308
  %381 = load ptr, ptr %5, align 8, !tbaa !5
  %382 = load ptr, ptr %3, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.TLS_CONNECT, ptr %382, i32 0, i32 14
  %384 = getelementptr inbounds [2048 x i8], ptr %383, i64 0, i64 0
  %385 = load ptr, ptr %3, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.TLS_CONNECT, ptr %385, i32 0, i32 15
  %387 = load i64, ptr %386, align 8, !tbaa !25
  %388 = call i32 @tls13_record_set_handshake_certificate(ptr noundef %381, ptr noundef %6, ptr noundef null, i64 noundef 0, ptr noundef %384, i64 noundef %387)
  %389 = icmp ne i32 %388, 1
  br i1 %389, label %390, label %398

390:                                              ; preds = %380
  br label %391

391:                                              ; preds = %390
  %392 = load ptr, ptr @stderr, align 8, !tbaa !5
  %393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %392, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2172, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %394

394:                                              ; preds = %391
  br label %395

395:                                              ; preds = %394
  %396 = load ptr, ptr %3, align 8, !tbaa !5
  %397 = call i32 @tls_send_alert(ptr noundef %396, i32 noundef 80)
  br label %928

398:                                              ; preds = %380
  %399 = call i32 @tls13_padding_len_rand(ptr noundef %29)
  %400 = load ptr, ptr %3, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.TLS_CONNECT, ptr %400, i32 0, i32 34
  %402 = load ptr, ptr %3, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.TLS_CONNECT, ptr %402, i32 0, i32 32
  %404 = getelementptr inbounds [12 x i8], ptr %403, i64 0, i64 0
  %405 = load ptr, ptr %3, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.TLS_CONNECT, ptr %405, i32 0, i32 30
  %407 = getelementptr inbounds [8 x i8], ptr %406, i64 0, i64 0
  %408 = load ptr, ptr %5, align 8, !tbaa !5
  %409 = load i64, ptr %6, align 8, !tbaa !11
  %410 = load i64, ptr %29, align 8, !tbaa !11
  %411 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %412 = call i32 @tls13_record_encrypt(ptr noundef %401, ptr noundef %404, ptr noundef %407, ptr noundef %408, i64 noundef %409, i64 noundef %410, ptr noundef %411, ptr noundef %8)
  %413 = icmp ne i32 %412, 1
  br i1 %413, label %414, label %422

414:                                              ; preds = %398
  br label %415

415:                                              ; preds = %414
  %416 = load ptr, ptr @stderr, align 8, !tbaa !5
  %417 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %416, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2181, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %418

418:                                              ; preds = %415
  br label %419

419:                                              ; preds = %418
  %420 = load ptr, ptr %3, align 8, !tbaa !5
  %421 = call i32 @tls_send_alert(ptr noundef %420, i32 noundef 80)
  br label %928

422:                                              ; preds = %398
  %423 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %424 = load i64, ptr %8, align 8, !tbaa !11
  %425 = load ptr, ptr %3, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.TLS_CONNECT, ptr %425, i32 0, i32 4
  %427 = load i32, ptr %426, align 8, !tbaa !21
  %428 = call i32 @tls_record_send(ptr noundef %423, i64 noundef %424, i32 noundef %427)
  %429 = icmp ne i32 %428, 1
  br i1 %429, label %430, label %436

430:                                              ; preds = %422
  br label %431

431:                                              ; preds = %430
  %432 = load ptr, ptr @stderr, align 8, !tbaa !5
  %433 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %432, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2186, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %434

434:                                              ; preds = %431
  br label %435

435:                                              ; preds = %434
  br label %928

436:                                              ; preds = %422
  %437 = load ptr, ptr %5, align 8, !tbaa !5
  %438 = getelementptr inbounds i8, ptr %437, i64 5
  %439 = load i64, ptr %6, align 8, !tbaa !11
  %440 = sub i64 %439, 5
  %441 = call i32 @digest_update(ptr noundef %27, ptr noundef %438, i64 noundef %440)
  %442 = load ptr, ptr %3, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.TLS_CONNECT, ptr %442, i32 0, i32 30
  %444 = getelementptr inbounds [8 x i8], ptr %443, i64 0, i64 0
  %445 = call i32 @tls_seq_num_incr(ptr noundef %444)
  %446 = load ptr, ptr %3, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.TLS_CONNECT, ptr %446, i32 0, i32 20
  %448 = getelementptr inbounds [72 x i8], ptr %30, i64 0, i64 0
  %449 = call i32 @tls13_sign_certificate_verify(i32 noundef 0, ptr noundef %447, ptr noundef @.str.22, i64 noundef 23, ptr noundef %27, ptr noundef %448, ptr noundef %31)
  %450 = load ptr, ptr %5, align 8, !tbaa !5
  %451 = getelementptr inbounds [72 x i8], ptr %30, i64 0, i64 0
  %452 = load i64, ptr %31, align 8, !tbaa !11
  %453 = call i32 @tls13_record_set_handshake_certificate_verify(ptr noundef %450, ptr noundef %6, i32 noundef 1800, ptr noundef %451, i64 noundef %452)
  %454 = icmp ne i32 %453, 1
  br i1 %454, label %455, label %463

455:                                              ; preds = %436
  br label %456

456:                                              ; preds = %455
  %457 = load ptr, ptr @stderr, align 8, !tbaa !5
  %458 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %457, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2198, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %459

459:                                              ; preds = %456
  br label %460

460:                                              ; preds = %459
  %461 = load ptr, ptr %3, align 8, !tbaa !5
  %462 = call i32 @tls_send_alert(ptr noundef %461, i32 noundef 80)
  br label %928

463:                                              ; preds = %436
  %464 = call i32 @tls13_padding_len_rand(ptr noundef %29)
  %465 = load ptr, ptr %3, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.TLS_CONNECT, ptr %465, i32 0, i32 34
  %467 = load ptr, ptr %3, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.TLS_CONNECT, ptr %467, i32 0, i32 32
  %469 = getelementptr inbounds [12 x i8], ptr %468, i64 0, i64 0
  %470 = load ptr, ptr %3, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.TLS_CONNECT, ptr %470, i32 0, i32 30
  %472 = getelementptr inbounds [8 x i8], ptr %471, i64 0, i64 0
  %473 = load ptr, ptr %5, align 8, !tbaa !5
  %474 = load i64, ptr %6, align 8, !tbaa !11
  %475 = load i64, ptr %29, align 8, !tbaa !11
  %476 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %477 = call i32 @tls13_record_encrypt(ptr noundef %466, ptr noundef %469, ptr noundef %472, ptr noundef %473, i64 noundef %474, i64 noundef %475, ptr noundef %476, ptr noundef %8)
  %478 = icmp ne i32 %477, 1
  br i1 %478, label %479, label %487

479:                                              ; preds = %463
  br label %480

480:                                              ; preds = %479
  %481 = load ptr, ptr @stderr, align 8, !tbaa !5
  %482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %481, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2207, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %483

483:                                              ; preds = %480
  br label %484

484:                                              ; preds = %483
  %485 = load ptr, ptr %3, align 8, !tbaa !5
  %486 = call i32 @tls_send_alert(ptr noundef %485, i32 noundef 80)
  br label %928

487:                                              ; preds = %463
  %488 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %489 = load i64, ptr %8, align 8, !tbaa !11
  %490 = load ptr, ptr %3, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.TLS_CONNECT, ptr %490, i32 0, i32 4
  %492 = load i32, ptr %491, align 8, !tbaa !21
  %493 = call i32 @tls_record_send(ptr noundef %488, i64 noundef %489, i32 noundef %492)
  %494 = icmp ne i32 %493, 1
  br i1 %494, label %495, label %501

495:                                              ; preds = %487
  br label %496

496:                                              ; preds = %495
  %497 = load ptr, ptr @stderr, align 8, !tbaa !5
  %498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %497, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2212, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %499

499:                                              ; preds = %496
  br label %500

500:                                              ; preds = %499
  br label %928

501:                                              ; preds = %487
  %502 = load ptr, ptr %5, align 8, !tbaa !5
  %503 = getelementptr inbounds i8, ptr %502, i64 5
  %504 = load i64, ptr %6, align 8, !tbaa !11
  %505 = sub i64 %504, 5
  %506 = call i32 @digest_update(ptr noundef %27, ptr noundef %503, i64 noundef %505)
  %507 = load ptr, ptr %3, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.TLS_CONNECT, ptr %507, i32 0, i32 30
  %509 = getelementptr inbounds [8 x i8], ptr %508, i64 0, i64 0
  %510 = call i32 @tls_seq_num_incr(ptr noundef %509)
  %511 = getelementptr inbounds [32 x i8], ptr %43, i64 0, i64 0
  %512 = getelementptr inbounds [32 x i8], ptr %32, i64 0, i64 0
  %513 = call i32 @tls13_compute_verify_data(ptr noundef %511, ptr noundef %27, ptr noundef %512, ptr noundef %33)
  %514 = load ptr, ptr %5, align 8, !tbaa !5
  %515 = getelementptr inbounds [32 x i8], ptr %32, i64 0, i64 0
  %516 = load i64, ptr %33, align 8, !tbaa !11
  %517 = call i32 @tls13_record_set_handshake_finished(ptr noundef %514, ptr noundef %6, ptr noundef %515, i64 noundef %516)
  %518 = icmp ne i32 %517, 1
  br i1 %518, label %519, label %527

519:                                              ; preds = %501
  br label %520

520:                                              ; preds = %519
  %521 = load ptr, ptr @stderr, align 8, !tbaa !5
  %522 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %521, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2226, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %523

523:                                              ; preds = %520
  br label %524

524:                                              ; preds = %523
  %525 = load ptr, ptr %3, align 8, !tbaa !5
  %526 = call i32 @tls_send_alert(ptr noundef %525, i32 noundef 80)
  br label %928

527:                                              ; preds = %501
  %528 = call i32 @tls13_padding_len_rand(ptr noundef %29)
  %529 = load ptr, ptr %3, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.TLS_CONNECT, ptr %529, i32 0, i32 34
  %531 = load ptr, ptr %3, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.TLS_CONNECT, ptr %531, i32 0, i32 32
  %533 = getelementptr inbounds [12 x i8], ptr %532, i64 0, i64 0
  %534 = load ptr, ptr %3, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.TLS_CONNECT, ptr %534, i32 0, i32 30
  %536 = getelementptr inbounds [8 x i8], ptr %535, i64 0, i64 0
  %537 = load ptr, ptr %5, align 8, !tbaa !5
  %538 = load i64, ptr %6, align 8, !tbaa !11
  %539 = load i64, ptr %29, align 8, !tbaa !11
  %540 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %541 = call i32 @tls13_record_encrypt(ptr noundef %530, ptr noundef %533, ptr noundef %536, ptr noundef %537, i64 noundef %538, i64 noundef %539, ptr noundef %540, ptr noundef %8)
  %542 = icmp ne i32 %541, 1
  br i1 %542, label %543, label %551

543:                                              ; preds = %527
  br label %544

544:                                              ; preds = %543
  %545 = load ptr, ptr @stderr, align 8, !tbaa !5
  %546 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %545, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2235, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %547

547:                                              ; preds = %544
  br label %548

548:                                              ; preds = %547
  %549 = load ptr, ptr %3, align 8, !tbaa !5
  %550 = call i32 @tls_send_alert(ptr noundef %549, i32 noundef 80)
  br label %928

551:                                              ; preds = %527
  %552 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %553 = load i64, ptr %8, align 8, !tbaa !11
  %554 = load ptr, ptr %3, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.TLS_CONNECT, ptr %554, i32 0, i32 4
  %556 = load i32, ptr %555, align 8, !tbaa !21
  %557 = call i32 @tls_record_send(ptr noundef %552, i64 noundef %553, i32 noundef %556)
  %558 = icmp ne i32 %557, 1
  br i1 %558, label %559, label %565

559:                                              ; preds = %551
  br label %560

560:                                              ; preds = %559
  %561 = load ptr, ptr @stderr, align 8, !tbaa !5
  %562 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %561, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2240, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %563

563:                                              ; preds = %560
  br label %564

564:                                              ; preds = %563
  br label %928

565:                                              ; preds = %551
  %566 = load ptr, ptr %5, align 8, !tbaa !5
  %567 = getelementptr inbounds i8, ptr %566, i64 5
  %568 = load i64, ptr %6, align 8, !tbaa !11
  %569 = sub i64 %568, 5
  %570 = call i32 @digest_update(ptr noundef %27, ptr noundef %567, i64 noundef %569)
  %571 = load ptr, ptr %3, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.TLS_CONNECT, ptr %571, i32 0, i32 30
  %573 = getelementptr inbounds [8 x i8], ptr %572, i64 0, i64 0
  %574 = call i32 @tls_seq_num_incr(ptr noundef %573)
  %575 = getelementptr inbounds [32 x i8], ptr %46, i64 0, i64 0
  %576 = getelementptr inbounds [32 x i8], ptr %45, i64 0, i64 0
  %577 = call i32 @tls13_derive_secret(ptr noundef %575, ptr noundef @.str.23, ptr noundef %27, ptr noundef %576)
  %578 = getelementptr inbounds [32 x i8], ptr %46, i64 0, i64 0
  %579 = getelementptr inbounds [32 x i8], ptr %44, i64 0, i64 0
  %580 = call i32 @tls13_derive_secret(ptr noundef %578, ptr noundef @.str.24, ptr noundef %27, ptr noundef %579)
  %581 = load i32, ptr %53, align 4, !tbaa !9
  %582 = icmp ne i32 %581, 0
  br i1 %582, label %583, label %716

583:                                              ; preds = %565
  %584 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %585 = load ptr, ptr %3, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.TLS_CONNECT, ptr %585, i32 0, i32 4
  %587 = load i32, ptr %586, align 8, !tbaa !21
  %588 = call i32 @tls_record_recv(ptr noundef %584, ptr noundef %8, i32 noundef %587)
  %589 = icmp ne i32 %588, 1
  br i1 %589, label %590, label %598

590:                                              ; preds = %583
  br label %591

591:                                              ; preds = %590
  %592 = load ptr, ptr @stderr, align 8, !tbaa !5
  %593 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %592, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2256, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %594

594:                                              ; preds = %591
  br label %595

595:                                              ; preds = %594
  %596 = load ptr, ptr %3, align 8, !tbaa !5
  %597 = call i32 @tls_send_alert(ptr noundef %596, i32 noundef 10)
  br label %928

598:                                              ; preds = %583
  %599 = load ptr, ptr %3, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.TLS_CONNECT, ptr %599, i32 0, i32 33
  %601 = load ptr, ptr %3, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.TLS_CONNECT, ptr %601, i32 0, i32 31
  %603 = getelementptr inbounds [12 x i8], ptr %602, i64 0, i64 0
  %604 = load ptr, ptr %3, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.TLS_CONNECT, ptr %604, i32 0, i32 29
  %606 = getelementptr inbounds [8 x i8], ptr %605, i64 0, i64 0
  %607 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %608 = load i64, ptr %8, align 8, !tbaa !11
  %609 = load ptr, ptr %5, align 8, !tbaa !5
  %610 = call i32 @tls13_record_decrypt(ptr noundef %600, ptr noundef %603, ptr noundef %606, ptr noundef %607, i64 noundef %608, ptr noundef %609, ptr noundef %6)
  %611 = icmp ne i32 %610, 1
  br i1 %611, label %612, label %620

612:                                              ; preds = %598
  br label %613

613:                                              ; preds = %612
  %614 = load ptr, ptr @stderr, align 8, !tbaa !5
  %615 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %614, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2263, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %616

616:                                              ; preds = %613
  br label %617

617:                                              ; preds = %616
  %618 = load ptr, ptr %3, align 8, !tbaa !5
  %619 = call i32 @tls_send_alert(ptr noundef %618, i32 noundef 20)
  br label %928

620:                                              ; preds = %598
  %621 = load ptr, ptr %5, align 8, !tbaa !5
  %622 = call i32 @tls13_record_get_handshake_certificate(ptr noundef %621, ptr noundef %47, ptr noundef %48, ptr noundef %49, ptr noundef %50)
  %623 = icmp ne i32 %622, 1
  br i1 %623, label %624, label %632

624:                                              ; preds = %620
  br label %625

625:                                              ; preds = %624
  %626 = load ptr, ptr @stderr, align 8, !tbaa !5
  %627 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %626, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2272, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %628

628:                                              ; preds = %625
  br label %629

629:                                              ; preds = %628
  %630 = load ptr, ptr %3, align 8, !tbaa !5
  %631 = call i32 @tls_send_alert(ptr noundef %630, i32 noundef 10)
  br label %928

632:                                              ; preds = %620
  %633 = load ptr, ptr %49, align 8, !tbaa !5
  %634 = load i64, ptr %50, align 8, !tbaa !11
  %635 = load ptr, ptr %3, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.TLS_CONNECT, ptr %635, i32 0, i32 16
  %637 = getelementptr inbounds [2048 x i8], ptr %636, i64 0, i64 0
  %638 = load ptr, ptr %3, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.TLS_CONNECT, ptr %638, i32 0, i32 17
  %640 = call i32 @tls13_process_certificate_list(ptr noundef %633, i64 noundef %634, ptr noundef %637, ptr noundef %639)
  %641 = icmp ne i32 %640, 1
  br i1 %641, label %642, label %650

642:                                              ; preds = %632
  br label %643

643:                                              ; preds = %642
  %644 = load ptr, ptr @stderr, align 8, !tbaa !5
  %645 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %644, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2277, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %646

646:                                              ; preds = %643
  br label %647

647:                                              ; preds = %646
  %648 = load ptr, ptr %3, align 8, !tbaa !5
  %649 = call i32 @tls_send_alert(ptr noundef %648, i32 noundef 10)
  br label %928

650:                                              ; preds = %632
  %651 = load ptr, ptr %3, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.TLS_CONNECT, ptr %651, i32 0, i32 16
  %653 = getelementptr inbounds [2048 x i8], ptr %652, i64 0, i64 0
  %654 = load ptr, ptr %3, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.TLS_CONNECT, ptr %654, i32 0, i32 17
  %656 = load i64, ptr %655, align 8, !tbaa !26
  %657 = call i32 @x509_certs_get_cert_by_index(ptr noundef %653, i64 noundef %656, i32 noundef 0, ptr noundef %51, ptr noundef %52)
  %658 = icmp ne i32 %657, 1
  br i1 %658, label %659, label %667

659:                                              ; preds = %650
  br label %660

660:                                              ; preds = %659
  %661 = load ptr, ptr @stderr, align 8, !tbaa !5
  %662 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %661, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2282, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %663

663:                                              ; preds = %660
  br label %664

664:                                              ; preds = %663
  %665 = load ptr, ptr %3, align 8, !tbaa !5
  %666 = call i32 @tls_send_alert(ptr noundef %665, i32 noundef 10)
  br label %928

667:                                              ; preds = %650
  %668 = load ptr, ptr %51, align 8, !tbaa !5
  %669 = load i64, ptr %52, align 8, !tbaa !11
  %670 = call i32 @x509_cert_get_subject_public_key(ptr noundef %668, i64 noundef %669, ptr noundef %24)
  %671 = icmp ne i32 %670, 1
  br i1 %671, label %672, label %680

672:                                              ; preds = %667
  br label %673

673:                                              ; preds = %672
  %674 = load ptr, ptr @stderr, align 8, !tbaa !5
  %675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %674, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2287, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %676

676:                                              ; preds = %673
  br label %677

677:                                              ; preds = %676
  %678 = load ptr, ptr %3, align 8, !tbaa !5
  %679 = call i32 @tls_send_alert(ptr noundef %678, i32 noundef 10)
  br label %928

680:                                              ; preds = %667
  %681 = load ptr, ptr %5, align 8, !tbaa !5
  %682 = getelementptr inbounds i8, ptr %681, i64 5
  %683 = load i64, ptr %6, align 8, !tbaa !11
  %684 = sub i64 %683, 5
  %685 = call i32 @digest_update(ptr noundef %27, ptr noundef %682, i64 noundef %684)
  %686 = load ptr, ptr %3, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.TLS_CONNECT, ptr %686, i32 0, i32 29
  %688 = getelementptr inbounds [8 x i8], ptr %687, i64 0, i64 0
  %689 = call i32 @tls_seq_num_incr(ptr noundef %688)
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  %690 = load ptr, ptr %3, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.TLS_CONNECT, ptr %690, i32 0, i32 16
  %692 = getelementptr inbounds [2048 x i8], ptr %691, i64 0, i64 0
  %693 = load ptr, ptr %3, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.TLS_CONNECT, ptr %693, i32 0, i32 17
  %695 = load i64, ptr %694, align 8, !tbaa !26
  %696 = load ptr, ptr %3, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.TLS_CONNECT, ptr %696, i32 0, i32 18
  %698 = getelementptr inbounds [2048 x i8], ptr %697, i64 0, i64 0
  %699 = load ptr, ptr %3, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.TLS_CONNECT, ptr %699, i32 0, i32 19
  %701 = load i64, ptr %700, align 8, !tbaa !13
  %702 = call i32 @x509_certs_verify(ptr noundef %692, i64 noundef %695, i32 noundef 1, ptr noundef %698, i64 noundef %701, i32 noundef 6, ptr noundef %55)
  %703 = icmp ne i32 %702, 1
  br i1 %703, label %704, label %712

704:                                              ; preds = %680
  br label %705

705:                                              ; preds = %704
  %706 = load ptr, ptr @stderr, align 8, !tbaa !5
  %707 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %706, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2298, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %708

708:                                              ; preds = %705
  br label %709

709:                                              ; preds = %708
  %710 = load ptr, ptr %3, align 8, !tbaa !5
  %711 = call i32 @tls_send_alert(ptr noundef %710, i32 noundef 42)
  store i32 4, ptr %56, align 4
  br label %713

712:                                              ; preds = %680
  store i32 0, ptr %56, align 4
  br label %713

713:                                              ; preds = %712, %709
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  %714 = load i32, ptr %56, align 4
  switch i32 %714, label %940 [
    i32 0, label %715
    i32 4, label %928
  ]

715:                                              ; preds = %713
  br label %716

716:                                              ; preds = %715, %565
  %717 = load i32, ptr %53, align 4, !tbaa !9
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %794

719:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %720 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %721 = load ptr, ptr %3, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.TLS_CONNECT, ptr %721, i32 0, i32 4
  %723 = load i32, ptr %722, align 8, !tbaa !21
  %724 = call i32 @tls_record_recv(ptr noundef %720, ptr noundef %8, i32 noundef %723)
  %725 = icmp ne i32 %724, 1
  br i1 %725, label %726, label %734

726:                                              ; preds = %719
  br label %727

727:                                              ; preds = %726
  %728 = load ptr, ptr @stderr, align 8, !tbaa !5
  %729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %728, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2312, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %730

730:                                              ; preds = %727
  br label %731

731:                                              ; preds = %730
  %732 = load ptr, ptr %3, align 8, !tbaa !5
  %733 = call i32 @tls_send_alert(ptr noundef %732, i32 noundef 10)
  store i32 4, ptr %56, align 4
  br label %791

734:                                              ; preds = %719
  %735 = load ptr, ptr %3, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.TLS_CONNECT, ptr %735, i32 0, i32 33
  %737 = load ptr, ptr %3, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.TLS_CONNECT, ptr %737, i32 0, i32 31
  %739 = getelementptr inbounds [12 x i8], ptr %738, i64 0, i64 0
  %740 = load ptr, ptr %3, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.TLS_CONNECT, ptr %740, i32 0, i32 29
  %742 = getelementptr inbounds [8 x i8], ptr %741, i64 0, i64 0
  %743 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %744 = load i64, ptr %8, align 8, !tbaa !11
  %745 = load ptr, ptr %5, align 8, !tbaa !5
  %746 = call i32 @tls13_record_decrypt(ptr noundef %736, ptr noundef %739, ptr noundef %742, ptr noundef %743, i64 noundef %744, ptr noundef %745, ptr noundef %6)
  %747 = icmp ne i32 %746, 1
  br i1 %747, label %748, label %756

748:                                              ; preds = %734
  br label %749

749:                                              ; preds = %748
  %750 = load ptr, ptr @stderr, align 8, !tbaa !5
  %751 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %750, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2318, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %752

752:                                              ; preds = %749
  br label %753

753:                                              ; preds = %752
  %754 = load ptr, ptr %3, align 8, !tbaa !5
  %755 = call i32 @tls_send_alert(ptr noundef %754, i32 noundef 20)
  store i32 4, ptr %56, align 4
  br label %791

756:                                              ; preds = %734
  %757 = load ptr, ptr %5, align 8, !tbaa !5
  %758 = call i32 @tls13_record_get_handshake_certificate_verify(ptr noundef %757, ptr noundef %57, ptr noundef %58, ptr noundef %59)
  %759 = icmp ne i32 %758, 1
  br i1 %759, label %760, label %768

760:                                              ; preds = %756
  br label %761

761:                                              ; preds = %760
  %762 = load ptr, ptr @stderr, align 8, !tbaa !5
  %763 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %762, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2325, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %764

764:                                              ; preds = %761
  br label %765

765:                                              ; preds = %764
  %766 = load ptr, ptr %3, align 8, !tbaa !5
  %767 = call i32 @tls_send_alert(ptr noundef %766, i32 noundef 10)
  store i32 4, ptr %56, align 4
  br label %791

768:                                              ; preds = %756
  %769 = load ptr, ptr %58, align 8, !tbaa !5
  %770 = load i64, ptr %59, align 8, !tbaa !11
  %771 = call i32 @tls13_verify_certificate_verify(i32 noundef 1, ptr noundef %24, ptr noundef @.str.22, i64 noundef 23, ptr noundef %27, ptr noundef %769, i64 noundef %770)
  %772 = icmp ne i32 %771, 1
  br i1 %772, label %773, label %781

773:                                              ; preds = %768
  br label %774

774:                                              ; preds = %773
  %775 = load ptr, ptr @stderr, align 8, !tbaa !5
  %776 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %775, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2330, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %777

777:                                              ; preds = %774
  br label %778

778:                                              ; preds = %777
  %779 = load ptr, ptr %3, align 8, !tbaa !5
  %780 = call i32 @tls_send_alert(ptr noundef %779, i32 noundef 51)
  store i32 4, ptr %56, align 4
  br label %791

781:                                              ; preds = %768
  %782 = load ptr, ptr %5, align 8, !tbaa !5
  %783 = getelementptr inbounds i8, ptr %782, i64 5
  %784 = load i64, ptr %6, align 8, !tbaa !11
  %785 = sub i64 %784, 5
  %786 = call i32 @digest_update(ptr noundef %27, ptr noundef %783, i64 noundef %785)
  %787 = load ptr, ptr %3, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.TLS_CONNECT, ptr %787, i32 0, i32 29
  %789 = getelementptr inbounds [8 x i8], ptr %788, i64 0, i64 0
  %790 = call i32 @tls_seq_num_incr(ptr noundef %789)
  store i32 0, ptr %56, align 4
  br label %791

791:                                              ; preds = %781, %778, %765, %753, %731
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  %792 = load i32, ptr %56, align 4
  switch i32 %792, label %940 [
    i32 0, label %793
    i32 4, label %928
  ]

793:                                              ; preds = %791
  br label %794

794:                                              ; preds = %793, %716
  %795 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %796 = load ptr, ptr %3, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.TLS_CONNECT, ptr %796, i32 0, i32 4
  %798 = load i32, ptr %797, align 8, !tbaa !21
  %799 = call i32 @tls_record_recv(ptr noundef %795, ptr noundef %8, i32 noundef %798)
  %800 = icmp ne i32 %799, 1
  br i1 %800, label %801, label %809

801:                                              ; preds = %794
  br label %802

802:                                              ; preds = %801
  %803 = load ptr, ptr @stderr, align 8, !tbaa !5
  %804 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %803, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2342, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %805

805:                                              ; preds = %802
  br label %806

806:                                              ; preds = %805
  %807 = load ptr, ptr %3, align 8, !tbaa !5
  %808 = call i32 @tls_send_alert(ptr noundef %807, i32 noundef 10)
  br label %928

809:                                              ; preds = %794
  %810 = load ptr, ptr %3, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.TLS_CONNECT, ptr %810, i32 0, i32 33
  %812 = load ptr, ptr %3, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.TLS_CONNECT, ptr %812, i32 0, i32 31
  %814 = getelementptr inbounds [12 x i8], ptr %813, i64 0, i64 0
  %815 = load ptr, ptr %3, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.TLS_CONNECT, ptr %815, i32 0, i32 29
  %817 = getelementptr inbounds [8 x i8], ptr %816, i64 0, i64 0
  %818 = getelementptr inbounds [25600 x i8], ptr %7, i64 0, i64 0
  %819 = load i64, ptr %8, align 8, !tbaa !11
  %820 = load ptr, ptr %5, align 8, !tbaa !5
  %821 = call i32 @tls13_record_decrypt(ptr noundef %811, ptr noundef %814, ptr noundef %817, ptr noundef %818, i64 noundef %819, ptr noundef %820, ptr noundef %6)
  %822 = icmp ne i32 %821, 1
  br i1 %822, label %823, label %831

823:                                              ; preds = %809
  br label %824

824:                                              ; preds = %823
  %825 = load ptr, ptr @stderr, align 8, !tbaa !5
  %826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %825, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2349, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %827

827:                                              ; preds = %824
  br label %828

828:                                              ; preds = %827
  %829 = load ptr, ptr %3, align 8, !tbaa !5
  %830 = call i32 @tls_send_alert(ptr noundef %829, i32 noundef 20)
  br label %928

831:                                              ; preds = %809
  %832 = load ptr, ptr %5, align 8, !tbaa !5
  %833 = call i32 @tls13_record_get_handshake_finished(ptr noundef %832, ptr noundef %34, ptr noundef %35)
  %834 = icmp ne i32 %833, 1
  br i1 %834, label %835, label %843

835:                                              ; preds = %831
  br label %836

836:                                              ; preds = %835
  %837 = load ptr, ptr @stderr, align 8, !tbaa !5
  %838 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %837, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2355, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %839

839:                                              ; preds = %836
  br label %840

840:                                              ; preds = %839
  %841 = load ptr, ptr %3, align 8, !tbaa !5
  %842 = call i32 @tls_send_alert(ptr noundef %841, i32 noundef 10)
  br label %928

843:                                              ; preds = %831
  %844 = getelementptr inbounds [32 x i8], ptr %42, i64 0, i64 0
  %845 = getelementptr inbounds [32 x i8], ptr %32, i64 0, i64 0
  %846 = call i32 @tls13_compute_verify_data(ptr noundef %844, ptr noundef %27, ptr noundef %845, ptr noundef %33)
  %847 = icmp ne i32 %846, 1
  br i1 %847, label %848, label %856

848:                                              ; preds = %843
  br label %849

849:                                              ; preds = %848
  %850 = load ptr, ptr @stderr, align 8, !tbaa !5
  %851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %850, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2360, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %852

852:                                              ; preds = %849
  br label %853

853:                                              ; preds = %852
  %854 = load ptr, ptr %3, align 8, !tbaa !5
  %855 = call i32 @tls_send_alert(ptr noundef %854, i32 noundef 80)
  br label %928

856:                                              ; preds = %843
  %857 = load i64, ptr %35, align 8, !tbaa !11
  %858 = load i64, ptr %33, align 8, !tbaa !11
  %859 = icmp ne i64 %857, %858
  br i1 %859, label %866, label %860

860:                                              ; preds = %856
  %861 = load ptr, ptr %34, align 8, !tbaa !5
  %862 = getelementptr inbounds [32 x i8], ptr %32, i64 0, i64 0
  %863 = load i64, ptr %33, align 8, !tbaa !11
  %864 = call i32 @memcmp(ptr noundef %861, ptr noundef %862, i64 noundef %863) #8
  %865 = icmp ne i32 %864, 0
  br i1 %865, label %866, label %874

866:                                              ; preds = %860, %856
  br label %867

867:                                              ; preds = %866
  %868 = load ptr, ptr @stderr, align 8, !tbaa !5
  %869 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %868, ptr noundef @.str, ptr noundef @.str.1, i32 noundef 2366, ptr noundef @__FUNCTION__.tls13_do_accept) #7
  br label %870

870:                                              ; preds = %867
  br label %871

871:                                              ; preds = %870
  %872 = load ptr, ptr %3, align 8, !tbaa !5
  %873 = call i32 @tls_send_alert(ptr noundef %872, i32 noundef 20)
  br label %928

874:                                              ; preds = %860
  %875 = load ptr, ptr %5, align 8, !tbaa !5
  %876 = getelementptr inbounds i8, ptr %875, i64 5
  %877 = load i64, ptr %6, align 8, !tbaa !11
  %878 = sub i64 %877, 5
  %879 = call i32 @digest_update(ptr noundef %27, ptr noundef %876, i64 noundef %878)
  %880 = load ptr, ptr %3, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.TLS_CONNECT, ptr %880, i32 0, i32 29
  %882 = getelementptr inbounds [8 x i8], ptr %881, i64 0, i64 0
  %883 = call i32 @tls_seq_num_incr(ptr noundef %882)
  %884 = load ptr, ptr %26, align 8, !tbaa !5
  %885 = getelementptr inbounds [32 x i8], ptr %45, i64 0, i64 0
  %886 = getelementptr inbounds [16 x i8], ptr %37, i64 0, i64 0
  %887 = call i32 @tls13_hkdf_expand_label(ptr noundef %884, ptr noundef %885, ptr noundef @.str.19, ptr noundef null, i64 noundef 0, i64 noundef 16, ptr noundef %886)
  %888 = load ptr, ptr %26, align 8, !tbaa !5
  %889 = getelementptr inbounds [32 x i8], ptr %45, i64 0, i64 0
  %890 = load ptr, ptr %3, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.TLS_CONNECT, ptr %890, i32 0, i32 32
  %892 = getelementptr inbounds [12 x i8], ptr %891, i64 0, i64 0
  %893 = call i32 @tls13_hkdf_expand_label(ptr noundef %888, ptr noundef %889, ptr noundef @.str.20, ptr noundef null, i64 noundef 0, i64 noundef 12, ptr noundef %892)
  %894 = load ptr, ptr %3, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.TLS_CONNECT, ptr %894, i32 0, i32 34
  %896 = load ptr, ptr %25, align 8, !tbaa !5
  %897 = getelementptr inbounds [16 x i8], ptr %37, i64 0, i64 0
  %898 = call i32 @block_cipher_set_encrypt_key(ptr noundef %895, ptr noundef %896, ptr noundef %897)
  %899 = load ptr, ptr %3, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.TLS_CONNECT, ptr %899, i32 0, i32 30
  %901 = getelementptr inbounds [8 x i8], ptr %900, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %901, i8 0, i64 8, i1 false)
  %902 = load ptr, ptr %26, align 8, !tbaa !5
  %903 = getelementptr inbounds [32 x i8], ptr %44, i64 0, i64 0
  %904 = getelementptr inbounds [16 x i8], ptr %36, i64 0, i64 0
  %905 = call i32 @tls13_hkdf_expand_label(ptr noundef %902, ptr noundef %903, ptr noundef @.str.19, ptr noundef null, i64 noundef 0, i64 noundef 16, ptr noundef %904)
  %906 = load ptr, ptr %26, align 8, !tbaa !5
  %907 = getelementptr inbounds [32 x i8], ptr %44, i64 0, i64 0
  %908 = load ptr, ptr %3, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.TLS_CONNECT, ptr %908, i32 0, i32 31
  %910 = getelementptr inbounds [12 x i8], ptr %909, i64 0, i64 0
  %911 = call i32 @tls13_hkdf_expand_label(ptr noundef %906, ptr noundef %907, ptr noundef @.str.20, ptr noundef null, i64 noundef 0, i64 noundef 12, ptr noundef %910)
  %912 = load ptr, ptr %3, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.TLS_CONNECT, ptr %912, i32 0, i32 33
  %914 = load ptr, ptr %25, align 8, !tbaa !5
  %915 = getelementptr inbounds [16 x i8], ptr %36, i64 0, i64 0
  %916 = call i32 @block_cipher_set_encrypt_key(ptr noundef %913, ptr noundef %914, ptr noundef %915)
  %917 = load ptr, ptr %3, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.TLS_CONNECT, ptr %917, i32 0, i32 29
  %919 = getelementptr inbounds [8 x i8], ptr %918, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %919, i8 0, i64 8, i1 false)
  %920 = load ptr, ptr %3, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.TLS_CONNECT, ptr %920, i32 0, i32 35
  %922 = load i32, ptr %921, align 8, !tbaa !27
  %923 = icmp ne i32 %922, 0
  br i1 %923, label %927, label %924

924:                                              ; preds = %874
  %925 = load ptr, ptr @stderr, align 8, !tbaa !5
  %926 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %925, ptr noundef @.str.26) #7
  br label %927

927:                                              ; preds = %924, %874
  store i32 1, ptr %4, align 4, !tbaa !9
  br label %928

928:                                              ; preds = %927, %871, %853, %840, %828, %806, %791, %713, %677, %664, %647, %629, %617, %595, %564, %548, %524, %500, %484, %460, %435, %419, %395, %369, %353, %329, %307, %291, %194, %178, %158, %132, %121, %103, %92, %80
  call void @gmssl_secure_clear(ptr noundef %22, i64 noundef 128)
  call void @gmssl_secure_clear(ptr noundef %24, i64 noundef 128)
  %929 = getelementptr inbounds [32 x i8], ptr %39, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %929, i64 noundef 32)
  %930 = getelementptr inbounds [32 x i8], ptr %40, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %930, i64 noundef 32)
  %931 = getelementptr inbounds [32 x i8], ptr %41, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %931, i64 noundef 32)
  %932 = getelementptr inbounds [32 x i8], ptr %46, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %932, i64 noundef 32)
  %933 = getelementptr inbounds [32 x i8], ptr %42, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %933, i64 noundef 32)
  %934 = getelementptr inbounds [32 x i8], ptr %43, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %934, i64 noundef 32)
  %935 = getelementptr inbounds [32 x i8], ptr %44, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %935, i64 noundef 32)
  %936 = getelementptr inbounds [32 x i8], ptr %45, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %936, i64 noundef 32)
  %937 = getelementptr inbounds [16 x i8], ptr %36, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %937, i64 noundef 16)
  %938 = getelementptr inbounds [16 x i8], ptr %37, i64 0, i64 0
  call void @gmssl_secure_clear(ptr noundef %938, i64 noundef 16)
  %939 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %939, ptr %2, align 4
  store i32 1, ptr %56, align 4
  br label %940

940:                                              ; preds = %928, %791, %713
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 512, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 25600, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  %941 = load i32, ptr %2, align 4
  ret i32 %941
}

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !12, i64 61832}
!14 = !{!"", !10, i64 0, !10, i64 4, !7, i64 8, !12, i64 264, !10, i64 272, !7, i64 276, !12, i64 18720, !7, i64 18728, !7, i64 37165, !6, i64 55608, !12, i64 55616, !10, i64 55624, !7, i64 55628, !12, i64 55664, !7, i64 55672, !12, i64 57720, !7, i64 57728, !12, i64 59776, !7, i64 59784, !12, i64 61832, !15, i64 61840, !15, i64 61968, !10, i64 62096, !7, i64 62100, !7, i64 62148, !17, i64 62248, !17, i64 62424, !19, i64 62600, !19, i64 62728, !7, i64 62856, !7, i64 62864, !7, i64 62872, !7, i64 62884, !20, i64 62896, !20, i64 63032, !10, i64 63168}
!15 = !{!"", !16, i64 0, !7, i64 96}
!16 = !{!"", !7, i64 0, !7, i64 32, !7, i64 64}
!17 = !{!"", !18, i64 0, !7, i64 112}
!18 = !{!"", !7, i64 0, !12, i64 32, !7, i64 40, !12, i64 104}
!19 = !{!"", !7, i64 0}
!20 = !{!"BLOCK_CIPHER_KEY", !7, i64 0, !6, i64 128}
!21 = !{!14, !10, i64 272}
!22 = !{!14, !10, i64 55624}
!23 = !{i64 0, i64 112, !24, i64 112, i64 8, !5}
!24 = !{!7, !7, i64 0}
!25 = !{!14, !12, i64 57720}
!26 = !{!14, !12, i64 59776}
!27 = !{!14, !10, i64 63168}


; 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.SM2_KEY = type { %struct.SM2_Z256_POINT, [4 x i64] }
%struct.SM2_Z256_POINT = type { [4 x i64], [4 x i64], [4 x i64] }
%struct.DIGEST_CTX = type { %union.anon.0, ptr }
%union.anon.0 = type { %struct.SM3_CTX }
%struct.SM3_CTX = type { [8 x i32], i64, [64 x i8], i64 }

@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [13 x i8], align 1
@__const.tls13_do_accept.server_ciphers = external hidden unnamed_addr constant [1 x i32], align 4
@__FUNCTION__.tls13_do_accept = external hidden unnamed_addr constant [16 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [26 x i8], align 1

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) 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: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_encrypt(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_decrypt(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @tls_record_send(ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #5

declare i32 @tls_seq_num_incr(ptr noundef) local_unnamed_addr #5

declare i32 @tls_record_recv(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_hkdf_extract(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_hkdf_expand_label(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_derive_secret(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_sign_certificate_verify(i32 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @gmssl_secure_clear(ptr noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_verify_certificate_verify(i32 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_compute_verify_data(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_process_client_hello_exts(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_encrypted_extensions(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_certificate_verify(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_get_handshake_certificate_verify(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_certificate_request_default(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_process_certificate_list(ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_certificate(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_get_handshake_certificate(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_set_handshake_finished(ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_record_get_handshake_finished(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

declare i32 @rand_bytes(ptr noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local i32 @tls13_cipher_suite_get(i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @tls_record_set_protocol(ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @digest_init(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @sm2_key_generate(ptr noundef) local_unnamed_addr #5

declare i32 @tls_send_alert(ptr noundef, i32 noundef) local_unnamed_addr #5

declare i32 @digest_update(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

declare i32 @sm2_do_ecdh(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @sm2_z256_point_to_bytes(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @block_cipher_set_encrypt_key(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @x509_certs_get_cert_by_index(ptr noundef, i64 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @x509_cert_get_subject_public_key(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare i32 @x509_certs_verify(ptr noundef, i64 noundef, i32 noundef, ptr noundef, i64 noundef, i32 noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @tls13_do_accept(ptr noundef %0) local_unnamed_addr #4 {
  %2 = alloca i64, align 8
  %3 = alloca [25600 x i8], align 16
  %4 = alloca i64, align 8
  %5 = alloca [1 x i32], align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i64, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca [32 x i8], align 16
  %13 = alloca ptr, align 8
  %14 = alloca i64, align 8
  %15 = alloca [512 x i8], align 16
  %16 = alloca i64, align 8
  %17 = alloca %struct.SM2_KEY, align 8
  %18 = alloca %struct.SM2_Z256_POINT, align 8
  %19 = alloca %struct.SM2_KEY, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %struct.DIGEST_CTX, align 8
  %23 = alloca %struct.DIGEST_CTX, align 8
  %24 = alloca i64, align 8
  %25 = alloca [72 x i8], align 16
  %26 = alloca i64, align 8
  %27 = alloca [32 x i8], align 16
  %28 = alloca i64, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i64, align 8
  %31 = alloca [16 x i8], align 16
  %32 = alloca [16 x i8], align 16
  %33 = alloca [32 x i8], align 16
  %34 = alloca [32 x i8], align 16
  %35 = alloca [32 x i8], align 16
  %36 = alloca [32 x i8], align 16
  %37 = alloca [32 x i8], align 16
  %38 = alloca [32 x i8], align 16
  %39 = alloca [32 x i8], align 16
  %40 = alloca [32 x i8], align 16
  %41 = alloca [32 x i8], align 16
  %42 = alloca ptr, align 8
  %43 = alloca i64, align 8
  %44 = alloca ptr, align 8
  %45 = alloca i64, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i64, align 8
  %48 = alloca [64 x i8], align 16
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca ptr, align 8
  %52 = alloca i64, align 8
  %53 = getelementptr inbounds i8, ptr %0, i64 18728
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 25600, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  store i64 25600, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %54 = load i32, ptr @__const.tls13_do_accept.server_ciphers, align 4
  store i32 %54, ptr %5, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  store ptr null, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  store ptr null, ptr %21, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  store i64 72, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %33, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %34, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #7
  %55 = getelementptr inbounds i8, ptr %0, i64 61832
  %56 = load i64, ptr %55, align 8, !tbaa !11
  %.not = icmp eq i64 %56, 0
  %57 = getelementptr inbounds i8, ptr %0, i64 272
  %58 = load i32, ptr %57, align 8, !tbaa !20
  %59 = call i32 @tls_record_recv(ptr noundef nonnull %53, ptr noundef nonnull %2, i32 noundef %58) #7
  %.not143 = icmp eq i32 %59, 1
  br i1 %.not143, label %64, label %60

60:                                               ; preds = %1
  %61 = load ptr, ptr @stderr, align 8, !tbaa !9
  %62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %61, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2024, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %63 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

64:                                               ; preds = %1
  %65 = call i32 @tls_record_get_handshake_client_hello(ptr noundef nonnull %53, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %10, ptr noundef nonnull %11) #7
  %.not144 = icmp eq i32 %65, 1
  br i1 %.not144, label %70, label %66

66:                                               ; preds = %64
  %67 = load ptr, ptr @stderr, align 8, !tbaa !9
  %68 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %67, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2034, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %69 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

70:                                               ; preds = %64
  %71 = load i32, ptr %6, align 4, !tbaa !21
  %.not145 = icmp eq i32 %71, 771
  br i1 %.not145, label %76, label %72

72:                                               ; preds = %70
  %73 = load ptr, ptr @stderr, align 8, !tbaa !9
  %74 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %73, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2039, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %75 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 70) #7
  br label %430

76:                                               ; preds = %70
  %77 = load ptr, ptr %13, align 8, !tbaa !9
  %78 = load i64, ptr %14, align 8, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %0, i64 55624
  %80 = call i32 @tls_cipher_suites_select(ptr noundef %77, i64 noundef %78, ptr noundef nonnull %5, i64 noundef 1, ptr noundef nonnull %79) #7
  %.not146 = icmp eq i32 %80, 1
  br i1 %.not146, label %85, label %81

81:                                               ; preds = %76
  %82 = load ptr, ptr @stderr, align 8, !tbaa !9
  %83 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %82, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2047, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %84 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 71) #7
  br label %430

85:                                               ; preds = %76
  %86 = load ptr, ptr %10, align 8, !tbaa !9
  %.not147 = icmp eq ptr %86, null
  br i1 %.not147, label %87, label %90

87:                                               ; preds = %85
  %88 = load ptr, ptr @stderr, align 8, !tbaa !9
  %89 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %88, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2052, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  br label %430

90:                                               ; preds = %85
  %91 = load i32, ptr %79, align 8, !tbaa !22
  %92 = call i32 @tls13_cipher_suite_get(i32 noundef %91, ptr noundef nonnull %21, ptr noundef nonnull %20)
  %93 = load ptr, ptr %21, align 8, !tbaa !9
  %94 = call i32 @digest_init(ptr noundef nonnull %22, ptr noundef %93) #7
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(120) %23, ptr noundef nonnull align 8 dereferenceable(120) %22, i64 120, i1 false), !tbaa.struct !23
  %95 = getelementptr inbounds i8, ptr %0, i64 18733
  %96 = load i64, ptr %2, align 8, !tbaa !5
  %97 = add i64 %96, -5
  %98 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %97) #7
  %99 = call i32 @rand_bytes(ptr noundef nonnull %12, i64 noundef 32) #7
  %100 = call i32 @sm2_key_generate(ptr noundef nonnull %17) #7
  %101 = load ptr, ptr %10, align 8, !tbaa !9
  %102 = load i64, ptr %11, align 8, !tbaa !5
  %103 = call i32 @tls13_process_client_hello_exts(ptr noundef %101, i64 noundef %102, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %15, ptr noundef nonnull %16, i64 noundef 512)
  %.not148 = icmp eq i32 %103, 1
  br i1 %.not148, label %108, label %104

104:                                              ; preds = %90
  %105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %106 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %105, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2068, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %107 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

108:                                              ; preds = %90
  %109 = call i32 @tls_record_set_protocol(ptr noundef nonnull %53, i32 noundef 771) #7
  %110 = load i32, ptr %79, align 8, !tbaa !22
  %111 = load i64, ptr %16, align 8, !tbaa !5
  %112 = call i32 @tls_record_set_handshake_server_hello(ptr noundef nonnull %53, ptr noundef nonnull %2, i32 noundef 771, ptr noundef nonnull %12, ptr noundef null, i64 noundef 0, i32 noundef %110, ptr noundef nonnull %15, i64 noundef %111) #7
  %.not149 = icmp eq i32 %112, 1
  br i1 %.not149, label %117, label %113

113:                                              ; preds = %108
  %114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %114, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2077, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %116 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

117:                                              ; preds = %108
  %118 = load i64, ptr %2, align 8, !tbaa !5
  %119 = load i32, ptr %57, align 8, !tbaa !20
  %120 = call i32 @tls_record_send(ptr noundef nonnull %53, i64 noundef %118, i32 noundef %119) #7
  %.not150 = icmp eq i32 %120, 1
  br i1 %.not150, label %124, label %121

121:                                              ; preds = %117
  %122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %123 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %122, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2083, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  br label %430

124:                                              ; preds = %117
  %125 = load i64, ptr %2, align 8, !tbaa !5
  %126 = add i64 %125, -5
  %127 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %126) #7
  %128 = call i32 @sm2_do_ecdh(ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %18) #7
  %129 = call i32 @sm2_z256_point_to_bytes(ptr noundef nonnull %18, ptr noundef nonnull %48) #7
  %130 = load ptr, ptr %21, align 8, !tbaa !9
  %131 = call i32 @tls13_hkdf_extract(ptr noundef %130, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef nonnull %35)
  %132 = call i32 @tls13_derive_secret(ptr noundef nonnull %35, ptr noundef nonnull @.str.16, ptr noundef nonnull %23, ptr noundef nonnull %36)
  %133 = load ptr, ptr %21, align 8, !tbaa !9
  %134 = call i32 @tls13_hkdf_extract(ptr noundef %133, ptr noundef nonnull %36, ptr noundef nonnull %48, ptr noundef nonnull %36)
  %135 = call i32 @tls13_derive_secret(ptr noundef nonnull %36, ptr noundef nonnull @.str.17, ptr noundef nonnull %22, ptr noundef nonnull %37)
  %136 = call i32 @tls13_derive_secret(ptr noundef nonnull %36, ptr noundef nonnull @.str.18, ptr noundef nonnull %22, ptr noundef nonnull %38)
  %137 = call i32 @tls13_derive_secret(ptr noundef nonnull %36, ptr noundef nonnull @.str.16, ptr noundef nonnull %23, ptr noundef nonnull %41)
  %138 = load ptr, ptr %21, align 8, !tbaa !9
  %139 = call i32 @tls13_hkdf_extract(ptr noundef %138, ptr noundef nonnull %41, ptr noundef nonnull %33, ptr noundef nonnull %41)
  %140 = load ptr, ptr %21, align 8, !tbaa !9
  %141 = call i32 @tls13_hkdf_expand_label(ptr noundef %140, ptr noundef nonnull %38, ptr noundef nonnull @.str.19, ptr noundef null, i64 noundef 0, i64 noundef 16, ptr noundef nonnull %32)
  %142 = getelementptr inbounds i8, ptr %0, i64 63032
  %143 = load ptr, ptr %20, align 8, !tbaa !9
  %144 = call i32 @block_cipher_set_encrypt_key(ptr noundef nonnull %142, ptr noundef %143, ptr noundef nonnull %32) #7
  %145 = load ptr, ptr %21, align 8, !tbaa !9
  %146 = getelementptr inbounds i8, ptr %0, i64 62884
  %147 = call i32 @tls13_hkdf_expand_label(ptr noundef %145, ptr noundef nonnull %38, ptr noundef nonnull @.str.20, ptr noundef null, i64 noundef 0, i64 noundef 12, ptr noundef nonnull %146)
  %148 = getelementptr inbounds i8, ptr %0, i64 62864
  store i64 0, ptr %148, align 8
  %149 = load ptr, ptr %21, align 8, !tbaa !9
  %150 = call i32 @tls13_hkdf_expand_label(ptr noundef %149, ptr noundef nonnull %37, ptr noundef nonnull @.str.19, ptr noundef null, i64 noundef 0, i64 noundef 16, ptr noundef nonnull %31)
  %151 = getelementptr inbounds i8, ptr %0, i64 62896
  %152 = load ptr, ptr %20, align 8, !tbaa !9
  %153 = call i32 @block_cipher_set_encrypt_key(ptr noundef nonnull %151, ptr noundef %152, ptr noundef nonnull %31) #7
  %154 = load ptr, ptr %21, align 8, !tbaa !9
  %155 = getelementptr inbounds i8, ptr %0, i64 62872
  %156 = call i32 @tls13_hkdf_expand_label(ptr noundef %154, ptr noundef nonnull %37, ptr noundef nonnull @.str.20, ptr noundef null, i64 noundef 0, i64 noundef 12, ptr noundef nonnull %155)
  %157 = getelementptr inbounds i8, ptr %0, i64 62856
  store i64 0, ptr %157, align 8
  %158 = call i32 @tls_record_set_protocol(ptr noundef nonnull %53, i32 noundef 771) #7
  %159 = call i32 @tls13_record_set_handshake_encrypted_extensions(ptr noundef nonnull %53, ptr noundef nonnull %2)
  %160 = call i32 @tls13_padding_len_rand(ptr noundef nonnull %24)
  %161 = load i64, ptr %2, align 8, !tbaa !5
  %162 = load i64, ptr %24, align 8, !tbaa !5
  %163 = call i32 @tls13_record_encrypt(ptr noundef nonnull %142, ptr noundef nonnull %146, ptr noundef nonnull %148, ptr noundef nonnull %53, i64 noundef %161, i64 noundef %162, ptr noundef nonnull %3, ptr noundef nonnull %4)
  %.not151 = icmp eq i32 %163, 1
  br i1 %.not151, label %168, label %164

164:                                              ; preds = %124
  %165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %166 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %165, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2128, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %167 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

168:                                              ; preds = %124
  %169 = load i64, ptr %4, align 8, !tbaa !5
  %170 = load i32, ptr %57, align 8, !tbaa !20
  %171 = call i32 @tls_record_send(ptr noundef nonnull %3, i64 noundef %169, i32 noundef %170) #7
  %.not152 = icmp eq i32 %171, 1
  br i1 %.not152, label %175, label %172

172:                                              ; preds = %168
  %173 = load ptr, ptr @stderr, align 8, !tbaa !9
  %174 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %173, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2135, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  br label %430

175:                                              ; preds = %168
  %176 = load i64, ptr %2, align 8, !tbaa !5
  %177 = add i64 %176, -5
  %178 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %177) #7
  %179 = call i32 @tls_seq_num_incr(ptr noundef nonnull %148) #7
  br i1 %.not, label %207, label %180

180:                                              ; preds = %175
  %181 = call i32 @tls13_record_set_handshake_certificate_request_default(ptr noundef nonnull %53, ptr noundef nonnull %2)
  %.not153 = icmp eq i32 %181, 1
  br i1 %.not153, label %186, label %182

182:                                              ; preds = %180
  %183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2148, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %185 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

186:                                              ; preds = %180
  %187 = call i32 @tls13_padding_len_rand(ptr noundef nonnull %24)
  %188 = load i64, ptr %2, align 8, !tbaa !5
  %189 = load i64, ptr %24, align 8, !tbaa !5
  %190 = call i32 @tls13_record_encrypt(ptr noundef nonnull %142, ptr noundef nonnull %146, ptr noundef nonnull %148, ptr noundef nonnull %53, i64 noundef %188, i64 noundef %189, ptr noundef nonnull %3, ptr noundef nonnull %4)
  %.not154 = icmp eq i32 %190, 1
  br i1 %.not154, label %195, label %191

191:                                              ; preds = %186
  %192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %193 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %192, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2157, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %194 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

195:                                              ; preds = %186
  %196 = load i64, ptr %4, align 8, !tbaa !5
  %197 = load i32, ptr %57, align 8, !tbaa !20
  %198 = call i32 @tls_record_send(ptr noundef nonnull %3, i64 noundef %196, i32 noundef %197) #7
  %.not155 = icmp eq i32 %198, 1
  br i1 %.not155, label %202, label %199

199:                                              ; preds = %195
  %200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %200, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2162, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  br label %430

202:                                              ; preds = %195
  %203 = load i64, ptr %2, align 8, !tbaa !5
  %204 = add i64 %203, -5
  %205 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %204) #7
  %206 = call i32 @tls_seq_num_incr(ptr noundef nonnull %148) #7
  br label %207

207:                                              ; preds = %202, %175
  %208 = getelementptr inbounds i8, ptr %0, i64 55672
  %209 = getelementptr inbounds i8, ptr %0, i64 57720
  %210 = load i64, ptr %209, align 8, !tbaa !25
  %211 = call i32 @tls13_record_set_handshake_certificate(ptr noundef nonnull %53, ptr noundef nonnull %2, ptr noundef null, i64 noundef 0, ptr noundef nonnull %208, i64 noundef %210)
  %.not156 = icmp eq i32 %211, 1
  br i1 %.not156, label %216, label %212

212:                                              ; preds = %207
  %213 = load ptr, ptr @stderr, align 8, !tbaa !9
  %214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %213, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2172, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %215 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

216:                                              ; preds = %207
  %217 = call i32 @tls13_padding_len_rand(ptr noundef nonnull %24)
  %218 = load i64, ptr %2, align 8, !tbaa !5
  %219 = load i64, ptr %24, align 8, !tbaa !5
  %220 = call i32 @tls13_record_encrypt(ptr noundef nonnull %142, ptr noundef nonnull %146, ptr noundef nonnull %148, ptr noundef nonnull %53, i64 noundef %218, i64 noundef %219, ptr noundef nonnull %3, ptr noundef nonnull %4)
  %.not157 = icmp eq i32 %220, 1
  br i1 %.not157, label %225, label %221

221:                                              ; preds = %216
  %222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %223 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %222, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2181, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %224 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

225:                                              ; preds = %216
  %226 = load i64, ptr %4, align 8, !tbaa !5
  %227 = load i32, ptr %57, align 8, !tbaa !20
  %228 = call i32 @tls_record_send(ptr noundef nonnull %3, i64 noundef %226, i32 noundef %227) #7
  %.not158 = icmp eq i32 %228, 1
  br i1 %.not158, label %232, label %229

229:                                              ; preds = %225
  %230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %230, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2186, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  br label %430

232:                                              ; preds = %225
  %233 = load i64, ptr %2, align 8, !tbaa !5
  %234 = add i64 %233, -5
  %235 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %234) #7
  %236 = call i32 @tls_seq_num_incr(ptr noundef nonnull %148) #7
  %237 = getelementptr inbounds i8, ptr %0, i64 61840
  %238 = call i32 @tls13_sign_certificate_verify(i32 noundef 0, ptr noundef nonnull %237, ptr noundef nonnull @.str.22, i64 noundef 23, ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef nonnull %26)
  %239 = load i64, ptr %26, align 8, !tbaa !5
  %240 = call i32 @tls13_record_set_handshake_certificate_verify(ptr noundef nonnull %53, ptr noundef nonnull %2, i32 noundef 1800, ptr noundef nonnull %25, i64 noundef %239)
  %.not159 = icmp eq i32 %240, 1
  br i1 %.not159, label %245, label %241

241:                                              ; preds = %232
  %242 = load ptr, ptr @stderr, align 8, !tbaa !9
  %243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %242, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2198, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %244 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

245:                                              ; preds = %232
  %246 = call i32 @tls13_padding_len_rand(ptr noundef nonnull %24)
  %247 = load i64, ptr %2, align 8, !tbaa !5
  %248 = load i64, ptr %24, align 8, !tbaa !5
  %249 = call i32 @tls13_record_encrypt(ptr noundef nonnull %142, ptr noundef nonnull %146, ptr noundef nonnull %148, ptr noundef nonnull %53, i64 noundef %247, i64 noundef %248, ptr noundef nonnull %3, ptr noundef nonnull %4)
  %.not160 = icmp eq i32 %249, 1
  br i1 %.not160, label %254, label %250

250:                                              ; preds = %245
  %251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %252 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %251, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2207, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %253 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

254:                                              ; preds = %245
  %255 = load i64, ptr %4, align 8, !tbaa !5
  %256 = load i32, ptr %57, align 8, !tbaa !20
  %257 = call i32 @tls_record_send(ptr noundef nonnull %3, i64 noundef %255, i32 noundef %256) #7
  %.not161 = icmp eq i32 %257, 1
  br i1 %.not161, label %261, label %258

258:                                              ; preds = %254
  %259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %260 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %259, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2212, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  br label %430

261:                                              ; preds = %254
  %262 = load i64, ptr %2, align 8, !tbaa !5
  %263 = add i64 %262, -5
  %264 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %263) #7
  %265 = call i32 @tls_seq_num_incr(ptr noundef nonnull %148) #7
  %266 = call i32 @tls13_compute_verify_data(ptr noundef nonnull %38, ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %28)
  %267 = load i64, ptr %28, align 8, !tbaa !5
  %268 = call i32 @tls13_record_set_handshake_finished(ptr noundef nonnull %53, ptr noundef nonnull %2, ptr noundef nonnull %27, i64 noundef %267)
  %.not162 = icmp eq i32 %268, 1
  br i1 %.not162, label %273, label %269

269:                                              ; preds = %261
  %270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %271 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %270, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2226, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %272 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

273:                                              ; preds = %261
  %274 = call i32 @tls13_padding_len_rand(ptr noundef nonnull %24)
  %275 = load i64, ptr %2, align 8, !tbaa !5
  %276 = load i64, ptr %24, align 8, !tbaa !5
  %277 = call i32 @tls13_record_encrypt(ptr noundef nonnull %142, ptr noundef nonnull %146, ptr noundef nonnull %148, ptr noundef nonnull %53, i64 noundef %275, i64 noundef %276, ptr noundef nonnull %3, ptr noundef nonnull %4)
  %.not163 = icmp eq i32 %277, 1
  br i1 %.not163, label %282, label %278

278:                                              ; preds = %273
  %279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %280 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %279, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2235, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %281 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

282:                                              ; preds = %273
  %283 = load i64, ptr %4, align 8, !tbaa !5
  %284 = load i32, ptr %57, align 8, !tbaa !20
  %285 = call i32 @tls_record_send(ptr noundef nonnull %3, i64 noundef %283, i32 noundef %284) #7
  %.not164 = icmp eq i32 %285, 1
  br i1 %.not164, label %289, label %286

286:                                              ; preds = %282
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %287, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2240, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  br label %430

289:                                              ; preds = %282
  %290 = load i64, ptr %2, align 8, !tbaa !5
  %291 = add i64 %290, -5
  %292 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %291) #7
  %293 = call i32 @tls_seq_num_incr(ptr noundef nonnull %148) #7
  %294 = call i32 @tls13_derive_secret(ptr noundef nonnull %41, ptr noundef nonnull @.str.23, ptr noundef nonnull %22, ptr noundef nonnull %40)
  %295 = call i32 @tls13_derive_secret(ptr noundef nonnull %41, ptr noundef nonnull @.str.24, ptr noundef nonnull %22, ptr noundef nonnull %39)
  br i1 %.not, label %.critedge, label %296

296:                                              ; preds = %289
  %297 = load i32, ptr %57, align 8, !tbaa !20
  %298 = call i32 @tls_record_recv(ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %297) #7
  %.not165 = icmp eq i32 %298, 1
  br i1 %.not165, label %303, label %299

299:                                              ; preds = %296
  %300 = load ptr, ptr @stderr, align 8, !tbaa !9
  %301 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %300, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2256, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %302 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

303:                                              ; preds = %296
  %304 = load i64, ptr %4, align 8, !tbaa !5
  %305 = call i32 @tls13_record_decrypt(ptr noundef nonnull %151, ptr noundef nonnull %155, ptr noundef nonnull %157, ptr noundef nonnull %3, i64 noundef %304, ptr noundef nonnull %53, ptr noundef nonnull %2)
  %.not166 = icmp eq i32 %305, 1
  br i1 %.not166, label %310, label %306

306:                                              ; preds = %303
  %307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %307, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2263, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %309 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 20) #7
  br label %430

310:                                              ; preds = %303
  %311 = call i32 @tls13_record_get_handshake_certificate(ptr noundef nonnull %53, ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef nonnull %45)
  %.not167 = icmp eq i32 %311, 1
  br i1 %.not167, label %316, label %312

312:                                              ; preds = %310
  %313 = load ptr, ptr @stderr, align 8, !tbaa !9
  %314 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %313, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2272, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %315 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

316:                                              ; preds = %310
  %317 = load ptr, ptr %44, align 8, !tbaa !9
  %318 = load i64, ptr %45, align 8, !tbaa !5
  %319 = getelementptr inbounds i8, ptr %0, i64 57728
  %320 = getelementptr inbounds i8, ptr %0, i64 59776
  %321 = call i32 @tls13_process_certificate_list(ptr noundef %317, i64 noundef %318, ptr noundef nonnull %319, ptr noundef nonnull %320)
  %.not168 = icmp eq i32 %321, 1
  br i1 %.not168, label %326, label %322

322:                                              ; preds = %316
  %323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %324 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %323, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2277, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %325 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

326:                                              ; preds = %316
  %327 = load i64, ptr %320, align 8, !tbaa !26
  %328 = call i32 @x509_certs_get_cert_by_index(ptr noundef nonnull %319, i64 noundef %327, i32 noundef 0, ptr noundef nonnull %46, ptr noundef nonnull %47) #7
  %.not169 = icmp eq i32 %328, 1
  br i1 %.not169, label %333, label %329

329:                                              ; preds = %326
  %330 = load ptr, ptr @stderr, align 8, !tbaa !9
  %331 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %330, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2282, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %332 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

333:                                              ; preds = %326
  %334 = load ptr, ptr %46, align 8, !tbaa !9
  %335 = load i64, ptr %47, align 8, !tbaa !5
  %336 = call i32 @x509_cert_get_subject_public_key(ptr noundef %334, i64 noundef %335, ptr noundef nonnull %19) #7
  %.not170 = icmp eq i32 %336, 1
  br i1 %.not170, label %341, label %337

337:                                              ; preds = %333
  %338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %339 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %338, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2287, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %340 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

341:                                              ; preds = %333
  %342 = load i64, ptr %2, align 8, !tbaa !5
  %343 = add i64 %342, -5
  %344 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %343) #7
  %345 = call i32 @tls_seq_num_incr(ptr noundef nonnull %157) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #7
  %346 = load i64, ptr %320, align 8, !tbaa !26
  %347 = getelementptr inbounds i8, ptr %0, i64 59784
  %348 = load i64, ptr %55, align 8, !tbaa !11
  %349 = call i32 @x509_certs_verify(ptr noundef nonnull %319, i64 noundef %346, i32 noundef 1, ptr noundef nonnull %347, i64 noundef %348, i32 noundef 6, ptr noundef nonnull %49) #7
  %.not171 = icmp eq i32 %349, 1
  br i1 %.not171, label %354, label %350

350:                                              ; preds = %341
  %351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %352 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %351, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2298, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %353 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 42) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #7
  br label %430

354:                                              ; preds = %341
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #7
  %355 = load i32, ptr %57, align 8, !tbaa !20
  %356 = call i32 @tls_record_recv(ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %355) #7
  %.not172 = icmp eq i32 %356, 1
  br i1 %.not172, label %357, label %.thread189

357:                                              ; preds = %354
  %358 = load i64, ptr %4, align 8, !tbaa !5
  %359 = call i32 @tls13_record_decrypt(ptr noundef nonnull %151, ptr noundef nonnull %155, ptr noundef nonnull %157, ptr noundef nonnull %3, i64 noundef %358, ptr noundef nonnull %53, ptr noundef nonnull %2)
  %.not173 = icmp eq i32 %359, 1
  br i1 %.not173, label %360, label %.thread189

360:                                              ; preds = %357
  %361 = call i32 @tls13_record_get_handshake_certificate_verify(ptr noundef nonnull %53, ptr noundef nonnull %50, ptr noundef nonnull %51, ptr noundef nonnull %52)
  %.not174 = icmp eq i32 %361, 1
  br i1 %.not174, label %362, label %.thread189

362:                                              ; preds = %360
  %363 = load ptr, ptr %51, align 8, !tbaa !9
  %364 = load i64, ptr %52, align 8, !tbaa !5
  %365 = call i32 @tls13_verify_certificate_verify(i32 noundef 1, ptr noundef nonnull %19, ptr noundef nonnull @.str.22, i64 noundef 23, ptr noundef nonnull %22, ptr noundef %363, i64 noundef %364)
  %.not175 = icmp eq i32 %365, 1
  br i1 %.not175, label %369, label %.thread189

.thread189:                                       ; preds = %362, %360, %357, %354
  %.sink193 = phi i32 [ 2312, %354 ], [ 2318, %357 ], [ 2325, %360 ], [ 2330, %362 ]
  %.sink = phi i32 [ 10, %354 ], [ 20, %357 ], [ 10, %360 ], [ 51, %362 ]
  %366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %367 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %366, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef %.sink193, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %368 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef %.sink) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #7
  br label %430

369:                                              ; preds = %362
  %370 = load i64, ptr %2, align 8, !tbaa !5
  %371 = add i64 %370, -5
  %372 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %371) #7
  %373 = call i32 @tls_seq_num_incr(ptr noundef nonnull %157) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #7
  br label %.critedge

.critedge:                                        ; preds = %369, %289
  %374 = load i32, ptr %57, align 8, !tbaa !20
  %375 = call i32 @tls_record_recv(ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %374) #7
  %.not176 = icmp eq i32 %375, 1
  br i1 %.not176, label %380, label %376

376:                                              ; preds = %.critedge
  %377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %377, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2342, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %379 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

380:                                              ; preds = %.critedge
  %381 = load i64, ptr %4, align 8, !tbaa !5
  %382 = call i32 @tls13_record_decrypt(ptr noundef nonnull %151, ptr noundef nonnull %155, ptr noundef nonnull %157, ptr noundef nonnull %3, i64 noundef %381, ptr noundef nonnull %53, ptr noundef nonnull %2)
  %.not177 = icmp eq i32 %382, 1
  br i1 %.not177, label %387, label %383

383:                                              ; preds = %380
  %384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %385 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %384, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2349, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %386 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 20) #7
  br label %430

387:                                              ; preds = %380
  %388 = call i32 @tls13_record_get_handshake_finished(ptr noundef nonnull %53, ptr noundef nonnull %29, ptr noundef nonnull %30)
  %.not178 = icmp eq i32 %388, 1
  br i1 %.not178, label %393, label %389

389:                                              ; preds = %387
  %390 = load ptr, ptr @stderr, align 8, !tbaa !9
  %391 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %390, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2355, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %392 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 10) #7
  br label %430

393:                                              ; preds = %387
  %394 = call i32 @tls13_compute_verify_data(ptr noundef nonnull %37, ptr noundef nonnull %22, ptr noundef nonnull %27, ptr noundef nonnull %28)
  %.not179 = icmp eq i32 %394, 1
  br i1 %.not179, label %399, label %395

395:                                              ; preds = %393
  %396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %397 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %396, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2360, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %398 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 80) #7
  br label %430

399:                                              ; preds = %393
  %400 = load i64, ptr %30, align 8, !tbaa !5
  %401 = load i64, ptr %28, align 8, !tbaa !5
  %.not180 = icmp eq i64 %400, %401
  br i1 %.not180, label %402, label %404

402:                                              ; preds = %399
  %403 = load ptr, ptr %29, align 8, !tbaa !9
  %bcmp = call i32 @bcmp(ptr %403, ptr nonnull %27, i64 %400)
  %.not181 = icmp eq i32 %bcmp, 0
  br i1 %.not181, label %408, label %404

404:                                              ; preds = %399, %402
  %405 = load ptr, ptr @stderr, align 8, !tbaa !9
  %406 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %405, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 2366, ptr noundef nonnull @__FUNCTION__.tls13_do_accept) #8
  %407 = call i32 @tls_send_alert(ptr noundef nonnull %0, i32 noundef 20) #7
  br label %430

408:                                              ; preds = %402
  %409 = load i64, ptr %2, align 8, !tbaa !5
  %410 = add i64 %409, -5
  %411 = call i32 @digest_update(ptr noundef nonnull %22, ptr noundef nonnull %95, i64 noundef %410) #7
  %412 = call i32 @tls_seq_num_incr(ptr noundef nonnull %157) #7
  %413 = load ptr, ptr %21, align 8, !tbaa !9
  %414 = call i32 @tls13_hkdf_expand_label(ptr noundef %413, ptr noundef nonnull %40, ptr noundef nonnull @.str.19, ptr noundef null, i64 noundef 0, i64 noundef 16, ptr noundef nonnull %32)
  %415 = load ptr, ptr %21, align 8, !tbaa !9
  %416 = call i32 @tls13_hkdf_expand_label(ptr noundef %415, ptr noundef nonnull %40, ptr noundef nonnull @.str.20, ptr noundef null, i64 noundef 0, i64 noundef 12, ptr noundef nonnull %146)
  %417 = load ptr, ptr %20, align 8, !tbaa !9
  %418 = call i32 @block_cipher_set_encrypt_key(ptr noundef nonnull %142, ptr noundef %417, ptr noundef nonnull %32) #7
  store i64 0, ptr %148, align 8
  %419 = load ptr, ptr %21, align 8, !tbaa !9
  %420 = call i32 @tls13_hkdf_expand_label(ptr noundef %419, ptr noundef nonnull %39, ptr noundef nonnull @.str.19, ptr noundef null, i64 noundef 0, i64 noundef 16, ptr noundef nonnull %31)
  %421 = load ptr, ptr %21, align 8, !tbaa !9
  %422 = call i32 @tls13_hkdf_expand_label(ptr noundef %421, ptr noundef nonnull %39, ptr noundef nonnull @.str.20, ptr noundef null, i64 noundef 0, i64 noundef 12, ptr noundef nonnull %155)
  %423 = load ptr, ptr %20, align 8, !tbaa !9
  %424 = call i32 @block_cipher_set_encrypt_key(ptr noundef nonnull %151, ptr noundef %423, ptr noundef nonnull %31) #7
  store i64 0, ptr %157, align 8
  %425 = getelementptr inbounds i8, ptr %0, i64 63168
  %426 = load i32, ptr %425, align 8, !tbaa !27
  %.not182 = icmp eq i32 %426, 0
  br i1 %.not182, label %427, label %430

427:                                              ; preds = %408
  %428 = load ptr, ptr @stderr, align 8, !tbaa !9
  %429 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %428, ptr noundef nonnull @.str.26) #8
  br label %430

430:                                              ; preds = %.thread189, %350, %408, %427, %404, %395, %389, %383, %376, %337, %329, %322, %312, %306, %299, %286, %278, %269, %258, %250, %241, %229, %221, %212, %199, %191, %182, %172, %164, %121, %113, %104, %87, %81, %72, %66, %60
  %.0141 = phi i32 [ -1, %60 ], [ -1, %66 ], [ -1, %72 ], [ -1, %81 ], [ -1, %104 ], [ -1, %113 ], [ -1, %121 ], [ -1, %164 ], [ -1, %172 ], [ -1, %182 ], [ -1, %191 ], [ -1, %199 ], [ -1, %212 ], [ -1, %221 ], [ -1, %229 ], [ -1, %241 ], [ -1, %250 ], [ -1, %258 ], [ -1, %269 ], [ -1, %278 ], [ -1, %286 ], [ -1, %299 ], [ -1, %306 ], [ -1, %312 ], [ -1, %322 ], [ -1, %329 ], [ -1, %337 ], [ -1, %350 ], [ -1, %376 ], [ -1, %383 ], [ -1, %389 ], [ -1, %395 ], [ -1, %404 ], [ -1, %87 ], [ 1, %427 ], [ 1, %408 ], [ -1, %.thread189 ]
  call void @gmssl_secure_clear(ptr noundef nonnull %17, i64 noundef 128) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %19, i64 noundef 128) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %34, i64 noundef 32) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %35, i64 noundef 32) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %36, i64 noundef 32) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %41, i64 noundef 32) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %37, i64 noundef 32) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %38, i64 noundef 32) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %39, i64 noundef 32) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %40, i64 noundef 32) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %31, i64 noundef 16) #7
  call void @gmssl_secure_clear(ptr noundef nonnull %32, i64 noundef 16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 25600, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  ret i32 %.0141
}

declare i32 @tls_record_get_handshake_client_hello(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @tls_cipher_suites_select(ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #5

declare i32 @tls_record_set_handshake_server_hello(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i64 noundef, i32 noundef, ptr noundef, i64 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 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #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 }
attributes #8 = { cold 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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 61832}
!12 = !{!"", !13, i64 0, !13, i64 4, !7, i64 8, !6, i64 264, !13, i64 272, !7, i64 276, !6, i64 18720, !7, i64 18728, !7, i64 37165, !10, i64 55608, !6, i64 55616, !13, i64 55624, !7, i64 55628, !6, i64 55664, !7, i64 55672, !6, i64 57720, !7, i64 57728, !6, i64 59776, !7, i64 59784, !6, i64 61832, !14, i64 61840, !14, i64 61968, !13, i64 62096, !7, i64 62100, !7, i64 62148, !16, i64 62248, !16, i64 62424, !18, i64 62600, !18, i64 62728, !7, i64 62856, !7, i64 62864, !7, i64 62872, !7, i64 62884, !19, i64 62896, !19, i64 63032, !13, i64 63168}
!13 = !{!"int", !7, i64 0}
!14 = !{!"", !15, i64 0, !7, i64 96}
!15 = !{!"", !7, i64 0, !7, i64 32, !7, i64 64}
!16 = !{!"", !17, i64 0, !7, i64 112}
!17 = !{!"", !7, i64 0, !6, i64 32, !7, i64 40, !6, i64 104}
!18 = !{!"", !7, i64 0}
!19 = !{!"BLOCK_CIPHER_KEY", !7, i64 0, !10, i64 128}
!20 = !{!12, !13, i64 272}
!21 = !{!13, !13, i64 0}
!22 = !{!12, !13, i64 55624}
!23 = !{i64 0, i64 112, !24, i64 112, i64 8, !9}
!24 = !{!7, !7, i64 0}
!25 = !{!12, !6, i64 57720}
!26 = !{!12, !6, i64 59776}
!27 = !{!12, !13, i64 63168}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass