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

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

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

@s2n_use_color_in_output = external dso_local global i8, align 1
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [82 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [106 x i8], align 1
@_s2n_debug_info = external thread_local global %struct.s2n_debug_info, align 8
@.str.21 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [72 x i8], align 1
@s2n_ecdhe_rsa_with_aes_256_gcm_sha384 = external global %struct.s2n_cipher_suite, align 8
@.str.23 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [111 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca [48 x i8], align 16
  %15 = alloca [32 x i8], align 16
  %16 = alloca [32 x i8], align 16
  %17 = alloca [48 x i8], align 16
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca %struct.s2n_blob, align 8
  %28 = alloca i32, align 4
  %29 = alloca %struct.s2n_blob, align 8
  %30 = alloca i32, align 4
  %31 = alloca %struct.s2n_blob, align 8
  %32 = alloca i32, align 4
  %33 = alloca %struct.s2n_stuffer, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  br label %51

51:                                               ; preds = %2
  br label %52

52:                                               ; preds = %51
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %53 = load ptr, ptr @stdout, align 8, !tbaa !9
  %54 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %53, ptr noundef @.str, ptr noundef @.str.1) #12
  %55 = load ptr, ptr @stdout, align 8, !tbaa !9
  %56 = call i32 @fflush(ptr noundef %55)
  br label %57

57:                                               ; preds = %52
  %58 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %59 = icmp eq i32 %58, -1
  br i1 %59, label %60, label %111

60:                                               ; preds = %57
  br label %61

61:                                               ; preds = %60
  br label %62

62:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #12
  %63 = call ptr @__errno_location() #13
  %64 = load i32, ptr %63, align 4, !tbaa !5
  store i32 %64, ptr %6, align 4, !tbaa !5
  %65 = load ptr, ptr @stderr, align 8, !tbaa !9
  %66 = call i32 @s2n_print_stacktrace(ptr noundef %65)
  %67 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %68 = trunc i8 %67 to i1
  br i1 %68, label %69, label %91

69:                                               ; preds = %62
  %70 = load ptr, ptr @stderr, align 8, !tbaa !9
  %71 = call i32 @fileno(ptr noundef %70) #12
  %72 = call i32 @isatty(i32 noundef %71) #12
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %91

74:                                               ; preds = %69
  %75 = load i32, ptr %6, align 4, !tbaa !5
  %76 = call ptr @__errno_location() #13
  store i32 %75, ptr %76, align 4, !tbaa !5
  %77 = load ptr, ptr @stderr, align 8, !tbaa !9
  %78 = load i32, ptr @test_count, align 4, !tbaa !5
  %79 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %80 = load i32, ptr %79, align 4, !tbaa !5
  %81 = call ptr @s2n_strerror(i32 noundef %80, ptr noundef @.str.4)
  %82 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %83 = load i32, ptr %82, align 4, !tbaa !5
  %84 = call ptr @s2n_strerror_debug(i32 noundef %83, ptr noundef @.str.4)
  %85 = call ptr @__errno_location() #13
  %86 = load i32, ptr %85, align 4, !tbaa !5
  %87 = call ptr @strerror(i32 noundef %86) #12
  %88 = call ptr @__errno_location() #13
  %89 = load i32, ptr %88, align 4, !tbaa !5
  %90 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %77, ptr noundef @.str.2, i32 noundef %78, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 41, ptr noundef %81, ptr noundef %84, ptr noundef %87, i32 noundef %89) #12
  br label %108

91:                                               ; preds = %69, %62
  %92 = load i32, ptr %6, align 4, !tbaa !5
  %93 = call ptr @__errno_location() #13
  store i32 %92, ptr %93, align 4, !tbaa !5
  %94 = load ptr, ptr @stderr, align 8, !tbaa !9
  %95 = load i32, ptr @test_count, align 4, !tbaa !5
  %96 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = call ptr @s2n_strerror(i32 noundef %97, ptr noundef @.str.4)
  %99 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = call ptr @s2n_strerror_debug(i32 noundef %100, ptr noundef @.str.4)
  %102 = call ptr @__errno_location() #13
  %103 = load i32, ptr %102, align 4, !tbaa !5
  %104 = call ptr @strerror(i32 noundef %103) #12
  %105 = call ptr @__errno_location() #13
  %106 = load i32, ptr %105, align 4, !tbaa !5
  %107 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %94, ptr noundef @.str.5, i32 noundef %95, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 41, ptr noundef %98, ptr noundef %101, ptr noundef %104, i32 noundef %106) #12
  br label %108

108:                                              ; preds = %91, %74
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #12
  br label %109

109:                                              ; preds = %108
  call void @exit(i32 noundef 1) #14
  unreachable

110:                                              ; No predecessors!
  br label %111

111:                                              ; preds = %110, %57
  br label %112

112:                                              ; preds = %111
  br label %113

113:                                              ; preds = %112
  %114 = load i32, ptr @test_count, align 4, !tbaa !5
  %115 = add nsw i32 %114, 1
  store i32 %115, ptr @test_count, align 4, !tbaa !5
  %116 = call i32 @s2n_enable_atexit()
  %117 = icmp eq i32 %116, -1
  br i1 %117, label %118, label %169

118:                                              ; preds = %113
  br label %119

119:                                              ; preds = %118
  br label %120

120:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #12
  %121 = call ptr @__errno_location() #13
  %122 = load i32, ptr %121, align 4, !tbaa !5
  store i32 %122, ptr %7, align 4, !tbaa !5
  %123 = load ptr, ptr @stderr, align 8, !tbaa !9
  %124 = call i32 @s2n_print_stacktrace(ptr noundef %123)
  %125 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %126 = trunc i8 %125 to i1
  br i1 %126, label %127, label %149

127:                                              ; preds = %120
  %128 = load ptr, ptr @stderr, align 8, !tbaa !9
  %129 = call i32 @fileno(ptr noundef %128) #12
  %130 = call i32 @isatty(i32 noundef %129) #12
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %132, label %149

132:                                              ; preds = %127
  %133 = load i32, ptr %7, align 4, !tbaa !5
  %134 = call ptr @__errno_location() #13
  store i32 %133, ptr %134, align 4, !tbaa !5
  %135 = load ptr, ptr @stderr, align 8, !tbaa !9
  %136 = load i32, ptr @test_count, align 4, !tbaa !5
  %137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %138 = load i32, ptr %137, align 4, !tbaa !5
  %139 = call ptr @s2n_strerror(i32 noundef %138, ptr noundef @.str.4)
  %140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %141 = load i32, ptr %140, align 4, !tbaa !5
  %142 = call ptr @s2n_strerror_debug(i32 noundef %141, ptr noundef @.str.4)
  %143 = call ptr @__errno_location() #13
  %144 = load i32, ptr %143, align 4, !tbaa !5
  %145 = call ptr @strerror(i32 noundef %144) #12
  %146 = call ptr @__errno_location() #13
  %147 = load i32, ptr %146, align 4, !tbaa !5
  %148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %135, ptr noundef @.str.2, i32 noundef %136, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 41, ptr noundef %139, ptr noundef %142, ptr noundef %145, i32 noundef %147) #12
  br label %166

149:                                              ; preds = %127, %120
  %150 = load i32, ptr %7, align 4, !tbaa !5
  %151 = call ptr @__errno_location() #13
  store i32 %150, ptr %151, align 4, !tbaa !5
  %152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %153 = load i32, ptr @test_count, align 4, !tbaa !5
  %154 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = call ptr @s2n_strerror(i32 noundef %155, ptr noundef @.str.4)
  %157 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = call ptr @s2n_strerror_debug(i32 noundef %158, ptr noundef @.str.4)
  %160 = call ptr @__errno_location() #13
  %161 = load i32, ptr %160, align 4, !tbaa !5
  %162 = call ptr @strerror(i32 noundef %161) #12
  %163 = call ptr @__errno_location() #13
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %152, ptr noundef @.str.5, i32 noundef %153, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 41, ptr noundef %156, ptr noundef %159, ptr noundef %162, i32 noundef %164) #12
  br label %166

166:                                              ; preds = %149, %132
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #12
  br label %167

167:                                              ; preds = %166
  call void @exit(i32 noundef 1) #14
  unreachable

168:                                              ; No predecessors!
  br label %169

169:                                              ; preds = %168, %113
  br label %170

170:                                              ; preds = %169
  br label %171

171:                                              ; preds = %170
  br label %172

172:                                              ; preds = %171
  %173 = call i32 @s2n_init()
  %174 = icmp eq i32 %173, -1
  br i1 %174, label %175, label %226

175:                                              ; preds = %172
  br label %176

176:                                              ; preds = %175
  br label %177

177:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #12
  %178 = call ptr @__errno_location() #13
  %179 = load i32, ptr %178, align 4, !tbaa !5
  store i32 %179, ptr %8, align 4, !tbaa !5
  %180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %181 = call i32 @s2n_print_stacktrace(ptr noundef %180)
  %182 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %183 = trunc i8 %182 to i1
  br i1 %183, label %184, label %206

184:                                              ; preds = %177
  %185 = load ptr, ptr @stderr, align 8, !tbaa !9
  %186 = call i32 @fileno(ptr noundef %185) #12
  %187 = call i32 @isatty(i32 noundef %186) #12
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %189, label %206

189:                                              ; preds = %184
  %190 = load i32, ptr %8, align 4, !tbaa !5
  %191 = call ptr @__errno_location() #13
  store i32 %190, ptr %191, align 4, !tbaa !5
  %192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %193 = load i32, ptr @test_count, align 4, !tbaa !5
  %194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %195 = load i32, ptr %194, align 4, !tbaa !5
  %196 = call ptr @s2n_strerror(i32 noundef %195, ptr noundef @.str.4)
  %197 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %198 = load i32, ptr %197, align 4, !tbaa !5
  %199 = call ptr @s2n_strerror_debug(i32 noundef %198, ptr noundef @.str.4)
  %200 = call ptr @__errno_location() #13
  %201 = load i32, ptr %200, align 4, !tbaa !5
  %202 = call ptr @strerror(i32 noundef %201) #12
  %203 = call ptr @__errno_location() #13
  %204 = load i32, ptr %203, align 4, !tbaa !5
  %205 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %192, ptr noundef @.str.2, i32 noundef %193, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 41, ptr noundef %196, ptr noundef %199, ptr noundef %202, i32 noundef %204) #12
  br label %223

206:                                              ; preds = %184, %177
  %207 = load i32, ptr %8, align 4, !tbaa !5
  %208 = call ptr @__errno_location() #13
  store i32 %207, ptr %208, align 4, !tbaa !5
  %209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %210 = load i32, ptr @test_count, align 4, !tbaa !5
  %211 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %213 = call ptr @s2n_strerror(i32 noundef %212, ptr noundef @.str.4)
  %214 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %215 = load i32, ptr %214, align 4, !tbaa !5
  %216 = call ptr @s2n_strerror_debug(i32 noundef %215, ptr noundef @.str.4)
  %217 = call ptr @__errno_location() #13
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = call ptr @strerror(i32 noundef %218) #12
  %220 = call ptr @__errno_location() #13
  %221 = load i32, ptr %220, align 4, !tbaa !5
  %222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %209, ptr noundef @.str.5, i32 noundef %210, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 41, ptr noundef %213, ptr noundef %216, ptr noundef %219, i32 noundef %221) #12
  br label %223

223:                                              ; preds = %206, %189
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #12
  br label %224

224:                                              ; preds = %223
  call void @exit(i32 noundef 1) #14
  unreachable

225:                                              ; No predecessors!
  br label %226

226:                                              ; preds = %225, %172
  br label %227

227:                                              ; preds = %226
  br label %228

228:                                              ; preds = %227
  br label %229

229:                                              ; preds = %228
  %230 = load i32, ptr @test_count, align 4, !tbaa !5
  %231 = add nsw i32 %230, 1
  store i32 %231, ptr @test_count, align 4, !tbaa !5
  %232 = call i32 (...) @s2n_disable_tls13_in_test()
  %233 = icmp eq i32 %232, -1
  br i1 %233, label %234, label %285

234:                                              ; preds = %229
  br label %235

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #12
  %237 = call ptr @__errno_location() #13
  %238 = load i32, ptr %237, align 4, !tbaa !5
  store i32 %238, ptr %9, align 4, !tbaa !5
  %239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %240 = call i32 @s2n_print_stacktrace(ptr noundef %239)
  %241 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %242 = trunc i8 %241 to i1
  br i1 %242, label %243, label %265

243:                                              ; preds = %236
  %244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %245 = call i32 @fileno(ptr noundef %244) #12
  %246 = call i32 @isatty(i32 noundef %245) #12
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %265

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

265:                                              ; preds = %243, %236
  %266 = load i32, ptr %9, align 4, !tbaa !5
  %267 = call ptr @__errno_location() #13
  store i32 %266, ptr %267, align 4, !tbaa !5
  %268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %269 = load i32, ptr @test_count, align 4, !tbaa !5
  %270 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %271 = load i32, ptr %270, align 4, !tbaa !5
  %272 = call ptr @s2n_strerror(i32 noundef %271, ptr noundef @.str.4)
  %273 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %274 = load i32, ptr %273, align 4, !tbaa !5
  %275 = call ptr @s2n_strerror_debug(i32 noundef %274, ptr noundef @.str.4)
  %276 = call ptr @__errno_location() #13
  %277 = load i32, ptr %276, align 4, !tbaa !5
  %278 = call ptr @strerror(i32 noundef %277) #12
  %279 = call ptr @__errno_location() #13
  %280 = load i32, ptr %279, align 4, !tbaa !5
  %281 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %268, ptr noundef @.str.5, i32 noundef %269, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 42, ptr noundef %272, ptr noundef %275, ptr noundef %278, i32 noundef %280) #12
  br label %282

282:                                              ; preds = %265, %248
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #12
  br label %283

283:                                              ; preds = %282
  call void @exit(i32 noundef 1) #14
  unreachable

284:                                              ; No predecessors!
  br label %285

285:                                              ; preds = %284, %229
  br label %286

286:                                              ; preds = %285
  %287 = call zeroext i1 @s2n_pq_is_enabled()
  br i1 %287, label %435, label %288

288:                                              ; preds = %286
  br label %289

289:                                              ; preds = %288
  br label %290

290:                                              ; preds = %289
  %291 = call i32 @s2n_cleanup()
  %292 = icmp eq i32 %291, -1
  br i1 %292, label %293, label %344

293:                                              ; preds = %290
  br label %294

294:                                              ; preds = %293
  br label %295

295:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #12
  %296 = call ptr @__errno_location() #13
  %297 = load i32, ptr %296, align 4, !tbaa !5
  store i32 %297, ptr %10, align 4, !tbaa !5
  %298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %299 = call i32 @s2n_print_stacktrace(ptr noundef %298)
  %300 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %301 = trunc i8 %300 to i1
  br i1 %301, label %302, label %324

302:                                              ; preds = %295
  %303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %304 = call i32 @fileno(ptr noundef %303) #12
  %305 = call i32 @isatty(i32 noundef %304) #12
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %324

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

324:                                              ; preds = %302, %295
  %325 = load i32, ptr %10, align 4, !tbaa !5
  %326 = call ptr @__errno_location() #13
  store i32 %325, ptr %326, align 4, !tbaa !5
  %327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %328 = load i32, ptr @test_count, align 4, !tbaa !5
  %329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %330 = load i32, ptr %329, align 4, !tbaa !5
  %331 = call ptr @s2n_strerror(i32 noundef %330, ptr noundef @.str.4)
  %332 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %333 = load i32, ptr %332, align 4, !tbaa !5
  %334 = call ptr @s2n_strerror_debug(i32 noundef %333, ptr noundef @.str.4)
  %335 = call ptr @__errno_location() #13
  %336 = load i32, ptr %335, align 4, !tbaa !5
  %337 = call ptr @strerror(i32 noundef %336) #12
  %338 = call ptr @__errno_location() #13
  %339 = load i32, ptr %338, align 4, !tbaa !5
  %340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %327, ptr noundef @.str.5, i32 noundef %328, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 50, ptr noundef %331, ptr noundef %334, ptr noundef %337, i32 noundef %339) #12
  br label %341

341:                                              ; preds = %324, %307
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #12
  br label %342

342:                                              ; preds = %341
  call void @exit(i32 noundef 1) #14
  unreachable

343:                                              ; No predecessors!
  br label %344

344:                                              ; preds = %343, %290
  br label %345

345:                                              ; preds = %344
  br label %346

346:                                              ; preds = %345
  br label %347

347:                                              ; preds = %346
  %348 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %349 = icmp eq i32 %348, -1
  br i1 %349, label %350, label %401

350:                                              ; preds = %347
  br label %351

351:                                              ; preds = %350
  br label %352

352:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #12
  %353 = call ptr @__errno_location() #13
  %354 = load i32, ptr %353, align 4, !tbaa !5
  store i32 %354, ptr %11, align 4, !tbaa !5
  %355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %356 = call i32 @s2n_print_stacktrace(ptr noundef %355)
  %357 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %358 = trunc i8 %357 to i1
  br i1 %358, label %359, label %381

359:                                              ; preds = %352
  %360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %361 = call i32 @fileno(ptr noundef %360) #12
  %362 = call i32 @isatty(i32 noundef %361) #12
  %363 = icmp ne i32 %362, 0
  br i1 %363, label %364, label %381

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

381:                                              ; preds = %359, %352
  %382 = load i32, ptr %11, align 4, !tbaa !5
  %383 = call ptr @__errno_location() #13
  store i32 %382, ptr %383, align 4, !tbaa !5
  %384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %385 = load i32, ptr @test_count, align 4, !tbaa !5
  %386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %388 = call ptr @s2n_strerror(i32 noundef %387, ptr noundef @.str.4)
  %389 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %391 = call ptr @s2n_strerror_debug(i32 noundef %390, ptr noundef @.str.4)
  %392 = call ptr @__errno_location() #13
  %393 = load i32, ptr %392, align 4, !tbaa !5
  %394 = call ptr @strerror(i32 noundef %393) #12
  %395 = call ptr @__errno_location() #13
  %396 = load i32, ptr %395, align 4, !tbaa !5
  %397 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %384, ptr noundef @.str.5, i32 noundef %385, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 50, ptr noundef %388, ptr noundef %391, ptr noundef %394, i32 noundef %396) #12
  br label %398

398:                                              ; preds = %381, %364
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #12
  br label %399

399:                                              ; preds = %398
  call void @exit(i32 noundef 1) #14
  unreachable

400:                                              ; No predecessors!
  br label %401

401:                                              ; preds = %400, %347
  br label %402

402:                                              ; preds = %401
  %403 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %404 = trunc i8 %403 to i1
  br i1 %404, label %405, label %421

405:                                              ; preds = %402
  %406 = load ptr, ptr @stdout, align 8, !tbaa !9
  %407 = call i32 @fileno(ptr noundef %406) #12
  %408 = call i32 @isatty(i32 noundef %407) #12
  %409 = icmp ne i32 %408, 0
  br i1 %409, label %410, label %421

410:                                              ; preds = %405
  %411 = load i32, ptr @test_count, align 4, !tbaa !5
  %412 = icmp ne i32 %411, 0
  br i1 %412, label %413, label %417

413:                                              ; preds = %410
  %414 = load ptr, ptr @stdout, align 8, !tbaa !9
  %415 = load i32, ptr @test_count, align 4, !tbaa !5
  %416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %414, ptr noundef @.str.11, i32 noundef %415) #12
  br label %420

417:                                              ; preds = %410
  %418 = load ptr, ptr @stdout, align 8, !tbaa !9
  %419 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %418, ptr noundef @.str.12) #12
  br label %420

420:                                              ; preds = %417, %413
  br label %432

421:                                              ; preds = %405, %402
  %422 = load i32, ptr @test_count, align 4, !tbaa !5
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %424, label %428

424:                                              ; preds = %421
  %425 = load ptr, ptr @stdout, align 8, !tbaa !9
  %426 = load i32, ptr @test_count, align 4, !tbaa !5
  %427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %425, ptr noundef @.str.13, i32 noundef %426) #12
  br label %431

428:                                              ; preds = %421
  %429 = load ptr, ptr @stdout, align 8, !tbaa !9
  %430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %429, ptr noundef @.str.14) #12
  br label %431

431:                                              ; preds = %428, %424
  br label %432

432:                                              ; preds = %431, %420
  store i32 0, ptr %3, align 4
  br label %2028

433:                                              ; No predecessors!
  br label %434

434:                                              ; preds = %433
  br label %435

435:                                              ; preds = %434, %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #12
  %436 = call noalias ptr @fopen(ptr noundef @.str.15, ptr noundef @.str.16)
  store ptr %436, ptr %12, align 8, !tbaa !9
  br label %437

437:                                              ; preds = %435
  %438 = load i32, ptr @test_count, align 4, !tbaa !5
  %439 = add nsw i32 %438, 1
  store i32 %439, ptr @test_count, align 4, !tbaa !5
  %440 = load ptr, ptr %12, align 8, !tbaa !9
  %441 = icmp eq ptr %440, null
  br i1 %441, label %442, label %495

442:                                              ; preds = %437
  br label %443

443:                                              ; preds = %442
  br label %444

444:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #12
  %445 = call ptr @__errno_location() #13
  %446 = load i32, ptr %445, align 4, !tbaa !5
  store i32 %446, ptr %13, align 4, !tbaa !5
  %447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %448 = call i32 @s2n_print_stacktrace(ptr noundef %447)
  %449 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %450 = trunc i8 %449 to i1
  br i1 %450, label %451, label %473

451:                                              ; preds = %444
  %452 = load ptr, ptr @stderr, align 8, !tbaa !9
  %453 = call i32 @fileno(ptr noundef %452) #12
  %454 = call i32 @isatty(i32 noundef %453) #12
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %473

456:                                              ; preds = %451
  %457 = load i32, ptr %13, align 4, !tbaa !5
  %458 = call ptr @__errno_location() #13
  store i32 %457, ptr %458, align 4, !tbaa !5
  %459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %460 = load i32, ptr @test_count, align 4, !tbaa !5
  %461 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %462 = load i32, ptr %461, align 4, !tbaa !5
  %463 = call ptr @s2n_strerror(i32 noundef %462, ptr noundef @.str.4)
  %464 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %465 = load i32, ptr %464, align 4, !tbaa !5
  %466 = call ptr @s2n_strerror_debug(i32 noundef %465, ptr noundef @.str.4)
  %467 = call ptr @__errno_location() #13
  %468 = load i32, ptr %467, align 4, !tbaa !5
  %469 = call ptr @strerror(i32 noundef %468) #12
  %470 = call ptr @__errno_location() #13
  %471 = load i32, ptr %470, align 4, !tbaa !5
  %472 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %459, ptr noundef @.str.2, i32 noundef %460, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 54, ptr noundef %463, ptr noundef %466, ptr noundef %469, i32 noundef %471) #12
  br label %490

473:                                              ; preds = %451, %444
  %474 = load i32, ptr %13, align 4, !tbaa !5
  %475 = call ptr @__errno_location() #13
  store i32 %474, ptr %475, align 4, !tbaa !5
  %476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %477 = load i32, ptr @test_count, align 4, !tbaa !5
  %478 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %479 = load i32, ptr %478, align 4, !tbaa !5
  %480 = call ptr @s2n_strerror(i32 noundef %479, ptr noundef @.str.4)
  %481 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %482 = load i32, ptr %481, align 4, !tbaa !5
  %483 = call ptr @s2n_strerror_debug(i32 noundef %482, ptr noundef @.str.4)
  %484 = call ptr @__errno_location() #13
  %485 = load i32, ptr %484, align 4, !tbaa !5
  %486 = call ptr @strerror(i32 noundef %485) #12
  %487 = call ptr @__errno_location() #13
  %488 = load i32, ptr %487, align 4, !tbaa !5
  %489 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %476, ptr noundef @.str.5, i32 noundef %477, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 54, ptr noundef %480, ptr noundef %483, ptr noundef %486, i32 noundef %488) #12
  br label %490

490:                                              ; preds = %473, %456
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #12
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491
  call void @exit(i32 noundef 1) #14
  unreachable

493:                                              ; No predecessors!
  br label %494

494:                                              ; preds = %493
  br label %495

495:                                              ; preds = %494, %437
  br label %496

496:                                              ; preds = %495
  br label %497

497:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 48, ptr %14) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #12
  call void @llvm.lifetime.start.p0(i64 48, ptr %17) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #12
  store i32 0, ptr %18, align 4, !tbaa !5
  br label %498

498:                                              ; preds = %1807, %497
  %499 = load i32, ptr %18, align 4, !tbaa !5
  %500 = icmp ult i32 %499, 10
  br i1 %500, label %502, label %501

501:                                              ; preds = %498
  store i32 52, ptr %19, align 4
  br label %1810

502:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #12
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %503

503:                                              ; preds = %502
  %504 = load ptr, ptr %12, align 8, !tbaa !9
  %505 = call i32 @FindMarker(ptr noundef %504, ptr noundef @.str.18)
  %506 = icmp sgt i32 %505, -1
  br i1 %506, label %508, label %507

507:                                              ; preds = %503
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1804

508:                                              ; preds = %503
  br label %509

509:                                              ; preds = %508
  br label %510

510:                                              ; preds = %509
  br label %511

511:                                              ; preds = %510
  %512 = load ptr, ptr %12, align 8, !tbaa !9
  %513 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %512, ptr noundef @.str.19, ptr noundef %20)
  %514 = icmp sgt i32 %513, 0
  br i1 %514, label %548, label %515

515:                                              ; preds = %511
  br label %516

516:                                              ; preds = %515
  br label %517

517:                                              ; preds = %516
  %518 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %519 = getelementptr inbounds %struct.s2n_debug_info, ptr %518, i32 0, i32 0
  store ptr @.str.20, ptr %519, align 8, !tbaa !15
  %520 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %521 = getelementptr inbounds %struct.s2n_debug_info, ptr %520, i32 0, i32 0
  %522 = load ptr, ptr %521, align 8, !tbaa !15
  %523 = getelementptr inbounds i8, ptr %522, i64 21
  %524 = call ptr @strrchr(ptr noundef %523, i32 noundef 47) #15
  %525 = icmp ne ptr %524, null
  br i1 %525, label %526, label %533

526:                                              ; preds = %517
  %527 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %528 = getelementptr inbounds %struct.s2n_debug_info, ptr %527, i32 0, i32 0
  %529 = load ptr, ptr %528, align 8, !tbaa !15
  %530 = getelementptr inbounds i8, ptr %529, i64 21
  %531 = call ptr @strrchr(ptr noundef %530, i32 noundef 47) #15
  %532 = getelementptr inbounds i8, ptr %531, i64 1
  br label %538

533:                                              ; preds = %517
  %534 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %535 = getelementptr inbounds %struct.s2n_debug_info, ptr %534, i32 0, i32 0
  %536 = load ptr, ptr %535, align 8, !tbaa !15
  %537 = getelementptr inbounds i8, ptr %536, i64 21
  br label %538

538:                                              ; preds = %533, %526
  %539 = phi ptr [ %532, %526 ], [ %537, %533 ]
  %540 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %541 = getelementptr inbounds %struct.s2n_debug_info, ptr %540, i32 0, i32 1
  store ptr %539, ptr %541, align 8, !tbaa !17
  %542 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %542, align 4, !tbaa !5
  %543 = call i32 @s2n_calculate_stacktrace()
  br label %544

544:                                              ; preds = %538
  br label %545

545:                                              ; preds = %544
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1804

546:                                              ; No predecessors!
  br label %547

547:                                              ; preds = %546
  br label %548

548:                                              ; preds = %547, %511
  br label %549

549:                                              ; preds = %548
  br label %550

550:                                              ; preds = %549
  br label %551

551:                                              ; preds = %550
  %552 = load i32, ptr %20, align 4, !tbaa !5
  %553 = load i32, ptr %18, align 4, !tbaa !5
  %554 = icmp eq i32 %552, %553
  br i1 %554, label %588, label %555

555:                                              ; preds = %551
  br label %556

556:                                              ; preds = %555
  br label %557

557:                                              ; preds = %556
  %558 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %559 = getelementptr inbounds %struct.s2n_debug_info, ptr %558, i32 0, i32 0
  store ptr @.str.21, ptr %559, align 8, !tbaa !15
  %560 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %561 = getelementptr inbounds %struct.s2n_debug_info, ptr %560, i32 0, i32 0
  %562 = load ptr, ptr %561, align 8, !tbaa !15
  %563 = getelementptr inbounds i8, ptr %562, i64 21
  %564 = call ptr @strrchr(ptr noundef %563, i32 noundef 47) #15
  %565 = icmp ne ptr %564, null
  br i1 %565, label %566, label %573

566:                                              ; preds = %557
  %567 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %568 = getelementptr inbounds %struct.s2n_debug_info, ptr %567, i32 0, i32 0
  %569 = load ptr, ptr %568, align 8, !tbaa !15
  %570 = getelementptr inbounds i8, ptr %569, i64 21
  %571 = call ptr @strrchr(ptr noundef %570, i32 noundef 47) #15
  %572 = getelementptr inbounds i8, ptr %571, i64 1
  br label %578

573:                                              ; preds = %557
  %574 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %575 = getelementptr inbounds %struct.s2n_debug_info, ptr %574, i32 0, i32 0
  %576 = load ptr, ptr %575, align 8, !tbaa !15
  %577 = getelementptr inbounds i8, ptr %576, i64 21
  br label %578

578:                                              ; preds = %573, %566
  %579 = phi ptr [ %572, %566 ], [ %577, %573 ]
  %580 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %581 = getelementptr inbounds %struct.s2n_debug_info, ptr %580, i32 0, i32 1
  store ptr %579, ptr %581, align 8, !tbaa !17
  %582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %582, align 4, !tbaa !5
  %583 = call i32 @s2n_calculate_stacktrace()
  br label %584

584:                                              ; preds = %578
  br label %585

585:                                              ; preds = %584
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1804

586:                                              ; No predecessors!
  br label %587

587:                                              ; preds = %586
  br label %588

588:                                              ; preds = %587, %551
  br label %589

589:                                              ; preds = %588
  br label %590

590:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #12
  store ptr null, ptr %21, align 8, !tbaa !9
  br label %591

591:                                              ; preds = %590
  %592 = load i32, ptr @test_count, align 4, !tbaa !5
  %593 = add nsw i32 %592, 1
  store i32 %593, ptr @test_count, align 4, !tbaa !5
  %594 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %594, ptr %21, align 8, !tbaa !9
  %595 = icmp eq ptr %594, null
  br i1 %595, label %596, label %649

596:                                              ; preds = %591
  br label %597

597:                                              ; preds = %596
  br label %598

598:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #12
  %599 = call ptr @__errno_location() #13
  %600 = load i32, ptr %599, align 4, !tbaa !5
  store i32 %600, ptr %22, align 4, !tbaa !5
  %601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %602 = call i32 @s2n_print_stacktrace(ptr noundef %601)
  %603 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %604 = trunc i8 %603 to i1
  br i1 %604, label %605, label %627

605:                                              ; preds = %598
  %606 = load ptr, ptr @stderr, align 8, !tbaa !9
  %607 = call i32 @fileno(ptr noundef %606) #12
  %608 = call i32 @isatty(i32 noundef %607) #12
  %609 = icmp ne i32 %608, 0
  br i1 %609, label %610, label %627

610:                                              ; preds = %605
  %611 = load i32, ptr %22, align 4, !tbaa !5
  %612 = call ptr @__errno_location() #13
  store i32 %611, ptr %612, align 4, !tbaa !5
  %613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %614 = load i32, ptr @test_count, align 4, !tbaa !5
  %615 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %616 = load i32, ptr %615, align 4, !tbaa !5
  %617 = call ptr @s2n_strerror(i32 noundef %616, ptr noundef @.str.4)
  %618 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %619 = load i32, ptr %618, align 4, !tbaa !5
  %620 = call ptr @s2n_strerror_debug(i32 noundef %619, ptr noundef @.str.4)
  %621 = call ptr @__errno_location() #13
  %622 = load i32, ptr %621, align 4, !tbaa !5
  %623 = call ptr @strerror(i32 noundef %622) #12
  %624 = call ptr @__errno_location() #13
  %625 = load i32, ptr %624, align 4, !tbaa !5
  %626 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %613, ptr noundef @.str.2, i32 noundef %614, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 69, ptr noundef %617, ptr noundef %620, ptr noundef %623, i32 noundef %625) #12
  br label %644

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

644:                                              ; preds = %627, %610
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #12
  br label %645

645:                                              ; preds = %644
  br label %646

646:                                              ; preds = %645
  call void @exit(i32 noundef 1) #14
  unreachable

647:                                              ; No predecessors!
  br label %648

648:                                              ; preds = %647
  br label %649

649:                                              ; preds = %648, %591
  br label %650

650:                                              ; preds = %649
  br label %651

651:                                              ; preds = %650
  %652 = load ptr, ptr %21, align 8, !tbaa !9
  %653 = getelementptr inbounds %struct.s2n_connection, ptr %652, i32 0, i32 23
  store i8 33, ptr %653, align 4, !tbaa !18
  %654 = load ptr, ptr %21, align 8, !tbaa !9
  %655 = getelementptr inbounds %struct.s2n_connection, ptr %654, i32 0, i32 27
  %656 = load ptr, ptr %655, align 8, !tbaa !45
  %657 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %656, i32 0, i32 0
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %657, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #12
  store i32 0, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #12
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %658

658:                                              ; preds = %651
  %659 = load ptr, ptr %12, align 8, !tbaa !9
  %660 = getelementptr inbounds [48 x i8], ptr %14, i64 0, i64 0
  %661 = call i32 @ReadHex(ptr noundef %659, ptr noundef %660, i32 noundef 48, ptr noundef @.str.23)
  %662 = icmp sgt i32 %661, -1
  br i1 %662, label %664, label %663

663:                                              ; preds = %658
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1803

664:                                              ; preds = %658
  br label %665

665:                                              ; preds = %664
  br label %666

666:                                              ; preds = %665
  br label %667

667:                                              ; preds = %666
  %668 = load ptr, ptr %12, align 8, !tbaa !9
  %669 = call i32 @FindMarker(ptr noundef %668, ptr noundef @.str.24)
  %670 = icmp sgt i32 %669, -1
  br i1 %670, label %672, label %671

671:                                              ; preds = %667
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1803

672:                                              ; preds = %667
  br label %673

673:                                              ; preds = %672
  br label %674

674:                                              ; preds = %673
  br label %675

675:                                              ; preds = %674
  %676 = load ptr, ptr %12, align 8, !tbaa !9
  %677 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %676, ptr noundef @.str.19, ptr noundef %23)
  %678 = icmp sgt i32 %677, 0
  br i1 %678, label %712, label %679

679:                                              ; preds = %675
  br label %680

680:                                              ; preds = %679
  br label %681

681:                                              ; preds = %680
  %682 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %683 = getelementptr inbounds %struct.s2n_debug_info, ptr %682, i32 0, i32 0
  store ptr @.str.25, ptr %683, align 8, !tbaa !15
  %684 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %685 = getelementptr inbounds %struct.s2n_debug_info, ptr %684, i32 0, i32 0
  %686 = load ptr, ptr %685, align 8, !tbaa !15
  %687 = getelementptr inbounds i8, ptr %686, i64 21
  %688 = call ptr @strrchr(ptr noundef %687, i32 noundef 47) #15
  %689 = icmp ne ptr %688, null
  br i1 %689, label %690, label %697

690:                                              ; preds = %681
  %691 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %692 = getelementptr inbounds %struct.s2n_debug_info, ptr %691, i32 0, i32 0
  %693 = load ptr, ptr %692, align 8, !tbaa !15
  %694 = getelementptr inbounds i8, ptr %693, i64 21
  %695 = call ptr @strrchr(ptr noundef %694, i32 noundef 47) #15
  %696 = getelementptr inbounds i8, ptr %695, i64 1
  br label %702

697:                                              ; preds = %681
  %698 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %699 = getelementptr inbounds %struct.s2n_debug_info, ptr %698, i32 0, i32 0
  %700 = load ptr, ptr %699, align 8, !tbaa !15
  %701 = getelementptr inbounds i8, ptr %700, i64 21
  br label %702

702:                                              ; preds = %697, %690
  %703 = phi ptr [ %696, %690 ], [ %701, %697 ]
  %704 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %705 = getelementptr inbounds %struct.s2n_debug_info, ptr %704, i32 0, i32 1
  store ptr %703, ptr %705, align 8, !tbaa !17
  %706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %706, align 4, !tbaa !5
  %707 = call i32 @s2n_calculate_stacktrace()
  br label %708

708:                                              ; preds = %702
  br label %709

709:                                              ; preds = %708
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1803

710:                                              ; No predecessors!
  br label %711

711:                                              ; preds = %710
  br label %712

712:                                              ; preds = %711, %675
  br label %713

713:                                              ; preds = %712
  br label %714

714:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #12
  store ptr null, ptr %25, align 8, !tbaa !9
  br label %715

715:                                              ; preds = %714
  %716 = load i32, ptr %23, align 4, !tbaa !5
  %717 = zext i32 %716 to i64
  %718 = call noalias ptr @malloc(i64 noundef %717) #16
  store ptr %718, ptr %25, align 8, !tbaa !9
  %719 = icmp ne ptr %718, null
  br i1 %719, label %753, label %720

720:                                              ; preds = %715
  br label %721

721:                                              ; preds = %720
  br label %722

722:                                              ; preds = %721
  %723 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %724 = getelementptr inbounds %struct.s2n_debug_info, ptr %723, i32 0, i32 0
  store ptr @.str.26, ptr %724, align 8, !tbaa !15
  %725 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %726 = getelementptr inbounds %struct.s2n_debug_info, ptr %725, i32 0, i32 0
  %727 = load ptr, ptr %726, align 8, !tbaa !15
  %728 = getelementptr inbounds i8, ptr %727, i64 21
  %729 = call ptr @strrchr(ptr noundef %728, i32 noundef 47) #15
  %730 = icmp ne ptr %729, null
  br i1 %730, label %731, label %738

731:                                              ; preds = %722
  %732 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %733 = getelementptr inbounds %struct.s2n_debug_info, ptr %732, i32 0, i32 0
  %734 = load ptr, ptr %733, align 8, !tbaa !15
  %735 = getelementptr inbounds i8, ptr %734, i64 21
  %736 = call ptr @strrchr(ptr noundef %735, i32 noundef 47) #15
  %737 = getelementptr inbounds i8, ptr %736, i64 1
  br label %743

738:                                              ; preds = %722
  %739 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %740 = getelementptr inbounds %struct.s2n_debug_info, ptr %739, i32 0, i32 0
  %741 = load ptr, ptr %740, align 8, !tbaa !15
  %742 = getelementptr inbounds i8, ptr %741, i64 21
  br label %743

743:                                              ; preds = %738, %731
  %744 = phi ptr [ %737, %731 ], [ %742, %738 ]
  %745 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %746 = getelementptr inbounds %struct.s2n_debug_info, ptr %745, i32 0, i32 1
  store ptr %744, ptr %746, align 8, !tbaa !17
  %747 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %747, align 4, !tbaa !5
  %748 = call i32 @s2n_calculate_stacktrace()
  br label %749

749:                                              ; preds = %743
  br label %750

750:                                              ; preds = %749
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1802

751:                                              ; No predecessors!
  br label %752

752:                                              ; preds = %751
  br label %753

753:                                              ; preds = %752, %715
  br label %754

754:                                              ; preds = %753
  br label %755

755:                                              ; preds = %754
  br label %756

756:                                              ; preds = %755
  %757 = load ptr, ptr %12, align 8, !tbaa !9
  %758 = load ptr, ptr %25, align 8, !tbaa !9
  %759 = load i32, ptr %23, align 4, !tbaa !5
  %760 = call i32 @ReadHex(ptr noundef %757, ptr noundef %758, i32 noundef %759, ptr noundef @.str.27)
  %761 = icmp sgt i32 %760, -1
  br i1 %761, label %763, label %762

762:                                              ; preds = %756
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1802

763:                                              ; preds = %756
  br label %764

764:                                              ; preds = %763
  br label %765

765:                                              ; preds = %764
  br label %766

766:                                              ; preds = %765
  %767 = load ptr, ptr %12, align 8, !tbaa !9
  %768 = getelementptr inbounds [32 x i8], ptr %15, i64 0, i64 0
  %769 = call i32 @ReadHex(ptr noundef %767, ptr noundef %768, i32 noundef 32, ptr noundef @.str.28)
  %770 = icmp sgt i32 %769, -1
  br i1 %770, label %772, label %771

771:                                              ; preds = %766
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1802

772:                                              ; preds = %766
  br label %773

773:                                              ; preds = %772
  br label %774

774:                                              ; preds = %773
  br label %775

775:                                              ; preds = %774
  %776 = load ptr, ptr %12, align 8, !tbaa !9
  %777 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %778 = call i32 @ReadHex(ptr noundef %776, ptr noundef %777, i32 noundef 32, ptr noundef @.str.29)
  %779 = icmp sgt i32 %778, -1
  br i1 %779, label %781, label %780

780:                                              ; preds = %775
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1802

781:                                              ; preds = %775
  br label %782

782:                                              ; preds = %781
  br label %783

783:                                              ; preds = %782
  br label %784

784:                                              ; preds = %783
  %785 = load ptr, ptr %12, align 8, !tbaa !9
  %786 = call i32 @FindMarker(ptr noundef %785, ptr noundef @.str.30)
  %787 = icmp sgt i32 %786, -1
  br i1 %787, label %789, label %788

788:                                              ; preds = %784
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1802

789:                                              ; preds = %784
  br label %790

790:                                              ; preds = %789
  br label %791

791:                                              ; preds = %790
  br label %792

792:                                              ; preds = %791
  %793 = load ptr, ptr %12, align 8, !tbaa !9
  %794 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %793, ptr noundef @.str.19, ptr noundef %24)
  %795 = icmp sgt i32 %794, 0
  br i1 %795, label %829, label %796

796:                                              ; preds = %792
  br label %797

797:                                              ; preds = %796
  br label %798

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

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

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

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

825:                                              ; preds = %819
  br label %826

826:                                              ; preds = %825
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1802

827:                                              ; No predecessors!
  br label %828

828:                                              ; preds = %827
  br label %829

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

830:                                              ; preds = %829
  br label %831

831:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #12
  store ptr null, ptr %26, align 8, !tbaa !9
  br label %832

832:                                              ; preds = %831
  %833 = load i32, ptr %24, align 4, !tbaa !5
  %834 = zext i32 %833 to i64
  %835 = call noalias ptr @malloc(i64 noundef %834) #16
  store ptr %835, ptr %26, align 8, !tbaa !9
  %836 = icmp ne ptr %835, null
  br i1 %836, label %870, label %837

837:                                              ; preds = %832
  br label %838

838:                                              ; preds = %837
  br label %839

839:                                              ; preds = %838
  %840 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %841 = getelementptr inbounds %struct.s2n_debug_info, ptr %840, i32 0, i32 0
  store ptr @.str.32, ptr %841, align 8, !tbaa !15
  %842 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %843 = getelementptr inbounds %struct.s2n_debug_info, ptr %842, i32 0, i32 0
  %844 = load ptr, ptr %843, align 8, !tbaa !15
  %845 = getelementptr inbounds i8, ptr %844, i64 21
  %846 = call ptr @strrchr(ptr noundef %845, i32 noundef 47) #15
  %847 = icmp ne ptr %846, null
  br i1 %847, label %848, label %855

848:                                              ; preds = %839
  %849 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %850 = getelementptr inbounds %struct.s2n_debug_info, ptr %849, i32 0, i32 0
  %851 = load ptr, ptr %850, align 8, !tbaa !15
  %852 = getelementptr inbounds i8, ptr %851, i64 21
  %853 = call ptr @strrchr(ptr noundef %852, i32 noundef 47) #15
  %854 = getelementptr inbounds i8, ptr %853, i64 1
  br label %860

855:                                              ; preds = %839
  %856 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %857 = getelementptr inbounds %struct.s2n_debug_info, ptr %856, i32 0, i32 0
  %858 = load ptr, ptr %857, align 8, !tbaa !15
  %859 = getelementptr inbounds i8, ptr %858, i64 21
  br label %860

860:                                              ; preds = %855, %848
  %861 = phi ptr [ %854, %848 ], [ %859, %855 ]
  %862 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  %863 = getelementptr inbounds %struct.s2n_debug_info, ptr %862, i32 0, i32 1
  store ptr %861, ptr %863, align 8, !tbaa !17
  %864 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653193, ptr %864, align 4, !tbaa !5
  %865 = call i32 @s2n_calculate_stacktrace()
  br label %866

866:                                              ; preds = %860
  br label %867

867:                                              ; preds = %866
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1801

868:                                              ; No predecessors!
  br label %869

869:                                              ; preds = %868
  br label %870

870:                                              ; preds = %869, %832
  br label %871

871:                                              ; preds = %870
  br label %872

872:                                              ; preds = %871
  br label %873

873:                                              ; preds = %872
  %874 = load ptr, ptr %12, align 8, !tbaa !9
  %875 = load ptr, ptr %26, align 8, !tbaa !9
  %876 = load i32, ptr %24, align 4, !tbaa !5
  %877 = call i32 @ReadHex(ptr noundef %874, ptr noundef %875, i32 noundef %876, ptr noundef @.str.33)
  %878 = icmp sgt i32 %877, -1
  br i1 %878, label %880, label %879

879:                                              ; preds = %873
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1801

880:                                              ; preds = %873
  br label %881

881:                                              ; preds = %880
  br label %882

882:                                              ; preds = %881
  br label %883

883:                                              ; preds = %882
  %884 = load ptr, ptr %12, align 8, !tbaa !9
  %885 = getelementptr inbounds [48 x i8], ptr %17, i64 0, i64 0
  %886 = call i32 @ReadHex(ptr noundef %884, ptr noundef %885, i32 noundef 48, ptr noundef @.str.34)
  %887 = icmp sgt i32 %886, -1
  br i1 %887, label %889, label %888

888:                                              ; preds = %883
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %1801

889:                                              ; preds = %883
  br label %890

890:                                              ; preds = %889
  br label %891

891:                                              ; preds = %890
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #12
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 24, i1 false)
  br label %892

892:                                              ; preds = %891
  %893 = load i32, ptr @test_count, align 4, !tbaa !5
  %894 = add nsw i32 %893, 1
  store i32 %894, ptr @test_count, align 4, !tbaa !5
  %895 = getelementptr inbounds [48 x i8], ptr %14, i64 0, i64 0
  %896 = call i32 @s2n_blob_init(ptr noundef %27, ptr noundef %895, i32 noundef 48)
  %897 = icmp eq i32 %896, -1
  br i1 %897, label %898, label %951

898:                                              ; preds = %892
  br label %899

899:                                              ; preds = %898
  br label %900

900:                                              ; preds = %899
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #12
  %901 = call ptr @__errno_location() #13
  %902 = load i32, ptr %901, align 4, !tbaa !5
  store i32 %902, ptr %28, align 4, !tbaa !5
  %903 = load ptr, ptr @stderr, align 8, !tbaa !9
  %904 = call i32 @s2n_print_stacktrace(ptr noundef %903)
  %905 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %906 = trunc i8 %905 to i1
  br i1 %906, label %907, label %929

907:                                              ; preds = %900
  %908 = load ptr, ptr @stderr, align 8, !tbaa !9
  %909 = call i32 @fileno(ptr noundef %908) #12
  %910 = call i32 @isatty(i32 noundef %909) #12
  %911 = icmp ne i32 %910, 0
  br i1 %911, label %912, label %929

912:                                              ; preds = %907
  %913 = load i32, ptr %28, align 4, !tbaa !5
  %914 = call ptr @__errno_location() #13
  store i32 %913, ptr %914, align 4, !tbaa !5
  %915 = load ptr, ptr @stderr, align 8, !tbaa !9
  %916 = load i32, ptr @test_count, align 4, !tbaa !5
  %917 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %918 = load i32, ptr %917, align 4, !tbaa !5
  %919 = call ptr @s2n_strerror(i32 noundef %918, ptr noundef @.str.4)
  %920 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %921 = load i32, ptr %920, align 4, !tbaa !5
  %922 = call ptr @s2n_strerror_debug(i32 noundef %921, ptr noundef @.str.4)
  %923 = call ptr @__errno_location() #13
  %924 = load i32, ptr %923, align 4, !tbaa !5
  %925 = call ptr @strerror(i32 noundef %924) #12
  %926 = call ptr @__errno_location() #13
  %927 = load i32, ptr %926, align 4, !tbaa !5
  %928 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %915, ptr noundef @.str.2, i32 noundef %916, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 100, ptr noundef %919, ptr noundef %922, ptr noundef %925, i32 noundef %927) #12
  br label %946

929:                                              ; preds = %907, %900
  %930 = load i32, ptr %28, align 4, !tbaa !5
  %931 = call ptr @__errno_location() #13
  store i32 %930, ptr %931, align 4, !tbaa !5
  %932 = load ptr, ptr @stderr, align 8, !tbaa !9
  %933 = load i32, ptr @test_count, align 4, !tbaa !5
  %934 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %935 = load i32, ptr %934, align 4, !tbaa !5
  %936 = call ptr @s2n_strerror(i32 noundef %935, ptr noundef @.str.4)
  %937 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %938 = load i32, ptr %937, align 4, !tbaa !5
  %939 = call ptr @s2n_strerror_debug(i32 noundef %938, ptr noundef @.str.4)
  %940 = call ptr @__errno_location() #13
  %941 = load i32, ptr %940, align 4, !tbaa !5
  %942 = call ptr @strerror(i32 noundef %941) #12
  %943 = call ptr @__errno_location() #13
  %944 = load i32, ptr %943, align 4, !tbaa !5
  %945 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %932, ptr noundef @.str.5, i32 noundef %933, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 100, ptr noundef %936, ptr noundef %939, ptr noundef %942, i32 noundef %944) #12
  br label %946

946:                                              ; preds = %929, %912
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #12
  br label %947

947:                                              ; preds = %946
  br label %948

948:                                              ; preds = %947
  call void @exit(i32 noundef 1) #14
  unreachable

949:                                              ; No predecessors!
  br label %950

950:                                              ; preds = %949
  br label %951

951:                                              ; preds = %950, %892
  br label %952

952:                                              ; preds = %951
  br label %953

953:                                              ; preds = %952
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #12
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 24, i1 false)
  br label %954

954:                                              ; preds = %953
  %955 = load i32, ptr @test_count, align 4, !tbaa !5
  %956 = add nsw i32 %955, 1
  store i32 %956, ptr @test_count, align 4, !tbaa !5
  %957 = load ptr, ptr %25, align 8, !tbaa !9
  %958 = load i32, ptr %23, align 4, !tbaa !5
  %959 = call i32 @s2n_blob_init(ptr noundef %29, ptr noundef %957, i32 noundef %958)
  %960 = icmp eq i32 %959, -1
  br i1 %960, label %961, label %1014

961:                                              ; preds = %954
  br label %962

962:                                              ; preds = %961
  br label %963

963:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #12
  %964 = call ptr @__errno_location() #13
  %965 = load i32, ptr %964, align 4, !tbaa !5
  store i32 %965, ptr %30, align 4, !tbaa !5
  %966 = load ptr, ptr @stderr, align 8, !tbaa !9
  %967 = call i32 @s2n_print_stacktrace(ptr noundef %966)
  %968 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %969 = trunc i8 %968 to i1
  br i1 %969, label %970, label %992

970:                                              ; preds = %963
  %971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %972 = call i32 @fileno(ptr noundef %971) #12
  %973 = call i32 @isatty(i32 noundef %972) #12
  %974 = icmp ne i32 %973, 0
  br i1 %974, label %975, label %992

975:                                              ; preds = %970
  %976 = load i32, ptr %30, align 4, !tbaa !5
  %977 = call ptr @__errno_location() #13
  store i32 %976, ptr %977, align 4, !tbaa !5
  %978 = load ptr, ptr @stderr, align 8, !tbaa !9
  %979 = load i32, ptr @test_count, align 4, !tbaa !5
  %980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %981 = load i32, ptr %980, align 4, !tbaa !5
  %982 = call ptr @s2n_strerror(i32 noundef %981, ptr noundef @.str.4)
  %983 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %984 = load i32, ptr %983, align 4, !tbaa !5
  %985 = call ptr @s2n_strerror_debug(i32 noundef %984, ptr noundef @.str.4)
  %986 = call ptr @__errno_location() #13
  %987 = load i32, ptr %986, align 4, !tbaa !5
  %988 = call ptr @strerror(i32 noundef %987) #12
  %989 = call ptr @__errno_location() #13
  %990 = load i32, ptr %989, align 4, !tbaa !5
  %991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %978, ptr noundef @.str.2, i32 noundef %979, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 102, ptr noundef %982, ptr noundef %985, ptr noundef %988, i32 noundef %990) #12
  br label %1009

992:                                              ; preds = %970, %963
  %993 = load i32, ptr %30, align 4, !tbaa !5
  %994 = call ptr @__errno_location() #13
  store i32 %993, ptr %994, align 4, !tbaa !5
  %995 = load ptr, ptr @stderr, align 8, !tbaa !9
  %996 = load i32, ptr @test_count, align 4, !tbaa !5
  %997 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %998 = load i32, ptr %997, align 4, !tbaa !5
  %999 = call ptr @s2n_strerror(i32 noundef %998, ptr noundef @.str.4)
  %1000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1001 = load i32, ptr %1000, align 4, !tbaa !5
  %1002 = call ptr @s2n_strerror_debug(i32 noundef %1001, ptr noundef @.str.4)
  %1003 = call ptr @__errno_location() #13
  %1004 = load i32, ptr %1003, align 4, !tbaa !5
  %1005 = call ptr @strerror(i32 noundef %1004) #12
  %1006 = call ptr @__errno_location() #13
  %1007 = load i32, ptr %1006, align 4, !tbaa !5
  %1008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %995, ptr noundef @.str.5, i32 noundef %996, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 102, ptr noundef %999, ptr noundef %1002, ptr noundef %1005, i32 noundef %1007) #12
  br label %1009

1009:                                             ; preds = %992, %975
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  br label %1010

1010:                                             ; preds = %1009
  br label %1011

1011:                                             ; preds = %1010
  call void @exit(i32 noundef 1) #14
  unreachable

1012:                                             ; No predecessors!
  br label %1013

1013:                                             ; preds = %1012
  br label %1014

1014:                                             ; preds = %1013, %954
  br label %1015

1015:                                             ; preds = %1014
  br label %1016

1016:                                             ; preds = %1015
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #12
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 24, i1 false)
  br label %1017

1017:                                             ; preds = %1016
  %1018 = load i32, ptr @test_count, align 4, !tbaa !5
  %1019 = add nsw i32 %1018, 1
  store i32 %1019, ptr @test_count, align 4, !tbaa !5
  %1020 = getelementptr inbounds %struct.s2n_blob, ptr %27, i32 0, i32 1
  %1021 = load i32, ptr %1020, align 8, !tbaa !51
  %1022 = getelementptr inbounds %struct.s2n_blob, ptr %29, i32 0, i32 1
  %1023 = load i32, ptr %1022, align 8, !tbaa !51
  %1024 = add i32 %1021, %1023
  %1025 = call i32 @s2n_alloc(ptr noundef %31, i32 noundef %1024)
  %1026 = icmp eq i32 %1025, -1
  br i1 %1026, label %1027, label %1080

1027:                                             ; preds = %1017
  br label %1028

1028:                                             ; preds = %1027
  br label %1029

1029:                                             ; preds = %1028
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #12
  %1030 = call ptr @__errno_location() #13
  %1031 = load i32, ptr %1030, align 4, !tbaa !5
  store i32 %1031, ptr %32, align 4, !tbaa !5
  %1032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1033 = call i32 @s2n_print_stacktrace(ptr noundef %1032)
  %1034 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1035 = trunc i8 %1034 to i1
  br i1 %1035, label %1036, label %1058

1036:                                             ; preds = %1029
  %1037 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1038 = call i32 @fileno(ptr noundef %1037) #12
  %1039 = call i32 @isatty(i32 noundef %1038) #12
  %1040 = icmp ne i32 %1039, 0
  br i1 %1040, label %1041, label %1058

1041:                                             ; preds = %1036
  %1042 = load i32, ptr %32, align 4, !tbaa !5
  %1043 = call ptr @__errno_location() #13
  store i32 %1042, ptr %1043, align 4, !tbaa !5
  %1044 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1045 = load i32, ptr @test_count, align 4, !tbaa !5
  %1046 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1047 = load i32, ptr %1046, align 4, !tbaa !5
  %1048 = call ptr @s2n_strerror(i32 noundef %1047, ptr noundef @.str.4)
  %1049 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1050 = load i32, ptr %1049, align 4, !tbaa !5
  %1051 = call ptr @s2n_strerror_debug(i32 noundef %1050, ptr noundef @.str.4)
  %1052 = call ptr @__errno_location() #13
  %1053 = load i32, ptr %1052, align 4, !tbaa !5
  %1054 = call ptr @strerror(i32 noundef %1053) #12
  %1055 = call ptr @__errno_location() #13
  %1056 = load i32, ptr %1055, align 4, !tbaa !5
  %1057 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1044, ptr noundef @.str.2, i32 noundef %1045, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 106, ptr noundef %1048, ptr noundef %1051, ptr noundef %1054, i32 noundef %1056) #12
  br label %1075

1058:                                             ; preds = %1036, %1029
  %1059 = load i32, ptr %32, align 4, !tbaa !5
  %1060 = call ptr @__errno_location() #13
  store i32 %1059, ptr %1060, align 4, !tbaa !5
  %1061 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1062 = load i32, ptr @test_count, align 4, !tbaa !5
  %1063 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1064 = load i32, ptr %1063, align 4, !tbaa !5
  %1065 = call ptr @s2n_strerror(i32 noundef %1064, ptr noundef @.str.4)
  %1066 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1067 = load i32, ptr %1066, align 4, !tbaa !5
  %1068 = call ptr @s2n_strerror_debug(i32 noundef %1067, ptr noundef @.str.4)
  %1069 = call ptr @__errno_location() #13
  %1070 = load i32, ptr %1069, align 4, !tbaa !5
  %1071 = call ptr @strerror(i32 noundef %1070) #12
  %1072 = call ptr @__errno_location() #13
  %1073 = load i32, ptr %1072, align 4, !tbaa !5
  %1074 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1061, ptr noundef @.str.5, i32 noundef %1062, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 106, ptr noundef %1065, ptr noundef %1068, ptr noundef %1071, i32 noundef %1073) #12
  br label %1075

1075:                                             ; preds = %1058, %1041
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #12
  br label %1076

1076:                                             ; preds = %1075
  br label %1077

1077:                                             ; preds = %1076
  call void @exit(i32 noundef 1) #14
  unreachable

1078:                                             ; No predecessors!
  br label %1079

1079:                                             ; preds = %1078
  br label %1080

1080:                                             ; preds = %1079, %1017
  br label %1081

1081:                                             ; preds = %1080
  br label %1082

1082:                                             ; preds = %1081
  call void @llvm.lifetime.start.p0(i64 40, ptr %33) #12
  call void @llvm.memset.p0.i64(ptr align 8 %33, i8 0, i64 40, i1 false)
  br label %1083

1083:                                             ; preds = %1082
  %1084 = load i32, ptr @test_count, align 4, !tbaa !5
  %1085 = add nsw i32 %1084, 1
  store i32 %1085, ptr @test_count, align 4, !tbaa !5
  %1086 = call i32 @s2n_stuffer_init(ptr noundef %33, ptr noundef %31)
  %1087 = icmp eq i32 %1086, -1
  br i1 %1087, label %1088, label %1141

1088:                                             ; preds = %1083
  br label %1089

1089:                                             ; preds = %1088
  br label %1090

1090:                                             ; preds = %1089
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #12
  %1091 = call ptr @__errno_location() #13
  %1092 = load i32, ptr %1091, align 4, !tbaa !5
  store i32 %1092, ptr %34, align 4, !tbaa !5
  %1093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1094 = call i32 @s2n_print_stacktrace(ptr noundef %1093)
  %1095 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1096 = trunc i8 %1095 to i1
  br i1 %1096, label %1097, label %1119

1097:                                             ; preds = %1090
  %1098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1099 = call i32 @fileno(ptr noundef %1098) #12
  %1100 = call i32 @isatty(i32 noundef %1099) #12
  %1101 = icmp ne i32 %1100, 0
  br i1 %1101, label %1102, label %1119

1102:                                             ; preds = %1097
  %1103 = load i32, ptr %34, align 4, !tbaa !5
  %1104 = call ptr @__errno_location() #13
  store i32 %1103, ptr %1104, align 4, !tbaa !5
  %1105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1106 = load i32, ptr @test_count, align 4, !tbaa !5
  %1107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1108 = load i32, ptr %1107, align 4, !tbaa !5
  %1109 = call ptr @s2n_strerror(i32 noundef %1108, ptr noundef @.str.4)
  %1110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1111 = load i32, ptr %1110, align 4, !tbaa !5
  %1112 = call ptr @s2n_strerror_debug(i32 noundef %1111, ptr noundef @.str.4)
  %1113 = call ptr @__errno_location() #13
  %1114 = load i32, ptr %1113, align 4, !tbaa !5
  %1115 = call ptr @strerror(i32 noundef %1114) #12
  %1116 = call ptr @__errno_location() #13
  %1117 = load i32, ptr %1116, align 4, !tbaa !5
  %1118 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1105, ptr noundef @.str.2, i32 noundef %1106, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 108, ptr noundef %1109, ptr noundef %1112, ptr noundef %1115, i32 noundef %1117) #12
  br label %1136

1119:                                             ; preds = %1097, %1090
  %1120 = load i32, ptr %34, align 4, !tbaa !5
  %1121 = call ptr @__errno_location() #13
  store i32 %1120, ptr %1121, align 4, !tbaa !5
  %1122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1123 = load i32, ptr @test_count, align 4, !tbaa !5
  %1124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1125 = load i32, ptr %1124, align 4, !tbaa !5
  %1126 = call ptr @s2n_strerror(i32 noundef %1125, ptr noundef @.str.4)
  %1127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1128 = load i32, ptr %1127, align 4, !tbaa !5
  %1129 = call ptr @s2n_strerror_debug(i32 noundef %1128, ptr noundef @.str.4)
  %1130 = call ptr @__errno_location() #13
  %1131 = load i32, ptr %1130, align 4, !tbaa !5
  %1132 = call ptr @strerror(i32 noundef %1131) #12
  %1133 = call ptr @__errno_location() #13
  %1134 = load i32, ptr %1133, align 4, !tbaa !5
  %1135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1122, ptr noundef @.str.5, i32 noundef %1123, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 108, ptr noundef %1126, ptr noundef %1129, ptr noundef %1132, i32 noundef %1134) #12
  br label %1136

1136:                                             ; preds = %1119, %1102
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  br label %1137

1137:                                             ; preds = %1136
  br label %1138

1138:                                             ; preds = %1137
  call void @exit(i32 noundef 1) #14
  unreachable

1139:                                             ; No predecessors!
  br label %1140

1140:                                             ; preds = %1139
  br label %1141

1141:                                             ; preds = %1140, %1083
  br label %1142

1142:                                             ; preds = %1141
  br label %1143

1143:                                             ; preds = %1142
  br label %1144

1144:                                             ; preds = %1143
  %1145 = load i32, ptr @test_count, align 4, !tbaa !5
  %1146 = add nsw i32 %1145, 1
  store i32 %1146, ptr @test_count, align 4, !tbaa !5
  %1147 = call i32 @s2n_stuffer_write(ptr noundef %33, ptr noundef %27)
  %1148 = icmp eq i32 %1147, -1
  br i1 %1148, label %1149, label %1202

1149:                                             ; preds = %1144
  br label %1150

1150:                                             ; preds = %1149
  br label %1151

1151:                                             ; preds = %1150
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #12
  %1152 = call ptr @__errno_location() #13
  %1153 = load i32, ptr %1152, align 4, !tbaa !5
  store i32 %1153, ptr %35, align 4, !tbaa !5
  %1154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1155 = call i32 @s2n_print_stacktrace(ptr noundef %1154)
  %1156 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1157 = trunc i8 %1156 to i1
  br i1 %1157, label %1158, label %1180

1158:                                             ; preds = %1151
  %1159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1160 = call i32 @fileno(ptr noundef %1159) #12
  %1161 = call i32 @isatty(i32 noundef %1160) #12
  %1162 = icmp ne i32 %1161, 0
  br i1 %1162, label %1163, label %1180

1163:                                             ; preds = %1158
  %1164 = load i32, ptr %35, align 4, !tbaa !5
  %1165 = call ptr @__errno_location() #13
  store i32 %1164, ptr %1165, align 4, !tbaa !5
  %1166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1167 = load i32, ptr @test_count, align 4, !tbaa !5
  %1168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1169 = load i32, ptr %1168, align 4, !tbaa !5
  %1170 = call ptr @s2n_strerror(i32 noundef %1169, ptr noundef @.str.4)
  %1171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1172 = load i32, ptr %1171, align 4, !tbaa !5
  %1173 = call ptr @s2n_strerror_debug(i32 noundef %1172, ptr noundef @.str.4)
  %1174 = call ptr @__errno_location() #13
  %1175 = load i32, ptr %1174, align 4, !tbaa !5
  %1176 = call ptr @strerror(i32 noundef %1175) #12
  %1177 = call ptr @__errno_location() #13
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  %1179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1166, ptr noundef @.str.2, i32 noundef %1167, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 109, ptr noundef %1170, ptr noundef %1173, ptr noundef %1176, i32 noundef %1178) #12
  br label %1197

1180:                                             ; preds = %1158, %1151
  %1181 = load i32, ptr %35, align 4, !tbaa !5
  %1182 = call ptr @__errno_location() #13
  store i32 %1181, ptr %1182, align 4, !tbaa !5
  %1183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1184 = load i32, ptr @test_count, align 4, !tbaa !5
  %1185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1186 = load i32, ptr %1185, align 4, !tbaa !5
  %1187 = call ptr @s2n_strerror(i32 noundef %1186, ptr noundef @.str.4)
  %1188 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1189 = load i32, ptr %1188, align 4, !tbaa !5
  %1190 = call ptr @s2n_strerror_debug(i32 noundef %1189, ptr noundef @.str.4)
  %1191 = call ptr @__errno_location() #13
  %1192 = load i32, ptr %1191, align 4, !tbaa !5
  %1193 = call ptr @strerror(i32 noundef %1192) #12
  %1194 = call ptr @__errno_location() #13
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  %1196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1183, ptr noundef @.str.5, i32 noundef %1184, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 109, ptr noundef %1187, ptr noundef %1190, ptr noundef %1193, i32 noundef %1195) #12
  br label %1197

1197:                                             ; preds = %1180, %1163
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  br label %1198

1198:                                             ; preds = %1197
  br label %1199

1199:                                             ; preds = %1198
  call void @exit(i32 noundef 1) #14
  unreachable

1200:                                             ; No predecessors!
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201, %1144
  br label %1203

1203:                                             ; preds = %1202
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204
  %1206 = load i32, ptr @test_count, align 4, !tbaa !5
  %1207 = add nsw i32 %1206, 1
  store i32 %1207, ptr @test_count, align 4, !tbaa !5
  %1208 = call i32 @s2n_stuffer_write(ptr noundef %33, ptr noundef %29)
  %1209 = icmp eq i32 %1208, -1
  br i1 %1209, label %1210, label %1263

1210:                                             ; preds = %1205
  br label %1211

1211:                                             ; preds = %1210
  br label %1212

1212:                                             ; preds = %1211
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #12
  %1213 = call ptr @__errno_location() #13
  %1214 = load i32, ptr %1213, align 4, !tbaa !5
  store i32 %1214, ptr %36, align 4, !tbaa !5
  %1215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1216 = call i32 @s2n_print_stacktrace(ptr noundef %1215)
  %1217 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1218 = trunc i8 %1217 to i1
  br i1 %1218, label %1219, label %1241

1219:                                             ; preds = %1212
  %1220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1221 = call i32 @fileno(ptr noundef %1220) #12
  %1222 = call i32 @isatty(i32 noundef %1221) #12
  %1223 = icmp ne i32 %1222, 0
  br i1 %1223, label %1224, label %1241

1224:                                             ; preds = %1219
  %1225 = load i32, ptr %36, align 4, !tbaa !5
  %1226 = call ptr @__errno_location() #13
  store i32 %1225, ptr %1226, align 4, !tbaa !5
  %1227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1228 = load i32, ptr @test_count, align 4, !tbaa !5
  %1229 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1230 = load i32, ptr %1229, align 4, !tbaa !5
  %1231 = call ptr @s2n_strerror(i32 noundef %1230, ptr noundef @.str.4)
  %1232 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1233 = load i32, ptr %1232, align 4, !tbaa !5
  %1234 = call ptr @s2n_strerror_debug(i32 noundef %1233, ptr noundef @.str.4)
  %1235 = call ptr @__errno_location() #13
  %1236 = load i32, ptr %1235, align 4, !tbaa !5
  %1237 = call ptr @strerror(i32 noundef %1236) #12
  %1238 = call ptr @__errno_location() #13
  %1239 = load i32, ptr %1238, align 4, !tbaa !5
  %1240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1227, ptr noundef @.str.2, i32 noundef %1228, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 110, ptr noundef %1231, ptr noundef %1234, ptr noundef %1237, i32 noundef %1239) #12
  br label %1258

1241:                                             ; preds = %1219, %1212
  %1242 = load i32, ptr %36, align 4, !tbaa !5
  %1243 = call ptr @__errno_location() #13
  store i32 %1242, ptr %1243, align 4, !tbaa !5
  %1244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1245 = load i32, ptr @test_count, align 4, !tbaa !5
  %1246 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1247 = load i32, ptr %1246, align 4, !tbaa !5
  %1248 = call ptr @s2n_strerror(i32 noundef %1247, ptr noundef @.str.4)
  %1249 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1250 = load i32, ptr %1249, align 4, !tbaa !5
  %1251 = call ptr @s2n_strerror_debug(i32 noundef %1250, ptr noundef @.str.4)
  %1252 = call ptr @__errno_location() #13
  %1253 = load i32, ptr %1252, align 4, !tbaa !5
  %1254 = call ptr @strerror(i32 noundef %1253) #12
  %1255 = call ptr @__errno_location() #13
  %1256 = load i32, ptr %1255, align 4, !tbaa !5
  %1257 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1244, ptr noundef @.str.5, i32 noundef %1245, ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 110, ptr noundef %1248, ptr noundef %1251, ptr noundef %1254, i32 noundef %1256) #12
  br label %1258

1258:                                             ; preds = %1241, %1224
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #12
  br label %1259

1259:                                             ; preds = %1258
  br label %1260

1260:                                             ; preds = %1259
  call void @exit(i32 noundef 1) #14
  unreachable

1261:                                             ; No predecessors!
  br label %1262

1262:                                             ; preds = %1261
  br label %1263

1263:                                             ; preds = %1262, %1205
  br label %1264

1264:                                             ; preds = %1263
  br label %1265

1265:                                             ; preds = %1264
  br label %1266

1266:                                             ; preds = %1265
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #12
  store i32 32, ptr %37, align 4, !tbaa !5
  %1267 = load i32, ptr %37, align 4, !tbaa !5
  %1268 = icmp ne i32 %1267, 0
  br i1 %1268, label %1269, label %1332

1269:                                             ; preds = %1266
  %1270 = load ptr, ptr %21, align 8, !tbaa !9
  %1271 = getelementptr inbounds %struct.s2n_connection, ptr %1270, i32 0, i32 32
  %1272 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %1271, i32 0, i32 12
  %1273 = getelementptr inbounds [32 x i8], ptr %1272, i64 0, i64 0
  %1274 = getelementptr inbounds [32 x i8], ptr %15, i64 0, i64 0
  %1275 = load i32, ptr %37, align 4, !tbaa !5
  %1276 = sext i32 %1275 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 2 %1273, ptr align 16 %1274, i64 %1276, i1 false)
  %1277 = icmp eq ptr %1273, null
  br i1 %1277, label %1278, label %1331

1278:                                             ; preds = %1269
  br label %1279

1279:                                             ; preds = %1278
  br label %1280

1280:                                             ; preds = %1279
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #12
  %1281 = call ptr @__errno_location() #13
  %1282 = load i32, ptr %1281, align 4, !tbaa !5
  store i32 %1282, ptr %38, align 4, !tbaa !5
  %1283 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1284 = call i32 @s2n_print_stacktrace(ptr noundef %1283)
  %1285 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1286 = trunc i8 %1285 to i1
  br i1 %1286, label %1287, label %1309

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

1292:                                             ; preds = %1287
  %1293 = load i32, ptr %38, align 4, !tbaa !5
  %1294 = call ptr @__errno_location() #13
  store i32 %1293, ptr %1294, align 4, !tbaa !5
  %1295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1296 = load i32, ptr @test_count, align 4, !tbaa !5
  %1297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1298 = load i32, ptr %1297, align 4, !tbaa !5
  %1299 = call ptr @s2n_strerror(i32 noundef %1298, ptr noundef @.str.4)
  %1300 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1301 = load i32, ptr %1300, align 4, !tbaa !5
  %1302 = call ptr @s2n_strerror_debug(i32 noundef %1301, ptr noundef @.str.4)
  %1303 = call ptr @__errno_location() #13
  %1304 = load i32, ptr %1303, align 4, !tbaa !5
  %1305 = call ptr @strerror(i32 noundef %1304) #12
  %1306 = call ptr @__errno_location() #13
  %1307 = load i32, ptr %1306, align 4, !tbaa !5
  %1308 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1295, ptr noundef @.str.2, i32 noundef %1296, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 112, ptr noundef %1299, ptr noundef %1302, ptr noundef %1305, i32 noundef %1307) #12
  br label %1326

1309:                                             ; preds = %1287, %1280
  %1310 = load i32, ptr %38, align 4, !tbaa !5
  %1311 = call ptr @__errno_location() #13
  store i32 %1310, ptr %1311, align 4, !tbaa !5
  %1312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1313 = load i32, ptr @test_count, align 4, !tbaa !5
  %1314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1315 = load i32, ptr %1314, align 4, !tbaa !5
  %1316 = call ptr @s2n_strerror(i32 noundef %1315, ptr noundef @.str.4)
  %1317 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1318 = load i32, ptr %1317, align 4, !tbaa !5
  %1319 = call ptr @s2n_strerror_debug(i32 noundef %1318, ptr noundef @.str.4)
  %1320 = call ptr @__errno_location() #13
  %1321 = load i32, ptr %1320, align 4, !tbaa !5
  %1322 = call ptr @strerror(i32 noundef %1321) #12
  %1323 = call ptr @__errno_location() #13
  %1324 = load i32, ptr %1323, align 4, !tbaa !5
  %1325 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1312, ptr noundef @.str.5, i32 noundef %1313, ptr noundef @.str.41, ptr noundef @.str.1, i32 noundef 112, ptr noundef %1316, ptr noundef %1319, ptr noundef %1322, i32 noundef %1324) #12
  br label %1326

1326:                                             ; preds = %1309, %1292
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  br label %1327

1327:                                             ; preds = %1326
  br label %1328

1328:                                             ; preds = %1327
  call void @exit(i32 noundef 1) #14
  unreachable

1329:                                             ; No predecessors!
  br label %1330

1330:                                             ; preds = %1329
  br label %1331

1331:                                             ; preds = %1330, %1269
  br label %1332

1332:                                             ; preds = %1331, %1266
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #12
  br label %1333

1333:                                             ; preds = %1332
  br label %1334

1334:                                             ; preds = %1333
  br label %1335

1335:                                             ; preds = %1334
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #12
  store i32 32, ptr %39, align 4, !tbaa !5
  %1336 = load i32, ptr %39, align 4, !tbaa !5
  %1337 = icmp ne i32 %1336, 0
  br i1 %1337, label %1338, label %1401

1338:                                             ; preds = %1335
  %1339 = load ptr, ptr %21, align 8, !tbaa !9
  %1340 = getelementptr inbounds %struct.s2n_connection, ptr %1339, i32 0, i32 32
  %1341 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %1340, i32 0, i32 13
  %1342 = getelementptr inbounds [32 x i8], ptr %1341, i64 0, i64 0
  %1343 = getelementptr inbounds [32 x i8], ptr %16, i64 0, i64 0
  %1344 = load i32, ptr %39, align 4, !tbaa !5
  %1345 = sext i32 %1344 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 2 %1342, ptr align 16 %1343, i64 %1345, i1 false)
  %1346 = icmp eq ptr %1342, null
  br i1 %1346, label %1347, label %1400

1347:                                             ; preds = %1338
  br label %1348

1348:                                             ; preds = %1347
  br label %1349

1349:                                             ; preds = %1348
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #12
  %1350 = call ptr @__errno_location() #13
  %1351 = load i32, ptr %1350, align 4, !tbaa !5
  store i32 %1351, ptr %40, align 4, !tbaa !5
  %1352 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1353 = call i32 @s2n_print_stacktrace(ptr noundef %1352)
  %1354 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1355 = trunc i8 %1354 to i1
  br i1 %1355, label %1356, label %1378

1356:                                             ; preds = %1349
  %1357 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1358 = call i32 @fileno(ptr noundef %1357) #12
  %1359 = call i32 @isatty(i32 noundef %1358) #12
  %1360 = icmp ne i32 %1359, 0
  br i1 %1360, label %1361, label %1378

1361:                                             ; preds = %1356
  %1362 = load i32, ptr %40, align 4, !tbaa !5
  %1363 = call ptr @__errno_location() #13
  store i32 %1362, ptr %1363, align 4, !tbaa !5
  %1364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1365 = load i32, ptr @test_count, align 4, !tbaa !5
  %1366 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1367 = load i32, ptr %1366, align 4, !tbaa !5
  %1368 = call ptr @s2n_strerror(i32 noundef %1367, ptr noundef @.str.4)
  %1369 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1370 = load i32, ptr %1369, align 4, !tbaa !5
  %1371 = call ptr @s2n_strerror_debug(i32 noundef %1370, ptr noundef @.str.4)
  %1372 = call ptr @__errno_location() #13
  %1373 = load i32, ptr %1372, align 4, !tbaa !5
  %1374 = call ptr @strerror(i32 noundef %1373) #12
  %1375 = call ptr @__errno_location() #13
  %1376 = load i32, ptr %1375, align 4, !tbaa !5
  %1377 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1364, ptr noundef @.str.2, i32 noundef %1365, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1368, ptr noundef %1371, ptr noundef %1374, i32 noundef %1376) #12
  br label %1395

1378:                                             ; preds = %1356, %1349
  %1379 = load i32, ptr %40, align 4, !tbaa !5
  %1380 = call ptr @__errno_location() #13
  store i32 %1379, ptr %1380, align 4, !tbaa !5
  %1381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1382 = load i32, ptr @test_count, align 4, !tbaa !5
  %1383 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1384 = load i32, ptr %1383, align 4, !tbaa !5
  %1385 = call ptr @s2n_strerror(i32 noundef %1384, ptr noundef @.str.4)
  %1386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1387 = load i32, ptr %1386, align 4, !tbaa !5
  %1388 = call ptr @s2n_strerror_debug(i32 noundef %1387, ptr noundef @.str.4)
  %1389 = call ptr @__errno_location() #13
  %1390 = load i32, ptr %1389, align 4, !tbaa !5
  %1391 = call ptr @strerror(i32 noundef %1390) #12
  %1392 = call ptr @__errno_location() #13
  %1393 = load i32, ptr %1392, align 4, !tbaa !5
  %1394 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1381, ptr noundef @.str.5, i32 noundef %1382, ptr noundef @.str.42, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1385, ptr noundef %1388, ptr noundef %1391, i32 noundef %1393) #12
  br label %1395

1395:                                             ; preds = %1378, %1361
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #12
  br label %1396

1396:                                             ; preds = %1395
  br label %1397

1397:                                             ; preds = %1396
  call void @exit(i32 noundef 1) #14
  unreachable

1398:                                             ; No predecessors!
  br label %1399

1399:                                             ; preds = %1398
  br label %1400

1400:                                             ; preds = %1399, %1338
  br label %1401

1401:                                             ; preds = %1400, %1335
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  br label %1402

1402:                                             ; preds = %1401
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

1404:                                             ; preds = %1403
  %1405 = load i32, ptr @test_count, align 4, !tbaa !5
  %1406 = add nsw i32 %1405, 1
  store i32 %1406, ptr @test_count, align 4, !tbaa !5
  %1407 = load ptr, ptr %21, align 8, !tbaa !9
  %1408 = getelementptr inbounds %struct.s2n_connection, ptr %1407, i32 0, i32 31
  %1409 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1408, i32 0, i32 8
  %1410 = load i32, ptr %24, align 4, !tbaa !5
  %1411 = call i32 @s2n_alloc(ptr noundef %1409, i32 noundef %1410)
  %1412 = icmp eq i32 %1411, -1
  br i1 %1412, label %1413, label %1466

1413:                                             ; preds = %1404
  br label %1414

1414:                                             ; preds = %1413
  br label %1415

1415:                                             ; preds = %1414
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #12
  %1416 = call ptr @__errno_location() #13
  %1417 = load i32, ptr %1416, align 4, !tbaa !5
  store i32 %1417, ptr %41, align 4, !tbaa !5
  %1418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1419 = call i32 @s2n_print_stacktrace(ptr noundef %1418)
  %1420 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1421 = trunc i8 %1420 to i1
  br i1 %1421, label %1422, label %1444

1422:                                             ; preds = %1415
  %1423 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1424 = call i32 @fileno(ptr noundef %1423) #12
  %1425 = call i32 @isatty(i32 noundef %1424) #12
  %1426 = icmp ne i32 %1425, 0
  br i1 %1426, label %1427, label %1444

1427:                                             ; preds = %1422
  %1428 = load i32, ptr %41, align 4, !tbaa !5
  %1429 = call ptr @__errno_location() #13
  store i32 %1428, ptr %1429, align 4, !tbaa !5
  %1430 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1431 = load i32, ptr @test_count, align 4, !tbaa !5
  %1432 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1433 = load i32, ptr %1432, align 4, !tbaa !5
  %1434 = call ptr @s2n_strerror(i32 noundef %1433, ptr noundef @.str.4)
  %1435 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1436 = load i32, ptr %1435, align 4, !tbaa !5
  %1437 = call ptr @s2n_strerror_debug(i32 noundef %1436, ptr noundef @.str.4)
  %1438 = call ptr @__errno_location() #13
  %1439 = load i32, ptr %1438, align 4, !tbaa !5
  %1440 = call ptr @strerror(i32 noundef %1439) #12
  %1441 = call ptr @__errno_location() #13
  %1442 = load i32, ptr %1441, align 4, !tbaa !5
  %1443 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1430, ptr noundef @.str.2, i32 noundef %1431, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 115, ptr noundef %1434, ptr noundef %1437, ptr noundef %1440, i32 noundef %1442) #12
  br label %1461

1444:                                             ; preds = %1422, %1415
  %1445 = load i32, ptr %41, align 4, !tbaa !5
  %1446 = call ptr @__errno_location() #13
  store i32 %1445, ptr %1446, align 4, !tbaa !5
  %1447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1448 = load i32, ptr @test_count, align 4, !tbaa !5
  %1449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1450 = load i32, ptr %1449, align 4, !tbaa !5
  %1451 = call ptr @s2n_strerror(i32 noundef %1450, ptr noundef @.str.4)
  %1452 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1453 = load i32, ptr %1452, align 4, !tbaa !5
  %1454 = call ptr @s2n_strerror_debug(i32 noundef %1453, ptr noundef @.str.4)
  %1455 = call ptr @__errno_location() #13
  %1456 = load i32, ptr %1455, align 4, !tbaa !5
  %1457 = call ptr @strerror(i32 noundef %1456) #12
  %1458 = call ptr @__errno_location() #13
  %1459 = load i32, ptr %1458, align 4, !tbaa !5
  %1460 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1447, ptr noundef @.str.5, i32 noundef %1448, ptr noundef @.str.43, ptr noundef @.str.1, i32 noundef 115, ptr noundef %1451, ptr noundef %1454, ptr noundef %1457, i32 noundef %1459) #12
  br label %1461

1461:                                             ; preds = %1444, %1427
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  br label %1462

1462:                                             ; preds = %1461
  br label %1463

1463:                                             ; preds = %1462
  call void @exit(i32 noundef 1) #14
  unreachable

1464:                                             ; No predecessors!
  br label %1465

1465:                                             ; preds = %1464
  br label %1466

1466:                                             ; preds = %1465, %1404
  br label %1467

1467:                                             ; preds = %1466
  br label %1468

1468:                                             ; preds = %1467
  br label %1469

1469:                                             ; preds = %1468
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #12
  %1470 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %1470, ptr %42, align 4, !tbaa !5
  %1471 = load i32, ptr %42, align 4, !tbaa !5
  %1472 = icmp ne i32 %1471, 0
  br i1 %1472, label %1473, label %1537

1473:                                             ; preds = %1469
  %1474 = load ptr, ptr %21, align 8, !tbaa !9
  %1475 = getelementptr inbounds %struct.s2n_connection, ptr %1474, i32 0, i32 31
  %1476 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1475, i32 0, i32 8
  %1477 = getelementptr inbounds %struct.s2n_blob, ptr %1476, i32 0, i32 0
  %1478 = load ptr, ptr %1477, align 8, !tbaa !52
  %1479 = load ptr, ptr %26, align 8, !tbaa !9
  %1480 = load i32, ptr %42, align 4, !tbaa !5
  %1481 = zext i32 %1480 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %1478, ptr align 1 %1479, i64 %1481, i1 false)
  %1482 = icmp eq ptr %1478, null
  br i1 %1482, label %1483, label %1536

1483:                                             ; preds = %1473
  br label %1484

1484:                                             ; preds = %1483
  br label %1485

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

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

1497:                                             ; preds = %1492
  %1498 = load i32, ptr %43, align 4, !tbaa !5
  %1499 = call ptr @__errno_location() #13
  store i32 %1498, ptr %1499, align 4, !tbaa !5
  %1500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1501 = load i32, ptr @test_count, align 4, !tbaa !5
  %1502 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1503 = load i32, ptr %1502, align 4, !tbaa !5
  %1504 = call ptr @s2n_strerror(i32 noundef %1503, ptr noundef @.str.4)
  %1505 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1506 = load i32, ptr %1505, align 4, !tbaa !5
  %1507 = call ptr @s2n_strerror_debug(i32 noundef %1506, ptr noundef @.str.4)
  %1508 = call ptr @__errno_location() #13
  %1509 = load i32, ptr %1508, align 4, !tbaa !5
  %1510 = call ptr @strerror(i32 noundef %1509) #12
  %1511 = call ptr @__errno_location() #13
  %1512 = load i32, ptr %1511, align 4, !tbaa !5
  %1513 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1500, ptr noundef @.str.2, i32 noundef %1501, ptr noundef @.str.44, ptr noundef @.str.1, i32 noundef 117, ptr noundef %1504, ptr noundef %1507, ptr noundef %1510, i32 noundef %1512) #12
  br label %1531

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

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

1532:                                             ; preds = %1531
  br label %1533

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

1534:                                             ; No predecessors!
  br label %1535

1535:                                             ; preds = %1534
  br label %1536

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

1537:                                             ; preds = %1536, %1469
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #12
  br label %1538

1538:                                             ; preds = %1537
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

1540:                                             ; preds = %1539
  %1541 = load i32, ptr @test_count, align 4, !tbaa !5
  %1542 = add nsw i32 %1541, 1
  store i32 %1542, ptr @test_count, align 4, !tbaa !5
  %1543 = load ptr, ptr %21, align 8, !tbaa !9
  %1544 = call i32 @s2n_prf_hybrid_master_secret(ptr noundef %1543, ptr noundef %31)
  %1545 = icmp eq i32 %1544, -1
  br i1 %1545, label %1546, label %1599

1546:                                             ; preds = %1540
  br label %1547

1547:                                             ; preds = %1546
  br label %1548

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

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

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

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

1594:                                             ; preds = %1577, %1560
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  br label %1595

1595:                                             ; preds = %1594
  br label %1596

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

1597:                                             ; No predecessors!
  br label %1598

1598:                                             ; preds = %1597
  br label %1599

1599:                                             ; preds = %1598, %1540
  br label %1600

1600:                                             ; preds = %1599
  br label %1601

1601:                                             ; preds = %1600
  br label %1602

1602:                                             ; preds = %1601
  br label %1603

1603:                                             ; preds = %1602
  %1604 = load i32, ptr @test_count, align 4, !tbaa !5
  %1605 = add nsw i32 %1604, 1
  store i32 %1605, ptr @test_count, align 4, !tbaa !5
  %1606 = getelementptr inbounds [48 x i8], ptr %17, i64 0, i64 0
  %1607 = load ptr, ptr %21, align 8, !tbaa !9
  %1608 = getelementptr inbounds %struct.s2n_connection, ptr %1607, i32 0, i32 28
  %1609 = getelementptr inbounds %struct.s2n_secrets, ptr %1608, i32 0, i32 0
  %1610 = getelementptr inbounds %struct.s2n_tls12_secrets, ptr %1609, i32 0, i32 1
  %1611 = getelementptr inbounds [48 x i8], ptr %1610, i64 0, i64 0
  %1612 = call i32 @memcmp(ptr noundef %1606, ptr noundef %1611, i64 noundef 48) #15
  %1613 = icmp eq i32 %1612, 0
  br i1 %1613, label %1667, label %1614

1614:                                             ; preds = %1603
  br label %1615

1615:                                             ; preds = %1614
  br label %1616

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

1623:                                             ; preds = %1616
  %1624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1625 = call i32 @fileno(ptr noundef %1624) #12
  %1626 = call i32 @isatty(i32 noundef %1625) #12
  %1627 = icmp ne i32 %1626, 0
  br i1 %1627, label %1628, label %1645

1628:                                             ; preds = %1623
  %1629 = load i32, ptr %45, align 4, !tbaa !5
  %1630 = call ptr @__errno_location() #13
  store i32 %1629, ptr %1630, align 4, !tbaa !5
  %1631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1632 = load i32, ptr @test_count, align 4, !tbaa !5
  %1633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1634 = load i32, ptr %1633, align 4, !tbaa !5
  %1635 = call ptr @s2n_strerror(i32 noundef %1634, ptr noundef @.str.4)
  %1636 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1637 = load i32, ptr %1636, align 4, !tbaa !5
  %1638 = call ptr @s2n_strerror_debug(i32 noundef %1637, ptr noundef @.str.4)
  %1639 = call ptr @__errno_location() #13
  %1640 = load i32, ptr %1639, align 4, !tbaa !5
  %1641 = call ptr @strerror(i32 noundef %1640) #12
  %1642 = call ptr @__errno_location() #13
  %1643 = load i32, ptr %1642, align 4, !tbaa !5
  %1644 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1631, ptr noundef @.str.2, i32 noundef %1632, ptr noundef @.str.46, ptr noundef @.str.1, i32 noundef 120, ptr noundef %1635, ptr noundef %1638, ptr noundef %1641, i32 noundef %1643) #12
  br label %1662

1645:                                             ; preds = %1623, %1616
  %1646 = load i32, ptr %45, align 4, !tbaa !5
  %1647 = call ptr @__errno_location() #13
  store i32 %1646, ptr %1647, align 4, !tbaa !5
  %1648 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1649 = load i32, ptr @test_count, align 4, !tbaa !5
  %1650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1651 = load i32, ptr %1650, align 4, !tbaa !5
  %1652 = call ptr @s2n_strerror(i32 noundef %1651, ptr noundef @.str.4)
  %1653 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1654 = load i32, ptr %1653, align 4, !tbaa !5
  %1655 = call ptr @s2n_strerror_debug(i32 noundef %1654, ptr noundef @.str.4)
  %1656 = call ptr @__errno_location() #13
  %1657 = load i32, ptr %1656, align 4, !tbaa !5
  %1658 = call ptr @strerror(i32 noundef %1657) #12
  %1659 = call ptr @__errno_location() #13
  %1660 = load i32, ptr %1659, align 4, !tbaa !5
  %1661 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1648, ptr noundef @.str.5, i32 noundef %1649, ptr noundef @.str.46, ptr noundef @.str.1, i32 noundef 120, ptr noundef %1652, ptr noundef %1655, ptr noundef %1658, i32 noundef %1660) #12
  br label %1662

1662:                                             ; preds = %1645, %1628
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #12
  br label %1663

1663:                                             ; preds = %1662
  br label %1664

1664:                                             ; preds = %1663
  call void @exit(i32 noundef 1) #14
  unreachable

1665:                                             ; No predecessors!
  br label %1666

1666:                                             ; preds = %1665
  br label %1667

1667:                                             ; preds = %1666, %1603
  br label %1668

1668:                                             ; preds = %1667
  br label %1669

1669:                                             ; preds = %1668
  br label %1670

1670:                                             ; preds = %1669
  br label %1671

1671:                                             ; preds = %1670
  br label %1672

1672:                                             ; preds = %1671
  %1673 = load i32, ptr @test_count, align 4, !tbaa !5
  %1674 = add nsw i32 %1673, 1
  store i32 %1674, ptr @test_count, align 4, !tbaa !5
  %1675 = load ptr, ptr %21, align 8, !tbaa !9
  %1676 = getelementptr inbounds %struct.s2n_connection, ptr %1675, i32 0, i32 31
  %1677 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1676, i32 0, i32 8
  %1678 = call i32 @s2n_free(ptr noundef %1677)
  %1679 = icmp eq i32 %1678, -1
  br i1 %1679, label %1680, label %1733

1680:                                             ; preds = %1672
  br label %1681

1681:                                             ; preds = %1680
  br label %1682

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

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

1694:                                             ; preds = %1689
  %1695 = load i32, ptr %46, align 4, !tbaa !5
  %1696 = call ptr @__errno_location() #13
  store i32 %1695, ptr %1696, align 4, !tbaa !5
  %1697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1698 = load i32, ptr @test_count, align 4, !tbaa !5
  %1699 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1700 = load i32, ptr %1699, align 4, !tbaa !5
  %1701 = call ptr @s2n_strerror(i32 noundef %1700, ptr noundef @.str.4)
  %1702 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1703 = load i32, ptr %1702, align 4, !tbaa !5
  %1704 = call ptr @s2n_strerror_debug(i32 noundef %1703, ptr noundef @.str.4)
  %1705 = call ptr @__errno_location() #13
  %1706 = load i32, ptr %1705, align 4, !tbaa !5
  %1707 = call ptr @strerror(i32 noundef %1706) #12
  %1708 = call ptr @__errno_location() #13
  %1709 = load i32, ptr %1708, align 4, !tbaa !5
  %1710 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1697, ptr noundef @.str.2, i32 noundef %1698, ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 121, ptr noundef %1701, ptr noundef %1704, ptr noundef %1707, i32 noundef %1709) #12
  br label %1728

1711:                                             ; preds = %1689, %1682
  %1712 = load i32, ptr %46, align 4, !tbaa !5
  %1713 = call ptr @__errno_location() #13
  store i32 %1712, ptr %1713, align 4, !tbaa !5
  %1714 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1715 = load i32, ptr @test_count, align 4, !tbaa !5
  %1716 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1717 = load i32, ptr %1716, align 4, !tbaa !5
  %1718 = call ptr @s2n_strerror(i32 noundef %1717, ptr noundef @.str.4)
  %1719 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1720 = load i32, ptr %1719, align 4, !tbaa !5
  %1721 = call ptr @s2n_strerror_debug(i32 noundef %1720, ptr noundef @.str.4)
  %1722 = call ptr @__errno_location() #13
  %1723 = load i32, ptr %1722, align 4, !tbaa !5
  %1724 = call ptr @strerror(i32 noundef %1723) #12
  %1725 = call ptr @__errno_location() #13
  %1726 = load i32, ptr %1725, align 4, !tbaa !5
  %1727 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1714, ptr noundef @.str.5, i32 noundef %1715, ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 121, ptr noundef %1718, ptr noundef %1721, ptr noundef %1724, i32 noundef %1726) #12
  br label %1728

1728:                                             ; preds = %1711, %1694
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  br label %1729

1729:                                             ; preds = %1728
  br label %1730

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

1731:                                             ; No predecessors!
  br label %1732

1732:                                             ; preds = %1731
  br label %1733

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

1734:                                             ; preds = %1733
  br label %1735

1735:                                             ; preds = %1734
  br label %1736

1736:                                             ; preds = %1735
  %1737 = load i32, ptr @test_count, align 4, !tbaa !5
  %1738 = add nsw i32 %1737, 1
  store i32 %1738, ptr @test_count, align 4, !tbaa !5
  %1739 = load ptr, ptr %21, align 8, !tbaa !9
  %1740 = call i32 @s2n_connection_free(ptr noundef %1739)
  %1741 = icmp eq i32 %1740, -1
  br i1 %1741, label %1742, label %1795

1742:                                             ; preds = %1736
  br label %1743

1743:                                             ; preds = %1742
  br label %1744

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

1751:                                             ; preds = %1744
  %1752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1753 = call i32 @fileno(ptr noundef %1752) #12
  %1754 = call i32 @isatty(i32 noundef %1753) #12
  %1755 = icmp ne i32 %1754, 0
  br i1 %1755, label %1756, label %1773

1756:                                             ; preds = %1751
  %1757 = load i32, ptr %47, align 4, !tbaa !5
  %1758 = call ptr @__errno_location() #13
  store i32 %1757, ptr %1758, align 4, !tbaa !5
  %1759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1760 = load i32, ptr @test_count, align 4, !tbaa !5
  %1761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1762 = load i32, ptr %1761, align 4, !tbaa !5
  %1763 = call ptr @s2n_strerror(i32 noundef %1762, ptr noundef @.str.4)
  %1764 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1765 = load i32, ptr %1764, align 4, !tbaa !5
  %1766 = call ptr @s2n_strerror_debug(i32 noundef %1765, ptr noundef @.str.4)
  %1767 = call ptr @__errno_location() #13
  %1768 = load i32, ptr %1767, align 4, !tbaa !5
  %1769 = call ptr @strerror(i32 noundef %1768) #12
  %1770 = call ptr @__errno_location() #13
  %1771 = load i32, ptr %1770, align 4, !tbaa !5
  %1772 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1759, ptr noundef @.str.2, i32 noundef %1760, ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 122, ptr noundef %1763, ptr noundef %1766, ptr noundef %1769, i32 noundef %1771) #12
  br label %1790

1773:                                             ; preds = %1751, %1744
  %1774 = load i32, ptr %47, align 4, !tbaa !5
  %1775 = call ptr @__errno_location() #13
  store i32 %1774, ptr %1775, align 4, !tbaa !5
  %1776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1777 = load i32, ptr @test_count, align 4, !tbaa !5
  %1778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1779 = load i32, ptr %1778, align 4, !tbaa !5
  %1780 = call ptr @s2n_strerror(i32 noundef %1779, ptr noundef @.str.4)
  %1781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1782 = load i32, ptr %1781, align 4, !tbaa !5
  %1783 = call ptr @s2n_strerror_debug(i32 noundef %1782, ptr noundef @.str.4)
  %1784 = call ptr @__errno_location() #13
  %1785 = load i32, ptr %1784, align 4, !tbaa !5
  %1786 = call ptr @strerror(i32 noundef %1785) #12
  %1787 = call ptr @__errno_location() #13
  %1788 = load i32, ptr %1787, align 4, !tbaa !5
  %1789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1776, ptr noundef @.str.5, i32 noundef %1777, ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 122, ptr noundef %1780, ptr noundef %1783, ptr noundef %1786, i32 noundef %1788) #12
  br label %1790

1790:                                             ; preds = %1773, %1756
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  br label %1791

1791:                                             ; preds = %1790
  br label %1792

1792:                                             ; preds = %1791
  call void @exit(i32 noundef 1) #14
  unreachable

1793:                                             ; No predecessors!
  br label %1794

1794:                                             ; preds = %1793
  br label %1795

1795:                                             ; preds = %1794, %1736
  br label %1796

1796:                                             ; preds = %1795
  br label %1797

1797:                                             ; preds = %1796
  %1798 = load ptr, ptr %25, align 8, !tbaa !9
  call void @free(ptr noundef %1798) #12
  %1799 = load ptr, ptr %26, align 8, !tbaa !9
  call void @free(ptr noundef %1799) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr %33) #12
  %1800 = call i32 @s2n_free(ptr noundef %31)
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #12
  store i32 0, ptr %19, align 4
  br label %1801

1801:                                             ; preds = %1797, %888, %879, %867
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #12
  br label %1802

1802:                                             ; preds = %1801, %826, %788, %780, %771, %762, %750
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #12
  br label %1803

1803:                                             ; preds = %1802, %709, %671, %663
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #12
  br label %1804

1804:                                             ; preds = %1803, %585, %545, %507
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #12
  %1805 = load i32, ptr %19, align 4
  switch i32 %1805, label %1810 [
    i32 0, label %1806
  ]

1806:                                             ; preds = %1804
  br label %1807

1807:                                             ; preds = %1806
  %1808 = load i32, ptr %18, align 4, !tbaa !5
  %1809 = add i32 %1808, 1
  store i32 %1809, ptr %18, align 4, !tbaa !5
  br label %498, !llvm.loop !53

1810:                                             ; preds = %1804, %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #12
  %1811 = load i32, ptr %19, align 4
  switch i32 %1811, label %2026 [
    i32 52, label %1812
  ]

1812:                                             ; preds = %1810
  %1813 = load ptr, ptr %12, align 8, !tbaa !9
  %1814 = call i32 @FindMarker(ptr noundef %1813, ptr noundef @.str.18)
  %1815 = icmp eq i32 %1814, 0
  br i1 %1815, label %1816, label %1869

1816:                                             ; preds = %1812
  br label %1817

1817:                                             ; preds = %1816
  br label %1818

1818:                                             ; preds = %1817
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #12
  %1819 = call ptr @__errno_location() #13
  %1820 = load i32, ptr %1819, align 4, !tbaa !5
  store i32 %1820, ptr %48, align 4, !tbaa !5
  %1821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1822 = call i32 @s2n_print_stacktrace(ptr noundef %1821)
  %1823 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1824 = trunc i8 %1823 to i1
  br i1 %1824, label %1825, label %1847

1825:                                             ; preds = %1818
  %1826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1827 = call i32 @fileno(ptr noundef %1826) #12
  %1828 = call i32 @isatty(i32 noundef %1827) #12
  %1829 = icmp ne i32 %1828, 0
  br i1 %1829, label %1830, label %1847

1830:                                             ; preds = %1825
  %1831 = load i32, ptr %48, align 4, !tbaa !5
  %1832 = call ptr @__errno_location() #13
  store i32 %1831, ptr %1832, align 4, !tbaa !5
  %1833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1834 = load i32, ptr @test_count, align 4, !tbaa !5
  %1835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1836 = load i32, ptr %1835, align 4, !tbaa !5
  %1837 = call ptr @s2n_strerror(i32 noundef %1836, ptr noundef @.str.4)
  %1838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1839 = load i32, ptr %1838, align 4, !tbaa !5
  %1840 = call ptr @s2n_strerror_debug(i32 noundef %1839, ptr noundef @.str.4)
  %1841 = call ptr @__errno_location() #13
  %1842 = load i32, ptr %1841, align 4, !tbaa !5
  %1843 = call ptr @strerror(i32 noundef %1842) #12
  %1844 = call ptr @__errno_location() #13
  %1845 = load i32, ptr %1844, align 4, !tbaa !5
  %1846 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1833, ptr noundef @.str.2, i32 noundef %1834, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 129, ptr noundef %1837, ptr noundef %1840, ptr noundef %1843, i32 noundef %1845) #12
  br label %1864

1847:                                             ; preds = %1825, %1818
  %1848 = load i32, ptr %48, align 4, !tbaa !5
  %1849 = call ptr @__errno_location() #13
  store i32 %1848, ptr %1849, align 4, !tbaa !5
  %1850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1851 = load i32, ptr @test_count, align 4, !tbaa !5
  %1852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1853 = load i32, ptr %1852, align 4, !tbaa !5
  %1854 = call ptr @s2n_strerror(i32 noundef %1853, ptr noundef @.str.4)
  %1855 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1856 = load i32, ptr %1855, align 4, !tbaa !5
  %1857 = call ptr @s2n_strerror_debug(i32 noundef %1856, ptr noundef @.str.4)
  %1858 = call ptr @__errno_location() #13
  %1859 = load i32, ptr %1858, align 4, !tbaa !5
  %1860 = call ptr @strerror(i32 noundef %1859) #12
  %1861 = call ptr @__errno_location() #13
  %1862 = load i32, ptr %1861, align 4, !tbaa !5
  %1863 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1850, ptr noundef @.str.5, i32 noundef %1851, ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 129, ptr noundef %1854, ptr noundef %1857, ptr noundef %1860, i32 noundef %1862) #12
  br label %1864

1864:                                             ; preds = %1847, %1830
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  br label %1865

1865:                                             ; preds = %1864
  br label %1866

1866:                                             ; preds = %1865
  call void @exit(i32 noundef 1) #14
  unreachable

1867:                                             ; No predecessors!
  br label %1868

1868:                                             ; preds = %1867
  br label %1869

1869:                                             ; preds = %1868, %1812
  %1870 = load ptr, ptr %12, align 8, !tbaa !9
  %1871 = call i32 @fclose(ptr noundef %1870)
  br label %1872

1872:                                             ; preds = %1869
  br label %1873

1873:                                             ; preds = %1872
  %1874 = call i32 @s2n_cleanup()
  %1875 = icmp eq i32 %1874, -1
  br i1 %1875, label %1876, label %1929

1876:                                             ; preds = %1873
  br label %1877

1877:                                             ; preds = %1876
  br label %1878

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

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

1890:                                             ; preds = %1885
  %1891 = load i32, ptr %49, align 4, !tbaa !5
  %1892 = call ptr @__errno_location() #13
  store i32 %1891, ptr %1892, align 4, !tbaa !5
  %1893 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1894 = load i32, ptr @test_count, align 4, !tbaa !5
  %1895 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1896 = load i32, ptr %1895, align 4, !tbaa !5
  %1897 = call ptr @s2n_strerror(i32 noundef %1896, ptr noundef @.str.4)
  %1898 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1899 = load i32, ptr %1898, align 4, !tbaa !5
  %1900 = call ptr @s2n_strerror_debug(i32 noundef %1899, ptr noundef @.str.4)
  %1901 = call ptr @__errno_location() #13
  %1902 = load i32, ptr %1901, align 4, !tbaa !5
  %1903 = call ptr @strerror(i32 noundef %1902) #12
  %1904 = call ptr @__errno_location() #13
  %1905 = load i32, ptr %1904, align 4, !tbaa !5
  %1906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1893, ptr noundef @.str.2, i32 noundef %1894, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 133, ptr noundef %1897, ptr noundef %1900, ptr noundef %1903, i32 noundef %1905) #12
  br label %1924

1907:                                             ; preds = %1885, %1878
  %1908 = load i32, ptr %49, align 4, !tbaa !5
  %1909 = call ptr @__errno_location() #13
  store i32 %1908, ptr %1909, align 4, !tbaa !5
  %1910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1911 = load i32, ptr @test_count, align 4, !tbaa !5
  %1912 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1913 = load i32, ptr %1912, align 4, !tbaa !5
  %1914 = call ptr @s2n_strerror(i32 noundef %1913, ptr noundef @.str.4)
  %1915 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1916 = load i32, ptr %1915, align 4, !tbaa !5
  %1917 = call ptr @s2n_strerror_debug(i32 noundef %1916, ptr noundef @.str.4)
  %1918 = call ptr @__errno_location() #13
  %1919 = load i32, ptr %1918, align 4, !tbaa !5
  %1920 = call ptr @strerror(i32 noundef %1919) #12
  %1921 = call ptr @__errno_location() #13
  %1922 = load i32, ptr %1921, align 4, !tbaa !5
  %1923 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1910, ptr noundef @.str.5, i32 noundef %1911, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 133, ptr noundef %1914, ptr noundef %1917, ptr noundef %1920, i32 noundef %1922) #12
  br label %1924

1924:                                             ; preds = %1907, %1890
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  br label %1925

1925:                                             ; preds = %1924
  br label %1926

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

1927:                                             ; No predecessors!
  br label %1928

1928:                                             ; preds = %1927
  br label %1929

1929:                                             ; preds = %1928, %1873
  br label %1930

1930:                                             ; preds = %1929
  br label %1931

1931:                                             ; preds = %1930
  br label %1932

1932:                                             ; preds = %1931
  br label %1933

1933:                                             ; preds = %1932
  %1934 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1935 = icmp eq i32 %1934, -1
  br i1 %1935, label %1936, label %1989

1936:                                             ; preds = %1933
  br label %1937

1937:                                             ; preds = %1936
  br label %1938

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

1945:                                             ; preds = %1938
  %1946 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1947 = call i32 @fileno(ptr noundef %1946) #12
  %1948 = call i32 @isatty(i32 noundef %1947) #12
  %1949 = icmp ne i32 %1948, 0
  br i1 %1949, label %1950, label %1967

1950:                                             ; preds = %1945
  %1951 = load i32, ptr %50, align 4, !tbaa !5
  %1952 = call ptr @__errno_location() #13
  store i32 %1951, ptr %1952, align 4, !tbaa !5
  %1953 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1954 = load i32, ptr @test_count, align 4, !tbaa !5
  %1955 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1956 = load i32, ptr %1955, align 4, !tbaa !5
  %1957 = call ptr @s2n_strerror(i32 noundef %1956, ptr noundef @.str.4)
  %1958 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1959 = load i32, ptr %1958, align 4, !tbaa !5
  %1960 = call ptr @s2n_strerror_debug(i32 noundef %1959, ptr noundef @.str.4)
  %1961 = call ptr @__errno_location() #13
  %1962 = load i32, ptr %1961, align 4, !tbaa !5
  %1963 = call ptr @strerror(i32 noundef %1962) #12
  %1964 = call ptr @__errno_location() #13
  %1965 = load i32, ptr %1964, align 4, !tbaa !5
  %1966 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1953, ptr noundef @.str.2, i32 noundef %1954, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 133, ptr noundef %1957, ptr noundef %1960, ptr noundef %1963, i32 noundef %1965) #12
  br label %1984

1967:                                             ; preds = %1945, %1938
  %1968 = load i32, ptr %50, align 4, !tbaa !5
  %1969 = call ptr @__errno_location() #13
  store i32 %1968, ptr %1969, align 4, !tbaa !5
  %1970 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1971 = load i32, ptr @test_count, align 4, !tbaa !5
  %1972 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1973 = load i32, ptr %1972, align 4, !tbaa !5
  %1974 = call ptr @s2n_strerror(i32 noundef %1973, ptr noundef @.str.4)
  %1975 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1976 = load i32, ptr %1975, align 4, !tbaa !5
  %1977 = call ptr @s2n_strerror_debug(i32 noundef %1976, ptr noundef @.str.4)
  %1978 = call ptr @__errno_location() #13
  %1979 = load i32, ptr %1978, align 4, !tbaa !5
  %1980 = call ptr @strerror(i32 noundef %1979) #12
  %1981 = call ptr @__errno_location() #13
  %1982 = load i32, ptr %1981, align 4, !tbaa !5
  %1983 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1970, ptr noundef @.str.5, i32 noundef %1971, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 133, ptr noundef %1974, ptr noundef %1977, ptr noundef %1980, i32 noundef %1982) #12
  br label %1984

1984:                                             ; preds = %1967, %1950
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  br label %1985

1985:                                             ; preds = %1984
  br label %1986

1986:                                             ; preds = %1985
  call void @exit(i32 noundef 1) #14
  unreachable

1987:                                             ; No predecessors!
  br label %1988

1988:                                             ; preds = %1987
  br label %1989

1989:                                             ; preds = %1988, %1933
  br label %1990

1990:                                             ; preds = %1989
  br label %1991

1991:                                             ; preds = %1990
  %1992 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1993 = trunc i8 %1992 to i1
  br i1 %1993, label %1994, label %2010

1994:                                             ; preds = %1991
  %1995 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1996 = call i32 @fileno(ptr noundef %1995) #12
  %1997 = call i32 @isatty(i32 noundef %1996) #12
  %1998 = icmp ne i32 %1997, 0
  br i1 %1998, label %1999, label %2010

1999:                                             ; preds = %1994
  %2000 = load i32, ptr @test_count, align 4, !tbaa !5
  %2001 = icmp ne i32 %2000, 0
  br i1 %2001, label %2002, label %2006

2002:                                             ; preds = %1999
  %2003 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2004 = load i32, ptr @test_count, align 4, !tbaa !5
  %2005 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2003, ptr noundef @.str.11, i32 noundef %2004) #12
  br label %2009

2006:                                             ; preds = %1999
  %2007 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2007, ptr noundef @.str.12) #12
  br label %2009

2009:                                             ; preds = %2006, %2002
  br label %2021

2010:                                             ; preds = %1994, %1991
  %2011 = load i32, ptr @test_count, align 4, !tbaa !5
  %2012 = icmp ne i32 %2011, 0
  br i1 %2012, label %2013, label %2017

2013:                                             ; preds = %2010
  %2014 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2015 = load i32, ptr @test_count, align 4, !tbaa !5
  %2016 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2014, ptr noundef @.str.13, i32 noundef %2015) #12
  br label %2020

2017:                                             ; preds = %2010
  %2018 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2019 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2018, ptr noundef @.str.14) #12
  br label %2020

2020:                                             ; preds = %2017, %2013
  br label %2021

2021:                                             ; preds = %2020, %2009
  store i32 0, ptr %3, align 4
  store i32 1, ptr %19, align 4
  br label %2026

2022:                                             ; No predecessors!
  br label %2023

2023:                                             ; preds = %2022
  br label %2024

2024:                                             ; preds = %2023
  br label %2025

2025:                                             ; preds = %2024
  store i32 0, ptr %19, align 4
  br label %2026

2026:                                             ; preds = %2025, %2021, %1810
  call void @llvm.lifetime.end.p0(i64 48, ptr %17) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #12
  %2027 = load i32, ptr %19, align 4
  switch i32 %2027, label %2030 [
    i32 0, label %2028
    i32 1, label %2028
  ]

2028:                                             ; preds = %2026, %2026, %432
  %2029 = load i32, ptr %3, align 4
  ret i32 %2029

2030:                                             ; preds = %2026
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

declare i32 @s2n_disable_tls13_in_test(...) #2

declare zeroext i1 @s2n_pq_is_enabled() #2

declare i32 @s2n_cleanup() #2

declare noalias ptr @fopen(ptr noundef, ptr noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @FindMarker(ptr noundef, ptr noundef) #7

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) #2

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

declare i32 @s2n_calculate_stacktrace() #2

declare ptr @s2n_connection_new(i32 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @ReadHex(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #9

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

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

declare i32 @s2n_free(ptr noundef) #2

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #11

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

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

declare i32 @s2n_connection_free(ptr noundef) #2

; Function Attrs: nounwind
declare void @free(ptr noundef) #1

declare i32 @fclose(ptr noundef) #2

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

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

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


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

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

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [82 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [106 x i8], align 1
@_s2n_debug_info = external thread_local local_unnamed_addr global %struct.s2n_debug_info, align 8
@.str.21 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [72 x i8], align 1
@s2n_ecdhe_rsa_with_aes_256_gcm_sha384 = external global %struct.s2n_cipher_suite, align 8
@.str.23 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [121 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [111 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca [48 x i8], align 16
  %4 = alloca [32 x i8], align 16
  %5 = alloca [32 x i8], align 16
  %6 = alloca [48 x i8], align 16
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %struct.s2n_blob, align 8
  %11 = alloca %struct.s2n_blob, align 8
  %12 = alloca %struct.s2n_blob, align 8
  %13 = alloca %struct.s2n_stuffer, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %14 = load ptr, ptr @stdout, align 8, !tbaa !9
  %15 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %14, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #16
  %16 = load ptr, ptr @stdout, align 8, !tbaa !9
  %17 = tail call i32 @fflush(ptr noundef %16)
  %18 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #16
  %19 = icmp eq i32 %18, -1
  br i1 %19, label %20, label %44

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

27:                                               ; preds = %20
  %28 = load ptr, ptr @stderr, align 8, !tbaa !9
  %29 = tail call i32 @fileno(ptr noundef %28) #16
  %30 = tail call i32 @isatty(i32 noundef %29) #16
  %.not150 = icmp eq i32 %30, 0
  br i1 %.not150, label %31, label %32

31:                                               ; preds = %27, %20
  br label %32

32:                                               ; preds = %27, %31
  %.str.5.sink = phi ptr [ @.str.5, %31 ], [ @.str.2, %27 ]
  store i32 %22, ptr %21, align 4, !tbaa !5
  %33 = load ptr, ptr @stderr, align 8, !tbaa !9
  %34 = load i32, ptr @test_count, align 4, !tbaa !5
  %35 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %36 = load i32, ptr %35, align 4, !tbaa !5
  %37 = tail call ptr @s2n_strerror(i32 noundef %36, ptr noundef nonnull @.str.4) #16
  %38 = load i32, ptr %35, align 4, !tbaa !5
  %39 = tail call ptr @s2n_strerror_debug(i32 noundef %38, ptr noundef nonnull @.str.4) #16
  %40 = load i32, ptr %21, align 4, !tbaa !5
  %41 = tail call ptr @strerror(i32 noundef %40) #16
  %42 = load i32, ptr %21, align 4, !tbaa !5
  %43 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %33, ptr noundef nonnull %.str.5.sink, i32 noundef %34, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 41, ptr noundef %37, ptr noundef %39, ptr noundef %41, i32 noundef %42) #18
  tail call void @exit(i32 noundef 1) #19
  unreachable

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

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

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

60:                                               ; preds = %56, %49
  br label %61

61:                                               ; preds = %56, %60
  %.str.5.sink173 = phi ptr [ @.str.5, %60 ], [ @.str.2, %56 ]
  store i32 %51, ptr %50, align 4, !tbaa !5
  %62 = load ptr, ptr @stderr, align 8, !tbaa !9
  %63 = load i32, ptr @test_count, align 4, !tbaa !5
  %64 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %65 = load i32, ptr %64, align 4, !tbaa !5
  %66 = tail call ptr @s2n_strerror(i32 noundef %65, ptr noundef nonnull @.str.4) #16
  %67 = load i32, ptr %64, align 4, !tbaa !5
  %68 = tail call ptr @s2n_strerror_debug(i32 noundef %67, ptr noundef nonnull @.str.4) #16
  %69 = load i32, ptr %50, align 4, !tbaa !5
  %70 = tail call ptr @strerror(i32 noundef %69) #16
  %71 = load i32, ptr %50, align 4, !tbaa !5
  %72 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %62, ptr noundef nonnull %.str.5.sink173, i32 noundef %63, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 41, ptr noundef %66, ptr noundef %68, ptr noundef %70, i32 noundef %71) #18
  tail call void @exit(i32 noundef 1) #19
  unreachable

73:                                               ; preds = %44
  %74 = tail call i32 @s2n_init() #16
  %75 = icmp eq i32 %74, -1
  br i1 %75, label %76, label %100

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

83:                                               ; preds = %76
  %84 = load ptr, ptr @stderr, align 8, !tbaa !9
  %85 = tail call i32 @fileno(ptr noundef %84) #16
  %86 = tail call i32 @isatty(i32 noundef %85) #16
  %.not148 = icmp eq i32 %86, 0
  br i1 %.not148, label %87, label %88

87:                                               ; preds = %83, %76
  br label %88

88:                                               ; preds = %83, %87
  %.str.5.sink184 = phi ptr [ @.str.5, %87 ], [ @.str.2, %83 ]
  store i32 %78, ptr %77, align 4, !tbaa !5
  %89 = load ptr, ptr @stderr, align 8, !tbaa !9
  %90 = load i32, ptr @test_count, align 4, !tbaa !5
  %91 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %92 = load i32, ptr %91, align 4, !tbaa !5
  %93 = tail call ptr @s2n_strerror(i32 noundef %92, ptr noundef nonnull @.str.4) #16
  %94 = load i32, ptr %91, align 4, !tbaa !5
  %95 = tail call ptr @s2n_strerror_debug(i32 noundef %94, ptr noundef nonnull @.str.4) #16
  %96 = load i32, ptr %77, align 4, !tbaa !5
  %97 = tail call ptr @strerror(i32 noundef %96) #16
  %98 = load i32, ptr %77, align 4, !tbaa !5
  %99 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %89, ptr noundef nonnull %.str.5.sink184, i32 noundef %90, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 41, ptr noundef %93, ptr noundef %95, ptr noundef %97, i32 noundef %98) #18
  tail call void @exit(i32 noundef 1) #19
  unreachable

100:                                              ; preds = %73
  %101 = load i32, ptr @test_count, align 4, !tbaa !5
  %102 = add nsw i32 %101, 1
  store i32 %102, ptr @test_count, align 4, !tbaa !5
  %103 = tail call i32 (...) @s2n_disable_tls13_in_test() #16
  %104 = icmp eq i32 %103, -1
  br i1 %104, label %105, label %129

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

112:                                              ; preds = %105
  %113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %114 = tail call i32 @fileno(ptr noundef %113) #16
  %115 = tail call i32 @isatty(i32 noundef %114) #16
  %.not147 = icmp eq i32 %115, 0
  br i1 %.not147, label %116, label %117

116:                                              ; preds = %112, %105
  br label %117

117:                                              ; preds = %112, %116
  %.str.5.sink195 = phi ptr [ @.str.5, %116 ], [ @.str.2, %112 ]
  store i32 %107, ptr %106, align 4, !tbaa !5
  %118 = load ptr, ptr @stderr, align 8, !tbaa !9
  %119 = load i32, ptr @test_count, align 4, !tbaa !5
  %120 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %121 = load i32, ptr %120, align 4, !tbaa !5
  %122 = tail call ptr @s2n_strerror(i32 noundef %121, ptr noundef nonnull @.str.4) #16
  %123 = load i32, ptr %120, align 4, !tbaa !5
  %124 = tail call ptr @s2n_strerror_debug(i32 noundef %123, ptr noundef nonnull @.str.4) #16
  %125 = load i32, ptr %106, align 4, !tbaa !5
  %126 = tail call ptr @strerror(i32 noundef %125) #16
  %127 = load i32, ptr %106, align 4, !tbaa !5
  %128 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %118, ptr noundef nonnull %.str.5.sink195, i32 noundef %119, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 42, ptr noundef %122, ptr noundef %124, ptr noundef %126, i32 noundef %127) #18
  tail call void @exit(i32 noundef 1) #19
  unreachable

129:                                              ; preds = %100
  %130 = tail call zeroext i1 @s2n_pq_is_enabled() #16
  br i1 %130, label %206, label %131

131:                                              ; preds = %129
  %132 = tail call i32 @s2n_cleanup() #16
  %133 = icmp eq i32 %132, -1
  br i1 %133, label %134, label %158

134:                                              ; preds = %131
  %135 = tail call ptr @__errno_location() #17
  %136 = load i32, ptr %135, align 4, !tbaa !5
  %137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %138 = tail call i32 @s2n_print_stacktrace(ptr noundef %137) #16
  %139 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %140 = trunc nuw i8 %139 to i1
  br i1 %140, label %141, label %145

141:                                              ; preds = %134
  %142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %143 = tail call i32 @fileno(ptr noundef %142) #16
  %144 = tail call i32 @isatty(i32 noundef %143) #16
  %.not117 = icmp eq i32 %144, 0
  br i1 %.not117, label %145, label %146

145:                                              ; preds = %141, %134
  br label %146

146:                                              ; preds = %141, %145
  %.str.5.sink206 = phi ptr [ @.str.5, %145 ], [ @.str.2, %141 ]
  store i32 %136, ptr %135, align 4, !tbaa !5
  %147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %148 = load i32, ptr @test_count, align 4, !tbaa !5
  %149 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %150 = load i32, ptr %149, align 4, !tbaa !5
  %151 = tail call ptr @s2n_strerror(i32 noundef %150, ptr noundef nonnull @.str.4) #16
  %152 = load i32, ptr %149, align 4, !tbaa !5
  %153 = tail call ptr @s2n_strerror_debug(i32 noundef %152, ptr noundef nonnull @.str.4) #16
  %154 = load i32, ptr %135, align 4, !tbaa !5
  %155 = tail call ptr @strerror(i32 noundef %154) #16
  %156 = load i32, ptr %135, align 4, !tbaa !5
  %157 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %147, ptr noundef nonnull %.str.5.sink206, i32 noundef %148, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 50, ptr noundef %151, ptr noundef %153, ptr noundef %155, i32 noundef %156) #18
  tail call void @exit(i32 noundef 1) #19
  unreachable

158:                                              ; preds = %131
  %159 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #16
  %160 = icmp eq i32 %159, -1
  br i1 %160, label %161, label %185

161:                                              ; preds = %158
  %162 = tail call ptr @__errno_location() #17
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = load ptr, ptr @stderr, align 8, !tbaa !9
  %165 = tail call i32 @s2n_print_stacktrace(ptr noundef %164) #16
  %166 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %167 = trunc nuw i8 %166 to i1
  br i1 %167, label %168, label %172

168:                                              ; preds = %161
  %169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %170 = tail call i32 @fileno(ptr noundef %169) #16
  %171 = tail call i32 @isatty(i32 noundef %170) #16
  %.not116 = icmp eq i32 %171, 0
  br i1 %.not116, label %172, label %173

172:                                              ; preds = %168, %161
  br label %173

173:                                              ; preds = %168, %172
  %.str.5.sink217 = phi ptr [ @.str.5, %172 ], [ @.str.2, %168 ]
  store i32 %163, ptr %162, align 4, !tbaa !5
  %174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %175 = load i32, ptr @test_count, align 4, !tbaa !5
  %176 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = tail call ptr @s2n_strerror(i32 noundef %177, ptr noundef nonnull @.str.4) #16
  %179 = load i32, ptr %176, align 4, !tbaa !5
  %180 = tail call ptr @s2n_strerror_debug(i32 noundef %179, ptr noundef nonnull @.str.4) #16
  %181 = load i32, ptr %162, align 4, !tbaa !5
  %182 = tail call ptr @strerror(i32 noundef %181) #16
  %183 = load i32, ptr %162, align 4, !tbaa !5
  %184 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %174, ptr noundef nonnull %.str.5.sink217, i32 noundef %175, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 50, ptr noundef %178, ptr noundef %180, ptr noundef %182, i32 noundef %183) #18
  tail call void @exit(i32 noundef 1) #19
  unreachable

185:                                              ; preds = %158
  %186 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %187 = trunc nuw i8 %186 to i1
  br i1 %187, label %188, label %199

188:                                              ; preds = %185
  %189 = load ptr, ptr @stdout, align 8, !tbaa !9
  %190 = tail call i32 @fileno(ptr noundef %189) #16
  %191 = tail call i32 @isatty(i32 noundef %190) #16
  %.not = icmp eq i32 %191, 0
  br i1 %.not, label %199, label %192

192:                                              ; preds = %188
  %193 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not115 = icmp eq i32 %193, 0
  %194 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not115, label %197, label %195

195:                                              ; preds = %192
  %196 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %194, ptr noundef nonnull @.str.11, i32 noundef %193) #16
  br label %793

197:                                              ; preds = %192
  %198 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %194, ptr noundef nonnull @.str.12) #16
  br label %793

199:                                              ; preds = %188, %185
  %200 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not114 = icmp eq i32 %200, 0
  %201 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not114, label %204, label %202

202:                                              ; preds = %199
  %203 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %201, ptr noundef nonnull @.str.13, i32 noundef %200) #16
  br label %793

204:                                              ; preds = %199
  %205 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %201, ptr noundef nonnull @.str.14) #16
  br label %793

206:                                              ; preds = %129
  %207 = tail call noalias ptr @fopen(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.16)
  %208 = load i32, ptr @test_count, align 4, !tbaa !5
  %209 = add nsw i32 %208, 1
  store i32 %209, ptr @test_count, align 4, !tbaa !5
  %210 = icmp eq ptr %207, null
  br i1 %210, label %211, label %235

211:                                              ; preds = %206
  %212 = tail call ptr @__errno_location() #17
  %213 = load i32, ptr %212, align 4, !tbaa !5
  %214 = load ptr, ptr @stderr, align 8, !tbaa !9
  %215 = tail call i32 @s2n_print_stacktrace(ptr noundef %214) #16
  %216 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %217 = trunc nuw i8 %216 to i1
  br i1 %217, label %218, label %222

218:                                              ; preds = %211
  %219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %220 = tail call i32 @fileno(ptr noundef %219) #16
  %221 = tail call i32 @isatty(i32 noundef %220) #16
  %.not146 = icmp eq i32 %221, 0
  br i1 %.not146, label %222, label %223

222:                                              ; preds = %218, %211
  br label %223

223:                                              ; preds = %218, %222
  %.str.5.sink228 = phi ptr [ @.str.5, %222 ], [ @.str.2, %218 ]
  store i32 %213, ptr %212, align 4, !tbaa !5
  %224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %225 = load i32, ptr @test_count, align 4, !tbaa !5
  %226 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %228 = tail call ptr @s2n_strerror(i32 noundef %227, ptr noundef nonnull @.str.4) #16
  %229 = load i32, ptr %226, align 4, !tbaa !5
  %230 = tail call ptr @s2n_strerror_debug(i32 noundef %229, ptr noundef nonnull @.str.4) #16
  %231 = load i32, ptr %212, align 4, !tbaa !5
  %232 = tail call ptr @strerror(i32 noundef %231) #16
  %233 = load i32, ptr %212, align 4, !tbaa !5
  %234 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %224, ptr noundef nonnull %.str.5.sink228, i32 noundef %225, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 54, ptr noundef %228, ptr noundef %230, ptr noundef %232, i32 noundef %233) #18
  tail call void @exit(i32 noundef 1) #19
  unreachable

235:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3) #16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #16
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) #16
  %236 = getelementptr inbounds i8, ptr %10, i64 8
  %237 = getelementptr inbounds i8, ptr %11, i64 8
  br label %238

238:                                              ; preds = %235, %687
  %.093162 = phi i32 [ 0, %235 ], [ %689, %687 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #16
  store i32 0, ptr %7, align 4, !tbaa !5
  %239 = call i32 @FindMarker(ptr noundef nonnull %207, ptr noundef nonnull @.str.18)
  %240 = icmp sgt i32 %239, -1
  br i1 %240, label %241, label %.thread

241:                                              ; preds = %238
  %242 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %207, ptr noundef nonnull @.str.19, ptr noundef nonnull %7) #16
  %243 = icmp sgt i32 %242, 0
  br i1 %243, label %244, label %.thread.sink.split

244:                                              ; preds = %241
  %245 = load i32, ptr %7, align 4, !tbaa !5
  %246 = icmp eq i32 %245, %.093162
  br i1 %246, label %247, label %.thread.sink.split

247:                                              ; preds = %244
  %248 = load i32, ptr @test_count, align 4, !tbaa !5
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr @test_count, align 4, !tbaa !5
  %250 = call ptr @s2n_connection_new(i32 noundef 0) #16
  %251 = icmp eq ptr %250, null
  br i1 %251, label %252, label %276

252:                                              ; preds = %247
  %253 = tail call ptr @__errno_location() #17
  %254 = load i32, ptr %253, align 4, !tbaa !5
  %255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %256 = call i32 @s2n_print_stacktrace(ptr noundef %255) #16
  %257 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %258 = trunc nuw i8 %257 to i1
  br i1 %258, label %259, label %263

259:                                              ; preds = %252
  %260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %261 = call i32 @fileno(ptr noundef %260) #16
  %262 = call i32 @isatty(i32 noundef %261) #16
  %.not145 = icmp eq i32 %262, 0
  br i1 %.not145, label %263, label %264

263:                                              ; preds = %259, %252
  br label %264

264:                                              ; preds = %259, %263
  %.str.5.sink239 = phi ptr [ @.str.5, %263 ], [ @.str.2, %259 ]
  store i32 %254, ptr %253, align 4, !tbaa !5
  %265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %266 = load i32, ptr @test_count, align 4, !tbaa !5
  %267 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %268 = load i32, ptr %267, align 4, !tbaa !5
  %269 = call ptr @s2n_strerror(i32 noundef %268, ptr noundef nonnull @.str.4) #16
  %270 = load i32, ptr %267, align 4, !tbaa !5
  %271 = call ptr @s2n_strerror_debug(i32 noundef %270, ptr noundef nonnull @.str.4) #16
  %272 = load i32, ptr %253, align 4, !tbaa !5
  %273 = call ptr @strerror(i32 noundef %272) #16
  %274 = load i32, ptr %253, align 4, !tbaa !5
  %275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %265, ptr noundef nonnull %.str.5.sink239, i32 noundef %266, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef %269, ptr noundef %271, ptr noundef %273, i32 noundef %274) #18
  call void @exit(i32 noundef 1) #19
  unreachable

276:                                              ; preds = %247
  %277 = getelementptr inbounds i8, ptr %250, i64 220
  store i8 33, ptr %277, align 4, !tbaa !15
  %278 = getelementptr inbounds i8, ptr %250, i64 232
  %279 = load ptr, ptr %278, align 8, !tbaa !42
  store ptr @s2n_ecdhe_rsa_with_aes_256_gcm_sha384, ptr %279, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #16
  store i32 0, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #16
  store i32 0, ptr %9, align 4, !tbaa !5
  %280 = call i32 @ReadHex(ptr noundef nonnull %207, ptr noundef nonnull %3, i32 noundef 48, ptr noundef nonnull @.str.23)
  %281 = icmp sgt i32 %280, -1
  br i1 %281, label %282, label %.thread155

282:                                              ; preds = %276
  %283 = call i32 @FindMarker(ptr noundef nonnull %207, ptr noundef nonnull @.str.24)
  %284 = icmp sgt i32 %283, -1
  br i1 %284, label %285, label %.thread155

285:                                              ; preds = %282
  %286 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %207, ptr noundef nonnull @.str.19, ptr noundef nonnull %8) #16
  %287 = icmp sgt i32 %286, 0
  br i1 %287, label %288, label %.thread155.sink.split

288:                                              ; preds = %285
  %289 = load i32, ptr %8, align 4, !tbaa !5
  %290 = zext i32 %289 to i64
  %291 = call noalias ptr @malloc(i64 noundef %290) #20
  %.not121 = icmp eq ptr %291, null
  br i1 %.not121, label %.thread155.sink.split, label %292

292:                                              ; preds = %288
  %293 = call i32 @ReadHex(ptr noundef nonnull %207, ptr noundef nonnull %291, i32 noundef %289, ptr noundef nonnull @.str.27)
  %294 = icmp sgt i32 %293, -1
  br i1 %294, label %295, label %.thread155

295:                                              ; preds = %292
  %296 = call i32 @ReadHex(ptr noundef nonnull %207, ptr noundef nonnull %4, i32 noundef 32, ptr noundef nonnull @.str.28)
  %297 = icmp sgt i32 %296, -1
  br i1 %297, label %298, label %.thread155

298:                                              ; preds = %295
  %299 = call i32 @ReadHex(ptr noundef nonnull %207, ptr noundef nonnull %5, i32 noundef 32, ptr noundef nonnull @.str.29)
  %300 = icmp sgt i32 %299, -1
  br i1 %300, label %301, label %.thread155

301:                                              ; preds = %298
  %302 = call i32 @FindMarker(ptr noundef nonnull %207, ptr noundef nonnull @.str.30)
  %303 = icmp sgt i32 %302, -1
  br i1 %303, label %304, label %.thread155

304:                                              ; preds = %301
  %305 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %207, ptr noundef nonnull @.str.19, ptr noundef nonnull %9) #16
  %306 = icmp sgt i32 %305, 0
  br i1 %306, label %307, label %.thread155.sink.split

307:                                              ; preds = %304
  %308 = load i32, ptr %9, align 4, !tbaa !5
  %309 = zext i32 %308 to i64
  %310 = call noalias ptr @malloc(i64 noundef %309) #20
  %.not124 = icmp eq ptr %310, null
  br i1 %.not124, label %.thread155.sink.split, label %311

311:                                              ; preds = %307
  %312 = call i32 @ReadHex(ptr noundef nonnull %207, ptr noundef nonnull %310, i32 noundef %308, ptr noundef nonnull @.str.33)
  %313 = icmp sgt i32 %312, -1
  br i1 %313, label %314, label %.thread155

314:                                              ; preds = %311
  %315 = call i32 @ReadHex(ptr noundef nonnull %207, ptr noundef nonnull %6, i32 noundef 48, ptr noundef nonnull @.str.34)
  %316 = icmp sgt i32 %315, -1
  br i1 %316, label %317, label %.thread155

317:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false)
  %318 = load i32, ptr @test_count, align 4, !tbaa !5
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr @test_count, align 4, !tbaa !5
  %320 = call i32 @s2n_blob_init(ptr noundef nonnull %10, ptr noundef nonnull %3, i32 noundef 48) #16
  %321 = icmp eq i32 %320, -1
  br i1 %321, label %322, label %346

322:                                              ; preds = %317
  %323 = tail call ptr @__errno_location() #17
  %324 = load i32, ptr %323, align 4, !tbaa !5
  %325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %326 = call i32 @s2n_print_stacktrace(ptr noundef %325) #16
  %327 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %328 = trunc nuw i8 %327 to i1
  br i1 %328, label %329, label %333

329:                                              ; preds = %322
  %330 = load ptr, ptr @stderr, align 8, !tbaa !9
  %331 = call i32 @fileno(ptr noundef %330) #16
  %332 = call i32 @isatty(i32 noundef %331) #16
  %.not144 = icmp eq i32 %332, 0
  br i1 %.not144, label %333, label %334

333:                                              ; preds = %329, %322
  br label %334

334:                                              ; preds = %329, %333
  %.str.5.sink250 = phi ptr [ @.str.5, %333 ], [ @.str.2, %329 ]
  store i32 %324, ptr %323, align 4, !tbaa !5
  %335 = load ptr, ptr @stderr, align 8, !tbaa !9
  %336 = load i32, ptr @test_count, align 4, !tbaa !5
  %337 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %338 = load i32, ptr %337, align 4, !tbaa !5
  %339 = call ptr @s2n_strerror(i32 noundef %338, ptr noundef nonnull @.str.4) #16
  %340 = load i32, ptr %337, align 4, !tbaa !5
  %341 = call ptr @s2n_strerror_debug(i32 noundef %340, ptr noundef nonnull @.str.4) #16
  %342 = load i32, ptr %323, align 4, !tbaa !5
  %343 = call ptr @strerror(i32 noundef %342) #16
  %344 = load i32, ptr %323, align 4, !tbaa !5
  %345 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %335, ptr noundef nonnull %.str.5.sink250, i32 noundef %336, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 100, ptr noundef %339, ptr noundef %341, ptr noundef %343, i32 noundef %344) #18
  call void @exit(i32 noundef 1) #19
  unreachable

346:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, i8 0, i64 24, i1 false)
  %347 = load i32, ptr @test_count, align 4, !tbaa !5
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr @test_count, align 4, !tbaa !5
  %349 = load i32, ptr %8, align 4, !tbaa !5
  %350 = call i32 @s2n_blob_init(ptr noundef nonnull %11, ptr noundef nonnull %291, i32 noundef %349) #16
  %351 = icmp eq i32 %350, -1
  br i1 %351, label %352, label %376

352:                                              ; preds = %346
  %353 = tail call ptr @__errno_location() #17
  %354 = load i32, ptr %353, align 4, !tbaa !5
  %355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %356 = call i32 @s2n_print_stacktrace(ptr noundef %355) #16
  %357 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %358 = trunc nuw i8 %357 to i1
  br i1 %358, label %359, label %363

359:                                              ; preds = %352
  %360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %361 = call i32 @fileno(ptr noundef %360) #16
  %362 = call i32 @isatty(i32 noundef %361) #16
  %.not143 = icmp eq i32 %362, 0
  br i1 %.not143, label %363, label %364

363:                                              ; preds = %359, %352
  br label %364

364:                                              ; preds = %359, %363
  %.str.5.sink261 = phi ptr [ @.str.5, %363 ], [ @.str.2, %359 ]
  store i32 %354, ptr %353, align 4, !tbaa !5
  %365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %366 = load i32, ptr @test_count, align 4, !tbaa !5
  %367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = call ptr @s2n_strerror(i32 noundef %368, ptr noundef nonnull @.str.4) #16
  %370 = load i32, ptr %367, align 4, !tbaa !5
  %371 = call ptr @s2n_strerror_debug(i32 noundef %370, ptr noundef nonnull @.str.4) #16
  %372 = load i32, ptr %353, align 4, !tbaa !5
  %373 = call ptr @strerror(i32 noundef %372) #16
  %374 = load i32, ptr %353, align 4, !tbaa !5
  %375 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %365, ptr noundef nonnull %.str.5.sink261, i32 noundef %366, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.1, i32 noundef 102, ptr noundef %369, ptr noundef %371, ptr noundef %373, i32 noundef %374) #18
  call void @exit(i32 noundef 1) #19
  unreachable

376:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, i8 0, i64 24, i1 false)
  %377 = load i32, ptr @test_count, align 4, !tbaa !5
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr @test_count, align 4, !tbaa !5
  %379 = load i32, ptr %236, align 8, !tbaa !48
  %380 = load i32, ptr %237, align 8, !tbaa !48
  %381 = add i32 %380, %379
  %382 = call i32 @s2n_alloc(ptr noundef nonnull %12, i32 noundef %381) #16
  %383 = icmp eq i32 %382, -1
  br i1 %383, label %384, label %408

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

391:                                              ; preds = %384
  %392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %393 = call i32 @fileno(ptr noundef %392) #16
  %394 = call i32 @isatty(i32 noundef %393) #16
  %.not142 = icmp eq i32 %394, 0
  br i1 %.not142, label %395, label %396

395:                                              ; preds = %391, %384
  br label %396

396:                                              ; preds = %391, %395
  %.str.5.sink272 = phi ptr [ @.str.5, %395 ], [ @.str.2, %391 ]
  store i32 %386, ptr %385, align 4, !tbaa !5
  %397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %398 = load i32, ptr @test_count, align 4, !tbaa !5
  %399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %400 = load i32, ptr %399, align 4, !tbaa !5
  %401 = call ptr @s2n_strerror(i32 noundef %400, ptr noundef nonnull @.str.4) #16
  %402 = load i32, ptr %399, align 4, !tbaa !5
  %403 = call ptr @s2n_strerror_debug(i32 noundef %402, ptr noundef nonnull @.str.4) #16
  %404 = load i32, ptr %385, align 4, !tbaa !5
  %405 = call ptr @strerror(i32 noundef %404) #16
  %406 = load i32, ptr %385, align 4, !tbaa !5
  %407 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %397, ptr noundef nonnull %.str.5.sink272, i32 noundef %398, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 106, ptr noundef %401, ptr noundef %403, ptr noundef %405, i32 noundef %406) #18
  call void @exit(i32 noundef 1) #19
  unreachable

408:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %13) #16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %13, i8 0, i64 40, i1 false)
  %409 = load i32, ptr @test_count, align 4, !tbaa !5
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr @test_count, align 4, !tbaa !5
  %411 = call i32 @s2n_stuffer_init(ptr noundef nonnull %13, ptr noundef nonnull %12) #16
  %412 = icmp eq i32 %411, -1
  br i1 %412, label %413, label %437

413:                                              ; preds = %408
  %414 = tail call ptr @__errno_location() #17
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %417 = call i32 @s2n_print_stacktrace(ptr noundef %416) #16
  %418 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %419 = trunc nuw i8 %418 to i1
  br i1 %419, label %420, label %424

420:                                              ; preds = %413
  %421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %422 = call i32 @fileno(ptr noundef %421) #16
  %423 = call i32 @isatty(i32 noundef %422) #16
  %.not141 = icmp eq i32 %423, 0
  br i1 %.not141, label %424, label %425

424:                                              ; preds = %420, %413
  br label %425

425:                                              ; preds = %420, %424
  %.str.5.sink283 = phi ptr [ @.str.5, %424 ], [ @.str.2, %420 ]
  store i32 %415, ptr %414, align 4, !tbaa !5
  %426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %427 = load i32, ptr @test_count, align 4, !tbaa !5
  %428 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %429 = load i32, ptr %428, align 4, !tbaa !5
  %430 = call ptr @s2n_strerror(i32 noundef %429, ptr noundef nonnull @.str.4) #16
  %431 = load i32, ptr %428, align 4, !tbaa !5
  %432 = call ptr @s2n_strerror_debug(i32 noundef %431, ptr noundef nonnull @.str.4) #16
  %433 = load i32, ptr %414, align 4, !tbaa !5
  %434 = call ptr @strerror(i32 noundef %433) #16
  %435 = load i32, ptr %414, align 4, !tbaa !5
  %436 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %426, ptr noundef nonnull %.str.5.sink283, i32 noundef %427, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 108, ptr noundef %430, ptr noundef %432, ptr noundef %434, i32 noundef %435) #18
  call void @exit(i32 noundef 1) #19
  unreachable

437:                                              ; preds = %408
  %438 = load i32, ptr @test_count, align 4, !tbaa !5
  %439 = add nsw i32 %438, 1
  store i32 %439, ptr @test_count, align 4, !tbaa !5
  %440 = call i32 @s2n_stuffer_write(ptr noundef nonnull %13, ptr noundef nonnull %10) #16
  %441 = icmp eq i32 %440, -1
  br i1 %441, label %442, label %466

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

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

453:                                              ; preds = %449, %442
  br label %454

454:                                              ; preds = %449, %453
  %.str.5.sink294 = phi ptr [ @.str.5, %453 ], [ @.str.2, %449 ]
  store i32 %444, ptr %443, align 4, !tbaa !5
  %455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %456 = load i32, ptr @test_count, align 4, !tbaa !5
  %457 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %458 = load i32, ptr %457, align 4, !tbaa !5
  %459 = call ptr @s2n_strerror(i32 noundef %458, ptr noundef nonnull @.str.4) #16
  %460 = load i32, ptr %457, align 4, !tbaa !5
  %461 = call ptr @s2n_strerror_debug(i32 noundef %460, ptr noundef nonnull @.str.4) #16
  %462 = load i32, ptr %443, align 4, !tbaa !5
  %463 = call ptr @strerror(i32 noundef %462) #16
  %464 = load i32, ptr %443, align 4, !tbaa !5
  %465 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %455, ptr noundef nonnull %.str.5.sink294, i32 noundef %456, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 109, ptr noundef %459, ptr noundef %461, ptr noundef %463, i32 noundef %464) #18
  call void @exit(i32 noundef 1) #19
  unreachable

466:                                              ; preds = %437
  %467 = load i32, ptr @test_count, align 4, !tbaa !5
  %468 = add nsw i32 %467, 1
  store i32 %468, ptr @test_count, align 4, !tbaa !5
  %469 = call i32 @s2n_stuffer_write(ptr noundef nonnull %13, ptr noundef nonnull %11) #16
  %470 = icmp eq i32 %469, -1
  br i1 %470, label %471, label %495

471:                                              ; preds = %466
  %472 = tail call ptr @__errno_location() #17
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = load ptr, ptr @stderr, align 8, !tbaa !9
  %475 = call i32 @s2n_print_stacktrace(ptr noundef %474) #16
  %476 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %477 = trunc nuw i8 %476 to i1
  br i1 %477, label %478, label %482

478:                                              ; preds = %471
  %479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %480 = call i32 @fileno(ptr noundef %479) #16
  %481 = call i32 @isatty(i32 noundef %480) #16
  %.not139 = icmp eq i32 %481, 0
  br i1 %.not139, label %482, label %483

482:                                              ; preds = %478, %471
  br label %483

483:                                              ; preds = %478, %482
  %.str.5.sink305 = phi ptr [ @.str.5, %482 ], [ @.str.2, %478 ]
  store i32 %473, ptr %472, align 4, !tbaa !5
  %484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %485 = load i32, ptr @test_count, align 4, !tbaa !5
  %486 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %487 = load i32, ptr %486, align 4, !tbaa !5
  %488 = call ptr @s2n_strerror(i32 noundef %487, ptr noundef nonnull @.str.4) #16
  %489 = load i32, ptr %486, align 4, !tbaa !5
  %490 = call ptr @s2n_strerror_debug(i32 noundef %489, ptr noundef nonnull @.str.4) #16
  %491 = load i32, ptr %472, align 4, !tbaa !5
  %492 = call ptr @strerror(i32 noundef %491) #16
  %493 = load i32, ptr %472, align 4, !tbaa !5
  %494 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %484, ptr noundef nonnull %.str.5.sink305, i32 noundef %485, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 110, ptr noundef %488, ptr noundef %490, ptr noundef %492, i32 noundef %493) #18
  call void @exit(i32 noundef 1) #19
  unreachable

495:                                              ; preds = %466
  %496 = getelementptr inbounds i8, ptr %250, i64 1618
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %496, ptr noundef nonnull align 16 dereferenceable(32) %4, i64 32, i1 false)
  %497 = getelementptr inbounds i8, ptr %250, i64 1650
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %497, ptr noundef nonnull align 16 dereferenceable(32) %5, i64 32, i1 false)
  %498 = load i32, ptr @test_count, align 4, !tbaa !5
  %499 = add nsw i32 %498, 1
  store i32 %499, ptr @test_count, align 4, !tbaa !5
  %500 = getelementptr inbounds i8, ptr %250, i64 1096
  %501 = load i32, ptr %9, align 4, !tbaa !5
  %502 = call i32 @s2n_alloc(ptr noundef nonnull %500, i32 noundef %501) #16
  %503 = icmp eq i32 %502, -1
  br i1 %503, label %504, label %528

504:                                              ; preds = %495
  %505 = tail call ptr @__errno_location() #17
  %506 = load i32, ptr %505, align 4, !tbaa !5
  %507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %508 = call i32 @s2n_print_stacktrace(ptr noundef %507) #16
  %509 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %510 = trunc nuw i8 %509 to i1
  br i1 %510, label %511, label %515

511:                                              ; preds = %504
  %512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %513 = call i32 @fileno(ptr noundef %512) #16
  %514 = call i32 @isatty(i32 noundef %513) #16
  %.not138 = icmp eq i32 %514, 0
  br i1 %.not138, label %515, label %516

515:                                              ; preds = %511, %504
  br label %516

516:                                              ; preds = %511, %515
  %.str.5.sink316 = phi ptr [ @.str.5, %515 ], [ @.str.2, %511 ]
  store i32 %506, ptr %505, align 4, !tbaa !5
  %517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %518 = load i32, ptr @test_count, align 4, !tbaa !5
  %519 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %520 = load i32, ptr %519, align 4, !tbaa !5
  %521 = call ptr @s2n_strerror(i32 noundef %520, ptr noundef nonnull @.str.4) #16
  %522 = load i32, ptr %519, align 4, !tbaa !5
  %523 = call ptr @s2n_strerror_debug(i32 noundef %522, ptr noundef nonnull @.str.4) #16
  %524 = load i32, ptr %505, align 4, !tbaa !5
  %525 = call ptr @strerror(i32 noundef %524) #16
  %526 = load i32, ptr %505, align 4, !tbaa !5
  %527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %517, ptr noundef nonnull %.str.5.sink316, i32 noundef %518, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.1, i32 noundef 115, ptr noundef %521, ptr noundef %523, ptr noundef %525, i32 noundef %526) #18
  call void @exit(i32 noundef 1) #19
  unreachable

528:                                              ; preds = %495
  %529 = load i32, ptr %9, align 4, !tbaa !5
  %.not126 = icmp eq i32 %529, 0
  br i1 %.not126, label %558, label %530

530:                                              ; preds = %528
  %531 = load ptr, ptr %500, align 8, !tbaa !49
  %532 = zext i32 %529 to i64
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %531, ptr nonnull align 1 %310, i64 %532, i1 false)
  %533 = icmp eq ptr %531, null
  br i1 %533, label %534, label %558

534:                                              ; preds = %530
  %535 = tail call ptr @__errno_location() #17
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = load ptr, ptr @stderr, align 8, !tbaa !9
  %538 = call i32 @s2n_print_stacktrace(ptr noundef %537) #16
  %539 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %540 = trunc nuw i8 %539 to i1
  br i1 %540, label %541, label %545

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

545:                                              ; preds = %541, %534
  br label %546

546:                                              ; preds = %541, %545
  %.str.5.sink327 = phi ptr [ @.str.5, %545 ], [ @.str.2, %541 ]
  store i32 %536, ptr %535, align 4, !tbaa !5
  %547 = load ptr, ptr @stderr, align 8, !tbaa !9
  %548 = load i32, ptr @test_count, align 4, !tbaa !5
  %549 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %550 = load i32, ptr %549, align 4, !tbaa !5
  %551 = call ptr @s2n_strerror(i32 noundef %550, ptr noundef nonnull @.str.4) #16
  %552 = load i32, ptr %549, align 4, !tbaa !5
  %553 = call ptr @s2n_strerror_debug(i32 noundef %552, ptr noundef nonnull @.str.4) #16
  %554 = load i32, ptr %535, align 4, !tbaa !5
  %555 = call ptr @strerror(i32 noundef %554) #16
  %556 = load i32, ptr %535, align 4, !tbaa !5
  %557 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %547, ptr noundef nonnull %.str.5.sink327, i32 noundef %548, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.1, i32 noundef 117, ptr noundef %551, ptr noundef %553, ptr noundef %555, i32 noundef %556) #18
  call void @exit(i32 noundef 1) #19
  unreachable

558:                                              ; preds = %530, %528
  %559 = load i32, ptr @test_count, align 4, !tbaa !5
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr @test_count, align 4, !tbaa !5
  %561 = call i32 @s2n_prf_hybrid_master_secret(ptr noundef nonnull %250, ptr noundef nonnull %12) #16
  %562 = icmp eq i32 %561, -1
  br i1 %562, label %563, label %587

563:                                              ; preds = %558
  %564 = tail call ptr @__errno_location() #17
  %565 = load i32, ptr %564, align 4, !tbaa !5
  %566 = load ptr, ptr @stderr, align 8, !tbaa !9
  %567 = call i32 @s2n_print_stacktrace(ptr noundef %566) #16
  %568 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %569 = trunc nuw i8 %568 to i1
  br i1 %569, label %570, label %574

570:                                              ; preds = %563
  %571 = load ptr, ptr @stderr, align 8, !tbaa !9
  %572 = call i32 @fileno(ptr noundef %571) #16
  %573 = call i32 @isatty(i32 noundef %572) #16
  %.not136 = icmp eq i32 %573, 0
  br i1 %.not136, label %574, label %575

574:                                              ; preds = %570, %563
  br label %575

575:                                              ; preds = %570, %574
  %.str.5.sink338 = phi ptr [ @.str.5, %574 ], [ @.str.2, %570 ]
  store i32 %565, ptr %564, align 4, !tbaa !5
  %576 = load ptr, ptr @stderr, align 8, !tbaa !9
  %577 = load i32, ptr @test_count, align 4, !tbaa !5
  %578 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %579 = load i32, ptr %578, align 4, !tbaa !5
  %580 = call ptr @s2n_strerror(i32 noundef %579, ptr noundef nonnull @.str.4) #16
  %581 = load i32, ptr %578, align 4, !tbaa !5
  %582 = call ptr @s2n_strerror_debug(i32 noundef %581, ptr noundef nonnull @.str.4) #16
  %583 = load i32, ptr %564, align 4, !tbaa !5
  %584 = call ptr @strerror(i32 noundef %583) #16
  %585 = load i32, ptr %564, align 4, !tbaa !5
  %586 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %576, ptr noundef nonnull %.str.5.sink338, i32 noundef %577, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 119, ptr noundef %580, ptr noundef %582, ptr noundef %584, i32 noundef %585) #18
  call void @exit(i32 noundef 1) #19
  unreachable

587:                                              ; preds = %558
  %588 = load i32, ptr @test_count, align 4, !tbaa !5
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr @test_count, align 4, !tbaa !5
  %590 = getelementptr inbounds i8, ptr %250, i64 288
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(48) %6, ptr noundef nonnull dereferenceable(48) %590, i64 48)
  %591 = icmp eq i32 %bcmp, 0
  br i1 %591, label %616, label %592

592:                                              ; preds = %587
  %593 = tail call ptr @__errno_location() #17
  %594 = load i32, ptr %593, align 4, !tbaa !5
  %595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %596 = call i32 @s2n_print_stacktrace(ptr noundef %595) #16
  %597 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %598 = trunc nuw i8 %597 to i1
  br i1 %598, label %599, label %603

599:                                              ; preds = %592
  %600 = load ptr, ptr @stderr, align 8, !tbaa !9
  %601 = call i32 @fileno(ptr noundef %600) #16
  %602 = call i32 @isatty(i32 noundef %601) #16
  %.not127 = icmp eq i32 %602, 0
  br i1 %.not127, label %603, label %604

603:                                              ; preds = %599, %592
  br label %604

604:                                              ; preds = %599, %603
  %.str.5.sink349 = phi ptr [ @.str.5, %603 ], [ @.str.2, %599 ]
  store i32 %594, ptr %593, align 4, !tbaa !5
  %605 = load ptr, ptr @stderr, align 8, !tbaa !9
  %606 = load i32, ptr @test_count, align 4, !tbaa !5
  %607 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %608 = load i32, ptr %607, align 4, !tbaa !5
  %609 = call ptr @s2n_strerror(i32 noundef %608, ptr noundef nonnull @.str.4) #16
  %610 = load i32, ptr %607, align 4, !tbaa !5
  %611 = call ptr @s2n_strerror_debug(i32 noundef %610, ptr noundef nonnull @.str.4) #16
  %612 = load i32, ptr %593, align 4, !tbaa !5
  %613 = call ptr @strerror(i32 noundef %612) #16
  %614 = load i32, ptr %593, align 4, !tbaa !5
  %615 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %605, ptr noundef nonnull %.str.5.sink349, i32 noundef %606, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.1, i32 noundef 120, ptr noundef %609, ptr noundef %611, ptr noundef %613, i32 noundef %614) #18
  call void @exit(i32 noundef 1) #19
  unreachable

616:                                              ; preds = %587
  %617 = add nsw i32 %588, 2
  store i32 %617, ptr @test_count, align 4, !tbaa !5
  %618 = call i32 @s2n_free(ptr noundef nonnull %500) #16
  %619 = icmp eq i32 %618, -1
  br i1 %619, label %620, label %644

620:                                              ; preds = %616
  %621 = tail call ptr @__errno_location() #17
  %622 = load i32, ptr %621, align 4, !tbaa !5
  %623 = load ptr, ptr @stderr, align 8, !tbaa !9
  %624 = call i32 @s2n_print_stacktrace(ptr noundef %623) #16
  %625 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %626 = trunc nuw i8 %625 to i1
  br i1 %626, label %627, label %631

627:                                              ; preds = %620
  %628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %629 = call i32 @fileno(ptr noundef %628) #16
  %630 = call i32 @isatty(i32 noundef %629) #16
  %.not135 = icmp eq i32 %630, 0
  br i1 %.not135, label %631, label %632

631:                                              ; preds = %627, %620
  br label %632

632:                                              ; preds = %627, %631
  %.str.5.sink360 = phi ptr [ @.str.5, %631 ], [ @.str.2, %627 ]
  store i32 %622, ptr %621, align 4, !tbaa !5
  %633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %634 = load i32, ptr @test_count, align 4, !tbaa !5
  %635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call ptr @s2n_strerror(i32 noundef %636, ptr noundef nonnull @.str.4) #16
  %638 = load i32, ptr %635, align 4, !tbaa !5
  %639 = call ptr @s2n_strerror_debug(i32 noundef %638, ptr noundef nonnull @.str.4) #16
  %640 = load i32, ptr %621, align 4, !tbaa !5
  %641 = call ptr @strerror(i32 noundef %640) #16
  %642 = load i32, ptr %621, align 4, !tbaa !5
  %643 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %633, ptr noundef nonnull %.str.5.sink360, i32 noundef %634, ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.1, i32 noundef 121, ptr noundef %637, ptr noundef %639, ptr noundef %641, i32 noundef %642) #18
  call void @exit(i32 noundef 1) #19
  unreachable

644:                                              ; preds = %616
  %645 = load i32, ptr @test_count, align 4, !tbaa !5
  %646 = add nsw i32 %645, 1
  store i32 %646, ptr @test_count, align 4, !tbaa !5
  %647 = call i32 @s2n_connection_free(ptr noundef nonnull %250) #16
  %648 = icmp eq i32 %647, -1
  br i1 %648, label %649, label %687

649:                                              ; preds = %644
  %650 = tail call ptr @__errno_location() #17
  %651 = load i32, ptr %650, align 4, !tbaa !5
  %652 = load ptr, ptr @stderr, align 8, !tbaa !9
  %653 = call i32 @s2n_print_stacktrace(ptr noundef %652) #16
  %654 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %655 = trunc nuw i8 %654 to i1
  br i1 %655, label %656, label %660

656:                                              ; preds = %649
  %657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %658 = call i32 @fileno(ptr noundef %657) #16
  %659 = call i32 @isatty(i32 noundef %658) #16
  %.not134 = icmp eq i32 %659, 0
  br i1 %.not134, label %660, label %661

660:                                              ; preds = %656, %649
  br label %661

661:                                              ; preds = %656, %660
  %.str.5.sink371 = phi ptr [ @.str.5, %660 ], [ @.str.2, %656 ]
  store i32 %651, ptr %650, align 4, !tbaa !5
  %662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %663 = load i32, ptr @test_count, align 4, !tbaa !5
  %664 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %665 = load i32, ptr %664, align 4, !tbaa !5
  %666 = call ptr @s2n_strerror(i32 noundef %665, ptr noundef nonnull @.str.4) #16
  %667 = load i32, ptr %664, align 4, !tbaa !5
  %668 = call ptr @s2n_strerror_debug(i32 noundef %667, ptr noundef nonnull @.str.4) #16
  %669 = load i32, ptr %650, align 4, !tbaa !5
  %670 = call ptr @strerror(i32 noundef %669) #16
  %671 = load i32, ptr %650, align 4, !tbaa !5
  %672 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %662, ptr noundef nonnull %.str.5.sink371, i32 noundef %663, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.1, i32 noundef 122, ptr noundef %666, ptr noundef %668, ptr noundef %670, i32 noundef %671) #18
  call void @exit(i32 noundef 1) #19
  unreachable

.thread.sink.split:                               ; preds = %244, %241
  %.str.21.sink = phi ptr [ @.str.20, %241 ], [ @.str.21, %244 ]
  %.sink387 = phi ptr [ getelementptr inbounds (i8, ptr @.str.20, i64 21), %241 ], [ getelementptr inbounds (i8, ptr @.str.21, i64 21), %244 ]
  %673 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr %.str.21.sink, ptr %673, align 8, !tbaa !50
  %674 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %.sink387, i32 noundef 47) #21
  %.not119 = icmp eq ptr %674, null
  %675 = getelementptr inbounds i8, ptr %674, i64 1
  %676 = select i1 %.not119, ptr %.sink387, ptr %675
  %677 = getelementptr inbounds i8, ptr %673, i64 8
  store ptr %676, ptr %677, align 8, !tbaa !52
  %678 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 402653194, ptr %678, align 4, !tbaa !5
  %679 = call i32 @s2n_calculate_stacktrace() #16
  br label %.thread

.thread:                                          ; preds = %238, %.thread.sink.split
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #16
  br label %.thread160

.thread155.sink.split:                            ; preds = %307, %304, %288, %285
  %.str.25.sink = phi ptr [ @.str.25, %285 ], [ @.str.26, %288 ], [ @.str.31, %304 ], [ @.str.32, %307 ]
  %.sink396 = phi ptr [ getelementptr inbounds (i8, ptr @.str.25, i64 21), %285 ], [ getelementptr inbounds (i8, ptr @.str.26, i64 21), %288 ], [ getelementptr inbounds (i8, ptr @.str.31, i64 21), %304 ], [ getelementptr inbounds (i8, ptr @.str.32, i64 21), %307 ]
  %.sink = phi i32 [ 402653194, %285 ], [ 402653193, %288 ], [ 402653194, %304 ], [ 402653193, %307 ]
  %680 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_s2n_debug_info)
  store ptr %.str.25.sink, ptr %680, align 8, !tbaa !50
  %681 = call ptr @strrchr(ptr noundef nonnull dereferenceable(1) %.sink396, i32 noundef 47) #21
  %.not120 = icmp eq ptr %681, null
  %682 = getelementptr inbounds i8, ptr %681, i64 1
  %683 = select i1 %.not120, ptr %.sink396, ptr %682
  %684 = getelementptr inbounds i8, ptr %680, i64 8
  store ptr %683, ptr %684, align 8, !tbaa !52
  %685 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 %.sink, ptr %685, align 4, !tbaa !5
  %686 = call i32 @s2n_calculate_stacktrace() #16
  br label %.thread155

.thread155:                                       ; preds = %276, %282, %292, %295, %298, %301, %311, %314, %.thread155.sink.split
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #16
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #16
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #16
  br label %.thread160

687:                                              ; preds = %644
  call void @free(ptr noundef nonnull %291) #16
  call void @free(ptr noundef nonnull %310) #16
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %13) #16
  %688 = call i32 @s2n_free(ptr noundef nonnull %12) #16
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #16
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #16
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #16
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #16
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #16
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #16
  %689 = add nuw nsw i32 %.093162, 1
  %exitcond = icmp eq i32 %689, 10
  br i1 %exitcond, label %690, label %238, !llvm.loop !53

690:                                              ; preds = %687
  %691 = call i32 @FindMarker(ptr noundef nonnull %207, ptr noundef nonnull @.str.18)
  %692 = icmp eq i32 %691, 0
  br i1 %692, label %693, label %717

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

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

704:                                              ; preds = %700, %693
  br label %705

705:                                              ; preds = %700, %704
  %.str.5.sink399 = phi ptr [ @.str.5, %704 ], [ @.str.2, %700 ]
  store i32 %695, ptr %694, align 4, !tbaa !5
  %706 = load ptr, ptr @stderr, align 8, !tbaa !9
  %707 = load i32, ptr @test_count, align 4, !tbaa !5
  %708 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %709 = load i32, ptr %708, align 4, !tbaa !5
  %710 = call ptr @s2n_strerror(i32 noundef %709, ptr noundef nonnull @.str.4) #16
  %711 = load i32, ptr %708, align 4, !tbaa !5
  %712 = call ptr @s2n_strerror_debug(i32 noundef %711, ptr noundef nonnull @.str.4) #16
  %713 = load i32, ptr %694, align 4, !tbaa !5
  %714 = call ptr @strerror(i32 noundef %713) #16
  %715 = load i32, ptr %694, align 4, !tbaa !5
  %716 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %706, ptr noundef nonnull %.str.5.sink399, i32 noundef %707, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.1, i32 noundef 129, ptr noundef %710, ptr noundef %712, ptr noundef %714, i32 noundef %715) #18
  call void @exit(i32 noundef 1) #19
  unreachable

717:                                              ; preds = %690
  %718 = call i32 @fclose(ptr noundef nonnull %207)
  %719 = call i32 @s2n_cleanup() #16
  %720 = icmp eq i32 %719, -1
  br i1 %720, label %721, label %745

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

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

732:                                              ; preds = %728, %721
  br label %733

733:                                              ; preds = %728, %732
  %.str.5.sink411 = phi ptr [ @.str.5, %732 ], [ @.str.2, %728 ]
  store i32 %723, ptr %722, align 4, !tbaa !5
  %734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %735 = load i32, ptr @test_count, align 4, !tbaa !5
  %736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %737 = load i32, ptr %736, align 4, !tbaa !5
  %738 = call ptr @s2n_strerror(i32 noundef %737, ptr noundef nonnull @.str.4) #16
  %739 = load i32, ptr %736, align 4, !tbaa !5
  %740 = call ptr @s2n_strerror_debug(i32 noundef %739, ptr noundef nonnull @.str.4) #16
  %741 = load i32, ptr %722, align 4, !tbaa !5
  %742 = call ptr @strerror(i32 noundef %741) #16
  %743 = load i32, ptr %722, align 4, !tbaa !5
  %744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %734, ptr noundef nonnull %.str.5.sink411, i32 noundef %735, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 133, ptr noundef %738, ptr noundef %740, ptr noundef %742, i32 noundef %743) #18
  call void @exit(i32 noundef 1) #19
  unreachable

745:                                              ; preds = %717
  %746 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #16
  %747 = icmp eq i32 %746, -1
  br i1 %747, label %748, label %772

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

755:                                              ; preds = %748
  %756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %757 = call i32 @fileno(ptr noundef %756) #16
  %758 = call i32 @isatty(i32 noundef %757) #16
  %.not131 = icmp eq i32 %758, 0
  br i1 %.not131, label %759, label %760

759:                                              ; preds = %755, %748
  br label %760

760:                                              ; preds = %755, %759
  %.str.5.sink423 = phi ptr [ @.str.5, %759 ], [ @.str.2, %755 ]
  store i32 %750, ptr %749, align 4, !tbaa !5
  %761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %762 = load i32, ptr @test_count, align 4, !tbaa !5
  %763 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %764 = load i32, ptr %763, align 4, !tbaa !5
  %765 = call ptr @s2n_strerror(i32 noundef %764, ptr noundef nonnull @.str.4) #16
  %766 = load i32, ptr %763, align 4, !tbaa !5
  %767 = call ptr @s2n_strerror_debug(i32 noundef %766, ptr noundef nonnull @.str.4) #16
  %768 = load i32, ptr %749, align 4, !tbaa !5
  %769 = call ptr @strerror(i32 noundef %768) #16
  %770 = load i32, ptr %749, align 4, !tbaa !5
  %771 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %761, ptr noundef nonnull %.str.5.sink423, i32 noundef %762, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 133, ptr noundef %765, ptr noundef %767, ptr noundef %769, i32 noundef %770) #18
  call void @exit(i32 noundef 1) #19
  unreachable

772:                                              ; preds = %745
  %773 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %774 = trunc nuw i8 %773 to i1
  br i1 %774, label %775, label %786

775:                                              ; preds = %772
  %776 = load ptr, ptr @stdout, align 8, !tbaa !9
  %777 = call i32 @fileno(ptr noundef %776) #16
  %778 = call i32 @isatty(i32 noundef %777) #16
  %.not128 = icmp eq i32 %778, 0
  br i1 %.not128, label %786, label %779

779:                                              ; preds = %775
  %780 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not130 = icmp eq i32 %780, 0
  %781 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not130, label %784, label %782

782:                                              ; preds = %779
  %783 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %781, ptr noundef nonnull @.str.11, i32 noundef %780) #16
  br label %.thread160

784:                                              ; preds = %779
  %785 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %781, ptr noundef nonnull @.str.12) #16
  br label %.thread160

786:                                              ; preds = %775, %772
  %787 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not129 = icmp eq i32 %787, 0
  %788 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not129, label %791, label %789

789:                                              ; preds = %786
  %790 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %788, ptr noundef nonnull @.str.13, i32 noundef %787) #16
  br label %.thread160

791:                                              ; preds = %786
  %792 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %788, ptr noundef nonnull @.str.14) #16
  br label %.thread160

.thread160:                                       ; preds = %.thread, %.thread155, %784, %782, %791, %789
  %.6 = phi i32 [ 0, %789 ], [ 0, %791 ], [ 0, %782 ], [ 0, %784 ], [ -1, %.thread155 ], [ -1, %.thread ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #16
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #16
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #16
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) #16
  br label %793

793:                                              ; preds = %197, %195, %204, %202, %.thread160
  %.7 = phi i32 [ %.6, %.thread160 ], [ 0, %202 ], [ 0, %204 ], [ 0, %195 ], [ 0, %197 ]
  ret i32 %.7
}

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

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

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) local_unnamed_addr #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

declare i32 @s2n_disable_tls13_in_test(...) local_unnamed_addr #2

declare zeroext i1 @s2n_pq_is_enabled() local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #1

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @FindMarker(ptr noundef, ptr noundef) local_unnamed_addr #8

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) local_unnamed_addr #2

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

declare i32 @s2n_calculate_stacktrace() local_unnamed_addr #2

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @ReadHex(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #10

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

declare i32 @s2n_blob_init(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @s2n_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_alloc(ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @s2n_stuffer_init(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @s2n_stuffer_write(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #12

declare i32 @s2n_prf_hybrid_master_secret(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #13

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

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #14

; 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) #15

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #12 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #13 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #14 = { nofree nounwind willreturn memory(argmem: read) }
attributes #15 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #16 = { nounwind }
attributes #17 = { nounwind willreturn memory(none) }
attributes #18 = { cold nounwind }
attributes #19 = { noreturn nounwind }
attributes #20 = { nounwind allocsize(0) }
attributes #21 = { nounwind willreturn memory(read) }

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

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


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