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

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

%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_tls13_key_schedule_test_case = type { i32, i32, ptr, 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.0, i32 }
%union.anon.0 = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_sig_scheme_list = type { [128 x i16], i8 }
%struct.s2n_psk_parameters = type { i32, %struct.s2n_array, i16, i16, ptr, i32 }
%struct.s2n_array = type { %struct.s2n_blob, i32, i32 }
%struct.s2n_handshake = type { %struct.s2n_stuffer, ptr, [8 x i8], [48 x i8], [48 x i8], i8, i32, i32, i32, i32, %struct.s2n_offered_early_data, i8, i32 }
%struct.s2n_offered_early_data = type { ptr }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }
%struct.s2n_result = type { i32 }
%struct.s2n_test_secrets = type { [6 x [48 x i8]], [6 x %struct.s2n_blob] }
%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 }
%union.anon = type { %struct.s2n_hash_evp_digest }
%struct.s2n_hash_evp_digest = type { %struct.s2n_evp_digest, %struct.s2n_evp_digest }
%struct.s2n_evp_digest = type { ptr, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@s2n_errno = external thread_local global i32, align 4
@extract_methods = external hidden global [4 x ptr], align 16
@derive_methods = external hidden global [4 x [2 x ptr]], align 16
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str.54 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [86 x i8], align 1
@stderr = external global ptr, align 8
@.str.56 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [39 x i8], align 1
@cipher_preferences_test_all_tls13 = external constant %struct.s2n_cipher_preferences, align 8
@__const.main.modes = external hidden unnamed_addr constant [2 x i32], align 4
@__const.main.early_data_req_states = external hidden unnamed_addr constant [2 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

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

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

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

declare i32 @s2n_conn_get_current_message_type(ptr noundef) #5

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #4 {
  %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 ptr, align 8
  %10 = alloca [2 x i32], align 4
  %11 = alloca [2 x i8], align 1
  %12 = alloca [2000 x %struct.s2n_tls13_key_schedule_test_case], align 16
  %13 = alloca i64, align 8
  %14 = alloca %struct.s2n_connection, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca %struct.s2n_tls13_key_schedule_test_case, align 8
  %21 = alloca i32, align 4
  %22 = alloca %struct.s2n_result, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca %struct.s2n_connection, align 8
  %27 = alloca %struct.s2n_result, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %struct.s2n_result, align 4
  %32 = alloca i32, align 4
  %33 = alloca %struct.s2n_connection, align 8
  %34 = alloca %struct.s2n_result, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %struct.s2n_result, align 4
  %39 = alloca i32, align 4
  %40 = alloca [64 x i8], align 16
  %41 = alloca i64, align 8
  %42 = alloca i32, align 4
  %43 = alloca i64, align 8
  %44 = alloca [32 x i8], align 16
  %45 = alloca i64, align 8
  %46 = alloca i32, align 4
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca ptr, align 8
  %50 = alloca %struct.s2n_result, align 4
  %51 = alloca i32, align 4
  %52 = alloca %struct.s2n_test_secrets, align 8
  %53 = alloca i32, align 4
  %54 = alloca %struct.s2n_result, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca %struct.s2n_result, align 4
  %70 = alloca i32, align 4
  %71 = alloca %struct.s2n_result, align 4
  %72 = alloca i32, align 4
  %73 = alloca %struct.s2n_result, align 4
  %74 = alloca i32, align 4
  %75 = alloca %struct.s2n_result, align 4
  %76 = alloca i64, align 8
  %77 = alloca i32, align 4
  %78 = alloca i64, align 8
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = 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 %82

82:                                               ; preds = %2
  br label %83

83:                                               ; preds = %82
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %84 = load ptr, ptr @stdout, align 8, !tbaa !9
  %85 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %84, ptr noundef @.str.54, ptr noundef @.str.55) #10
  %86 = load ptr, ptr @stdout, align 8, !tbaa !9
  %87 = call i32 @fflush(ptr noundef %86)
  br label %88

88:                                               ; preds = %83
  %89 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %90 = icmp eq i32 %89, -1
  br i1 %90, label %91, label %142

91:                                               ; preds = %88
  br label %92

92:                                               ; preds = %91
  br label %93

93:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  %94 = call ptr @__errno_location() #11
  %95 = load i32, ptr %94, align 4, !tbaa !5
  store i32 %95, ptr %6, align 4, !tbaa !5
  %96 = load ptr, ptr @stderr, align 8, !tbaa !9
  %97 = call i32 @s2n_print_stacktrace(ptr noundef %96)
  %98 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %99 = trunc i8 %98 to i1
  br i1 %99, label %100, label %122

100:                                              ; preds = %93
  %101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %102 = call i32 @fileno(ptr noundef %101) #10
  %103 = call i32 @isatty(i32 noundef %102) #10
  %104 = icmp ne i32 %103, 0
  br i1 %104, label %105, label %122

105:                                              ; preds = %100
  %106 = load i32, ptr %6, align 4, !tbaa !5
  %107 = call ptr @__errno_location() #11
  store i32 %106, ptr %107, align 4, !tbaa !5
  %108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %109 = load i32, ptr @test_count, align 4, !tbaa !5
  %110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = call ptr @s2n_strerror(i32 noundef %111, ptr noundef @.str.58)
  %113 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = call ptr @s2n_strerror_debug(i32 noundef %114, ptr noundef @.str.58)
  %116 = call ptr @__errno_location() #11
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %118 = call ptr @strerror(i32 noundef %117) #10
  %119 = call ptr @__errno_location() #11
  %120 = load i32, ptr %119, align 4, !tbaa !5
  %121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %108, ptr noundef @.str.56, i32 noundef %109, ptr noundef @.str.57, ptr noundef @.str.55, i32 noundef 95, ptr noundef %112, ptr noundef %115, ptr noundef %118, i32 noundef %120) #10
  br label %139

122:                                              ; preds = %100, %93
  %123 = load i32, ptr %6, align 4, !tbaa !5
  %124 = call ptr @__errno_location() #11
  store i32 %123, ptr %124, align 4, !tbaa !5
  %125 = load ptr, ptr @stderr, align 8, !tbaa !9
  %126 = load i32, ptr @test_count, align 4, !tbaa !5
  %127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = call ptr @s2n_strerror(i32 noundef %128, ptr noundef @.str.58)
  %130 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %131 = load i32, ptr %130, align 4, !tbaa !5
  %132 = call ptr @s2n_strerror_debug(i32 noundef %131, ptr noundef @.str.58)
  %133 = call ptr @__errno_location() #11
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = call ptr @strerror(i32 noundef %134) #10
  %136 = call ptr @__errno_location() #11
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %138 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %125, ptr noundef @.str.59, i32 noundef %126, ptr noundef @.str.57, ptr noundef @.str.55, i32 noundef 95, ptr noundef %129, ptr noundef %132, ptr noundef %135, i32 noundef %137) #10
  br label %139

139:                                              ; preds = %122, %105
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %140

140:                                              ; preds = %139
  call void @exit(i32 noundef 1) #12
  unreachable

141:                                              ; No predecessors!
  br label %142

142:                                              ; preds = %141, %88
  br label %143

143:                                              ; preds = %142
  br label %144

144:                                              ; preds = %143
  %145 = load i32, ptr @test_count, align 4, !tbaa !5
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr @test_count, align 4, !tbaa !5
  %147 = call i32 @s2n_enable_atexit()
  %148 = icmp eq i32 %147, -1
  br i1 %148, label %149, label %200

149:                                              ; preds = %144
  br label %150

150:                                              ; preds = %149
  br label %151

151:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #10
  %152 = call ptr @__errno_location() #11
  %153 = load i32, ptr %152, align 4, !tbaa !5
  store i32 %153, ptr %7, align 4, !tbaa !5
  %154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %155 = call i32 @s2n_print_stacktrace(ptr noundef %154)
  %156 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %157 = trunc i8 %156 to i1
  br i1 %157, label %158, label %180

158:                                              ; preds = %151
  %159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %160 = call i32 @fileno(ptr noundef %159) #10
  %161 = call i32 @isatty(i32 noundef %160) #10
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %180

163:                                              ; preds = %158
  %164 = load i32, ptr %7, align 4, !tbaa !5
  %165 = call ptr @__errno_location() #11
  store i32 %164, ptr %165, align 4, !tbaa !5
  %166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %167 = load i32, ptr @test_count, align 4, !tbaa !5
  %168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = call ptr @s2n_strerror(i32 noundef %169, ptr noundef @.str.58)
  %171 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %172 = load i32, ptr %171, align 4, !tbaa !5
  %173 = call ptr @s2n_strerror_debug(i32 noundef %172, ptr noundef @.str.58)
  %174 = call ptr @__errno_location() #11
  %175 = load i32, ptr %174, align 4, !tbaa !5
  %176 = call ptr @strerror(i32 noundef %175) #10
  %177 = call ptr @__errno_location() #11
  %178 = load i32, ptr %177, align 4, !tbaa !5
  %179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %166, ptr noundef @.str.56, i32 noundef %167, ptr noundef @.str.60, ptr noundef @.str.55, i32 noundef 95, ptr noundef %170, ptr noundef %173, ptr noundef %176, i32 noundef %178) #10
  br label %197

180:                                              ; preds = %158, %151
  %181 = load i32, ptr %7, align 4, !tbaa !5
  %182 = call ptr @__errno_location() #11
  store i32 %181, ptr %182, align 4, !tbaa !5
  %183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %184 = load i32, ptr @test_count, align 4, !tbaa !5
  %185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %186 = load i32, ptr %185, align 4, !tbaa !5
  %187 = call ptr @s2n_strerror(i32 noundef %186, ptr noundef @.str.58)
  %188 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %189 = load i32, ptr %188, align 4, !tbaa !5
  %190 = call ptr @s2n_strerror_debug(i32 noundef %189, ptr noundef @.str.58)
  %191 = call ptr @__errno_location() #11
  %192 = load i32, ptr %191, align 4, !tbaa !5
  %193 = call ptr @strerror(i32 noundef %192) #10
  %194 = call ptr @__errno_location() #11
  %195 = load i32, ptr %194, align 4, !tbaa !5
  %196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef @.str.59, i32 noundef %184, ptr noundef @.str.60, ptr noundef @.str.55, i32 noundef 95, ptr noundef %187, ptr noundef %190, ptr noundef %193, i32 noundef %195) #10
  br label %197

197:                                              ; preds = %180, %163
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %198

198:                                              ; preds = %197
  call void @exit(i32 noundef 1) #12
  unreachable

199:                                              ; No predecessors!
  br label %200

200:                                              ; preds = %199, %144
  br label %201

201:                                              ; preds = %200
  br label %202

202:                                              ; preds = %201
  br label %203

203:                                              ; preds = %202
  %204 = call i32 @s2n_init()
  %205 = icmp eq i32 %204, -1
  br i1 %205, label %206, label %257

206:                                              ; preds = %203
  br label %207

207:                                              ; preds = %206
  br label %208

208:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %209 = call ptr @__errno_location() #11
  %210 = load i32, ptr %209, align 4, !tbaa !5
  store i32 %210, ptr %8, align 4, !tbaa !5
  %211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %212 = call i32 @s2n_print_stacktrace(ptr noundef %211)
  %213 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %214 = trunc i8 %213 to i1
  br i1 %214, label %215, label %237

215:                                              ; preds = %208
  %216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %217 = call i32 @fileno(ptr noundef %216) #10
  %218 = call i32 @isatty(i32 noundef %217) #10
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %237

220:                                              ; preds = %215
  %221 = load i32, ptr %8, align 4, !tbaa !5
  %222 = call ptr @__errno_location() #11
  store i32 %221, ptr %222, align 4, !tbaa !5
  %223 = load ptr, ptr @stderr, align 8, !tbaa !9
  %224 = load i32, ptr @test_count, align 4, !tbaa !5
  %225 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror(i32 noundef %226, ptr noundef @.str.58)
  %228 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = call ptr @s2n_strerror_debug(i32 noundef %229, ptr noundef @.str.58)
  %231 = call ptr @__errno_location() #11
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = call ptr @strerror(i32 noundef %232) #10
  %234 = call ptr @__errno_location() #11
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %236 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %223, ptr noundef @.str.56, i32 noundef %224, ptr noundef @.str.61, ptr noundef @.str.55, i32 noundef 95, ptr noundef %227, ptr noundef %230, ptr noundef %233, i32 noundef %235) #10
  br label %254

237:                                              ; preds = %215, %208
  %238 = load i32, ptr %8, align 4, !tbaa !5
  %239 = call ptr @__errno_location() #11
  store i32 %238, ptr %239, align 4, !tbaa !5
  %240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %241 = load i32, ptr @test_count, align 4, !tbaa !5
  %242 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %243 = load i32, ptr %242, align 4, !tbaa !5
  %244 = call ptr @s2n_strerror(i32 noundef %243, ptr noundef @.str.58)
  %245 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %246 = load i32, ptr %245, align 4, !tbaa !5
  %247 = call ptr @s2n_strerror_debug(i32 noundef %246, ptr noundef @.str.58)
  %248 = call ptr @__errno_location() #11
  %249 = load i32, ptr %248, align 4, !tbaa !5
  %250 = call ptr @strerror(i32 noundef %249) #10
  %251 = call ptr @__errno_location() #11
  %252 = load i32, ptr %251, align 4, !tbaa !5
  %253 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %240, ptr noundef @.str.59, i32 noundef %241, ptr noundef @.str.61, ptr noundef @.str.55, i32 noundef 95, ptr noundef %244, ptr noundef %247, ptr noundef %250, i32 noundef %252) #10
  br label %254

254:                                              ; preds = %237, %220
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %255

255:                                              ; preds = %254
  call void @exit(i32 noundef 1) #12
  unreachable

256:                                              ; No predecessors!
  br label %257

257:                                              ; preds = %256, %203
  br label %258

258:                                              ; preds = %257
  br label %259

259:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  store ptr @cipher_preferences_test_all_tls13, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %10, ptr align 4 @__const.main.modes, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %11) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %11, ptr align 1 @__const.main.early_data_req_states, i64 2, i1 false)
  call void @llvm.lifetime.start.p0(i64 48000, ptr %12) #10
  call void @llvm.memset.p0.i64(ptr align 16 %12, i8 0, i64 48000, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  store i64 0, ptr %13, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4184, ptr %14) #10
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 4184, i1 false)
  %260 = getelementptr inbounds { i8, i8, i8, 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 }, ptr %14, i32 0, i32 25
  store i8 34, ptr %260, align 4
  %261 = getelementptr inbounds { i8, i8, i8, 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 }, ptr %14, i32 0, i32 54
  %262 = getelementptr inbounds %struct.s2n_handshake, ptr %261, i32 0, i32 7
  store i32 1, ptr %262, align 8
  %263 = getelementptr inbounds %struct.s2n_handshake, ptr %261, i32 0, i32 12
  store i32 2, ptr %263, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %264

264:                                              ; preds = %353, %259
  %265 = load i32, ptr %15, align 4, !tbaa !5
  %266 = icmp ult i32 %265, 256
  br i1 %266, label %268, label %267

267:                                              ; preds = %264
  store i32 24, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  br label %356

268:                                              ; preds = %264
  %269 = load i32, ptr %15, align 4, !tbaa !5
  %270 = getelementptr inbounds %struct.s2n_connection, ptr %14, i32 0, i32 52
  %271 = getelementptr inbounds %struct.s2n_handshake, ptr %270, i32 0, i32 6
  store i32 %269, ptr %271, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  store i64 0, ptr %17, align 8, !tbaa !15
  br label %272

272:                                              ; preds = %349, %268
  %273 = load i64, ptr %17, align 8, !tbaa !15
  %274 = icmp ult i64 %273, 2
  br i1 %274, label %276, label %275

275:                                              ; preds = %272
  store i32 27, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %352

276:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  store i64 0, ptr %18, align 8, !tbaa !15
  br label %277

277:                                              ; preds = %345, %276
  %278 = load i64, ptr %18, align 8, !tbaa !15
  %279 = load ptr, ptr %9, align 8, !tbaa !9
  %280 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %279, i32 0, i32 0
  %281 = load i16, ptr %280, align 8, !tbaa !43
  %282 = zext i16 %281 to i64
  %283 = icmp ult i64 %278, %282
  br i1 %283, label %285, label %284

284:                                              ; preds = %277
  store i32 30, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  br label %348

285:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  store i64 0, ptr %19, align 8, !tbaa !15
  br label %286

286:                                              ; preds = %341, %285
  %287 = load i64, ptr %19, align 8, !tbaa !15
  %288 = icmp ult i64 %287, 2
  br i1 %288, label %290, label %289

289:                                              ; preds = %286
  store i32 33, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %344

290:                                              ; preds = %286
  %291 = call i32 @s2n_conn_get_current_message_type(ptr noundef %14)
  %292 = icmp eq i32 %291, 0
  br i1 %292, label %293, label %294

293:                                              ; preds = %290
  br label %341

294:                                              ; preds = %290
  %295 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef %14, i32 noundef 64)
  br i1 %295, label %296, label %302

296:                                              ; preds = %294
  %297 = load i64, ptr %17, align 8, !tbaa !15
  %298 = getelementptr inbounds [2 x i8], ptr %11, i64 0, i64 %297
  %299 = load i8, ptr %298, align 1, !tbaa !11, !range !13, !noundef !14
  %300 = trunc i8 %299 to i1
  br i1 %300, label %302, label %301

301:                                              ; preds = %296
  br label %341

302:                                              ; preds = %296, %294
  %303 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef %14, i32 noundef 1)
  br i1 %303, label %305, label %304

304:                                              ; preds = %302
  br label %341

305:                                              ; preds = %302
  %306 = load ptr, ptr %9, align 8, !tbaa !9
  %307 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %306, i32 0, i32 1
  %308 = load ptr, ptr %307, align 8, !tbaa !45
  %309 = load i64, ptr %18, align 8, !tbaa !15
  %310 = getelementptr inbounds ptr, ptr %308, i64 %309
  %311 = load ptr, ptr %310, align 8, !tbaa !9
  %312 = load i8, ptr %311, align 8
  %313 = and i8 %312, 1
  %314 = zext i8 %313 to i32
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %317, label %316

316:                                              ; preds = %305
  br label %341

317:                                              ; preds = %305
  %318 = load i64, ptr %13, align 8, !tbaa !15
  %319 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %12, i64 0, i64 %318
  %320 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %20, i32 0, i32 0
  %321 = load i64, ptr %19, align 8, !tbaa !15
  %322 = getelementptr inbounds [2 x i32], ptr %10, i64 0, i64 %321
  %323 = load i32, ptr %322, align 4, !tbaa !5
  store i32 %323, ptr %320, align 8, !tbaa !46
  %324 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %20, i32 0, i32 1
  %325 = load i32, ptr %15, align 4, !tbaa !5
  store i32 %325, ptr %324, align 4, !tbaa !48
  %326 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %20, i32 0, i32 2
  %327 = load ptr, ptr %9, align 8, !tbaa !9
  %328 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %327, i32 0, i32 1
  %329 = load ptr, ptr %328, align 8, !tbaa !45
  %330 = load i64, ptr %18, align 8, !tbaa !15
  %331 = getelementptr inbounds ptr, ptr %329, i64 %330
  %332 = load ptr, ptr %331, align 8, !tbaa !9
  store ptr %332, ptr %326, align 8, !tbaa !49
  %333 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %20, i32 0, i32 3
  %334 = load i64, ptr %17, align 8, !tbaa !15
  %335 = getelementptr inbounds [2 x i8], ptr %11, i64 0, i64 %334
  %336 = load i8, ptr %335, align 1, !tbaa !11, !range !13, !noundef !14
  %337 = trunc i8 %336 to i1
  %338 = zext i1 %337 to i8
  store i8 %338, ptr %333, align 8, !tbaa !50
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %319, ptr align 8 %20, i64 24, i1 false), !tbaa.struct !51
  %339 = load i64, ptr %13, align 8, !tbaa !15
  %340 = add i64 %339, 1
  store i64 %340, ptr %13, align 8, !tbaa !15
  br label %341

341:                                              ; preds = %317, %316, %304, %301, %293
  %342 = load i64, ptr %19, align 8, !tbaa !15
  %343 = add i64 %342, 1
  store i64 %343, ptr %19, align 8, !tbaa !15
  br label %286, !llvm.loop !52

344:                                              ; preds = %289
  br label %345

345:                                              ; preds = %344
  %346 = load i64, ptr %18, align 8, !tbaa !15
  %347 = add i64 %346, 1
  store i64 %347, ptr %18, align 8, !tbaa !15
  br label %277, !llvm.loop !54

348:                                              ; preds = %284
  br label %349

349:                                              ; preds = %348
  %350 = load i64, ptr %17, align 8, !tbaa !15
  %351 = add i64 %350, 1
  store i64 %351, ptr %17, align 8, !tbaa !15
  br label %272, !llvm.loop !55

352:                                              ; preds = %275
  br label %353

353:                                              ; preds = %352
  %354 = load i32, ptr %15, align 4, !tbaa !5
  %355 = add i32 %354, 1
  store i32 %355, ptr %15, align 4, !tbaa !5
  br label %264, !llvm.loop !56

356:                                              ; preds = %267
  br label %357

357:                                              ; preds = %356
  %358 = load i32, ptr @test_count, align 4, !tbaa !5
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr @test_count, align 4, !tbaa !5
  %360 = load i64, ptr %13, align 8, !tbaa !15
  %361 = icmp ugt i64 %360, 0
  br i1 %361, label %415, label %362

362:                                              ; preds = %357
  br label %363

363:                                              ; preds = %362
  br label %364

364:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  %365 = call ptr @__errno_location() #11
  %366 = load i32, ptr %365, align 4, !tbaa !5
  store i32 %366, ptr %21, align 4, !tbaa !5
  %367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %368 = call i32 @s2n_print_stacktrace(ptr noundef %367)
  %369 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %370 = trunc i8 %369 to i1
  br i1 %370, label %371, label %393

371:                                              ; preds = %364
  %372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %373 = call i32 @fileno(ptr noundef %372) #10
  %374 = call i32 @isatty(i32 noundef %373) #10
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %393

376:                                              ; preds = %371
  %377 = load i32, ptr %21, align 4, !tbaa !5
  %378 = call ptr @__errno_location() #11
  store i32 %377, ptr %378, align 4, !tbaa !5
  %379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %380 = load i32, ptr @test_count, align 4, !tbaa !5
  %381 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %382 = load i32, ptr %381, align 4, !tbaa !5
  %383 = call ptr @s2n_strerror(i32 noundef %382, ptr noundef @.str.58)
  %384 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %385 = load i32, ptr %384, align 4, !tbaa !5
  %386 = call ptr @s2n_strerror_debug(i32 noundef %385, ptr noundef @.str.58)
  %387 = call ptr @__errno_location() #11
  %388 = load i32, ptr %387, align 4, !tbaa !5
  %389 = call ptr @strerror(i32 noundef %388) #10
  %390 = call ptr @__errno_location() #11
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %379, ptr noundef @.str.56, i32 noundef %380, ptr noundef @.str.62, ptr noundef @.str.55, i32 noundef 140, ptr noundef %383, ptr noundef %386, ptr noundef %389, i32 noundef %391) #10
  br label %410

393:                                              ; preds = %371, %364
  %394 = load i32, ptr %21, align 4, !tbaa !5
  %395 = call ptr @__errno_location() #11
  store i32 %394, ptr %395, align 4, !tbaa !5
  %396 = load ptr, ptr @stderr, align 8, !tbaa !9
  %397 = load i32, ptr @test_count, align 4, !tbaa !5
  %398 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %399 = load i32, ptr %398, align 4, !tbaa !5
  %400 = call ptr @s2n_strerror(i32 noundef %399, ptr noundef @.str.58)
  %401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %402 = load i32, ptr %401, align 4, !tbaa !5
  %403 = call ptr @s2n_strerror_debug(i32 noundef %402, ptr noundef @.str.58)
  %404 = call ptr @__errno_location() #11
  %405 = load i32, ptr %404, align 4, !tbaa !5
  %406 = call ptr @strerror(i32 noundef %405) #10
  %407 = call ptr @__errno_location() #11
  %408 = load i32, ptr %407, align 4, !tbaa !5
  %409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %396, ptr noundef @.str.59, i32 noundef %397, ptr noundef @.str.62, ptr noundef @.str.55, i32 noundef 140, ptr noundef %400, ptr noundef %403, ptr noundef %406, i32 noundef %408) #10
  br label %410

410:                                              ; preds = %393, %376
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %411

411:                                              ; preds = %410
  br label %412

412:                                              ; preds = %411
  call void @exit(i32 noundef 1) #12
  unreachable

413:                                              ; No predecessors!
  br label %414

414:                                              ; preds = %413
  br label %415

415:                                              ; preds = %414, %357
  br label %416

416:                                              ; preds = %415
  br label %417

417:                                              ; preds = %416
  br label %418

418:                                              ; preds = %417
  br label %419

419:                                              ; preds = %418
  br label %420

420:                                              ; preds = %419
  %421 = load i32, ptr @test_count, align 4, !tbaa !5
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr @test_count, align 4, !tbaa !5
  %423 = call i32 @s2n_tls13_key_schedule_update(ptr noundef null)
  %424 = getelementptr inbounds %struct.s2n_result, ptr %22, i32 0, i32 0
  store i32 %423, ptr %424, align 4
  %425 = getelementptr inbounds %struct.s2n_result, ptr %22, i32 0, i32 0
  %426 = load i32, ptr %425, align 4
  %427 = call zeroext i1 @s2n_result_is_error(i32 %426)
  br i1 %427, label %481, label %428

428:                                              ; preds = %420
  br label %429

429:                                              ; preds = %428
  br label %430

430:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  %431 = call ptr @__errno_location() #11
  %432 = load i32, ptr %431, align 4, !tbaa !5
  store i32 %432, ptr %23, align 4, !tbaa !5
  %433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %434 = call i32 @s2n_print_stacktrace(ptr noundef %433)
  %435 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %436 = trunc i8 %435 to i1
  br i1 %436, label %437, label %459

437:                                              ; preds = %430
  %438 = load ptr, ptr @stderr, align 8, !tbaa !9
  %439 = call i32 @fileno(ptr noundef %438) #10
  %440 = call i32 @isatty(i32 noundef %439) #10
  %441 = icmp ne i32 %440, 0
  br i1 %441, label %442, label %459

442:                                              ; preds = %437
  %443 = load i32, ptr %23, align 4, !tbaa !5
  %444 = call ptr @__errno_location() #11
  store i32 %443, ptr %444, align 4, !tbaa !5
  %445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %446 = load i32, ptr @test_count, align 4, !tbaa !5
  %447 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %448 = load i32, ptr %447, align 4, !tbaa !5
  %449 = call ptr @s2n_strerror(i32 noundef %448, ptr noundef @.str.58)
  %450 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %451 = load i32, ptr %450, align 4, !tbaa !5
  %452 = call ptr @s2n_strerror_debug(i32 noundef %451, ptr noundef @.str.58)
  %453 = call ptr @__errno_location() #11
  %454 = load i32, ptr %453, align 4, !tbaa !5
  %455 = call ptr @strerror(i32 noundef %454) #10
  %456 = call ptr @__errno_location() #11
  %457 = load i32, ptr %456, align 4, !tbaa !5
  %458 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %445, ptr noundef @.str.56, i32 noundef %446, ptr noundef @.str.63, ptr noundef @.str.55, i32 noundef 146, ptr noundef %449, ptr noundef %452, ptr noundef %455, i32 noundef %457) #10
  br label %476

459:                                              ; preds = %437, %430
  %460 = load i32, ptr %23, align 4, !tbaa !5
  %461 = call ptr @__errno_location() #11
  store i32 %460, ptr %461, align 4, !tbaa !5
  %462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %463 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %465, ptr noundef @.str.58)
  %467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %468 = load i32, ptr %467, align 4, !tbaa !5
  %469 = call ptr @s2n_strerror_debug(i32 noundef %468, ptr noundef @.str.58)
  %470 = call ptr @__errno_location() #11
  %471 = load i32, ptr %470, align 4, !tbaa !5
  %472 = call ptr @strerror(i32 noundef %471) #10
  %473 = call ptr @__errno_location() #11
  %474 = load i32, ptr %473, align 4, !tbaa !5
  %475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %462, ptr noundef @.str.59, i32 noundef %463, ptr noundef @.str.63, ptr noundef @.str.55, i32 noundef 146, ptr noundef %466, ptr noundef %469, ptr noundef %472, i32 noundef %474) #10
  br label %476

476:                                              ; preds = %459, %442
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  br label %477

477:                                              ; preds = %476
  br label %478

478:                                              ; preds = %477
  call void @exit(i32 noundef 1) #12
  unreachable

479:                                              ; No predecessors!
  br label %480

480:                                              ; preds = %479
  br label %481

481:                                              ; preds = %480, %420
  br label %482

482:                                              ; preds = %481
  br label %483

483:                                              ; preds = %482
  br label %484

484:                                              ; preds = %483
  %485 = load i32, ptr @test_count, align 4, !tbaa !5
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr @test_count, align 4, !tbaa !5
  %487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %488 = load i32, ptr %487, align 4, !tbaa !5
  %489 = icmp eq i32 %488, 402653193
  br i1 %489, label %543, label %490

490:                                              ; preds = %484
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  %493 = call ptr @__errno_location() #11
  %494 = load i32, ptr %493, align 4, !tbaa !5
  store i32 %494, ptr %24, align 4, !tbaa !5
  %495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %496 = call i32 @s2n_print_stacktrace(ptr noundef %495)
  %497 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %498 = trunc i8 %497 to i1
  br i1 %498, label %499, label %521

499:                                              ; preds = %492
  %500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %501 = call i32 @fileno(ptr noundef %500) #10
  %502 = call i32 @isatty(i32 noundef %501) #10
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %504, label %521

504:                                              ; preds = %499
  %505 = load i32, ptr %24, align 4, !tbaa !5
  %506 = call ptr @__errno_location() #11
  store i32 %505, ptr %506, align 4, !tbaa !5
  %507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %508 = load i32, ptr @test_count, align 4, !tbaa !5
  %509 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %510 = load i32, ptr %509, align 4, !tbaa !5
  %511 = call ptr @s2n_strerror(i32 noundef %510, ptr noundef @.str.58)
  %512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %513 = load i32, ptr %512, align 4, !tbaa !5
  %514 = call ptr @s2n_strerror_debug(i32 noundef %513, ptr noundef @.str.58)
  %515 = call ptr @__errno_location() #11
  %516 = load i32, ptr %515, align 4, !tbaa !5
  %517 = call ptr @strerror(i32 noundef %516) #10
  %518 = call ptr @__errno_location() #11
  %519 = load i32, ptr %518, align 4, !tbaa !5
  %520 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %507, ptr noundef @.str.56, i32 noundef %508, ptr noundef @.str.64, ptr noundef @.str.55, i32 noundef 146, ptr noundef %511, ptr noundef %514, ptr noundef %517, i32 noundef %519) #10
  br label %538

521:                                              ; preds = %499, %492
  %522 = load i32, ptr %24, align 4, !tbaa !5
  %523 = call ptr @__errno_location() #11
  store i32 %522, ptr %523, align 4, !tbaa !5
  %524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %525 = load i32, ptr @test_count, align 4, !tbaa !5
  %526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %527 = load i32, ptr %526, align 4, !tbaa !5
  %528 = call ptr @s2n_strerror(i32 noundef %527, ptr noundef @.str.58)
  %529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %530 = load i32, ptr %529, align 4, !tbaa !5
  %531 = call ptr @s2n_strerror_debug(i32 noundef %530, ptr noundef @.str.58)
  %532 = call ptr @__errno_location() #11
  %533 = load i32, ptr %532, align 4, !tbaa !5
  %534 = call ptr @strerror(i32 noundef %533) #10
  %535 = call ptr @__errno_location() #11
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %524, ptr noundef @.str.59, i32 noundef %525, ptr noundef @.str.64, ptr noundef @.str.55, i32 noundef 146, ptr noundef %528, ptr noundef %531, ptr noundef %534, i32 noundef %536) #10
  br label %538

538:                                              ; preds = %521, %504
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %539

539:                                              ; preds = %538
  br label %540

540:                                              ; preds = %539
  call void @exit(i32 noundef 1) #12
  unreachable

541:                                              ; No predecessors!
  br label %542

542:                                              ; preds = %541
  br label %543

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

544:                                              ; preds = %543
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545
  %547 = load i32, ptr @test_count, align 4, !tbaa !5
  %548 = add nsw i32 %547, 1
  store i32 %548, 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_debug(i32 noundef %550, ptr noundef @.str.58)
  %552 = icmp eq ptr %551, null
  br i1 %552, label %553, label %606

553:                                              ; preds = %546
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  %556 = call ptr @__errno_location() #11
  %557 = load i32, ptr %556, align 4, !tbaa !5
  store i32 %557, ptr %25, align 4, !tbaa !5
  %558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %559 = call i32 @s2n_print_stacktrace(ptr noundef %558)
  %560 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %561 = trunc i8 %560 to i1
  br i1 %561, label %562, label %584

562:                                              ; preds = %555
  %563 = load ptr, ptr @stderr, align 8, !tbaa !9
  %564 = call i32 @fileno(ptr noundef %563) #10
  %565 = call i32 @isatty(i32 noundef %564) #10
  %566 = icmp ne i32 %565, 0
  br i1 %566, label %567, label %584

567:                                              ; preds = %562
  %568 = load i32, ptr %25, align 4, !tbaa !5
  %569 = call ptr @__errno_location() #11
  store i32 %568, ptr %569, align 4, !tbaa !5
  %570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %571 = load i32, ptr @test_count, align 4, !tbaa !5
  %572 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %573 = load i32, ptr %572, align 4, !tbaa !5
  %574 = call ptr @s2n_strerror(i32 noundef %573, ptr noundef @.str.58)
  %575 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %576 = load i32, ptr %575, align 4, !tbaa !5
  %577 = call ptr @s2n_strerror_debug(i32 noundef %576, ptr noundef @.str.58)
  %578 = call ptr @__errno_location() #11
  %579 = load i32, ptr %578, align 4, !tbaa !5
  %580 = call ptr @strerror(i32 noundef %579) #10
  %581 = call ptr @__errno_location() #11
  %582 = load i32, ptr %581, align 4, !tbaa !5
  %583 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %570, ptr noundef @.str.56, i32 noundef %571, ptr noundef @.str.65, ptr noundef @.str.55, i32 noundef 146, ptr noundef %574, ptr noundef %577, ptr noundef %580, i32 noundef %582) #10
  br label %601

584:                                              ; preds = %562, %555
  %585 = load i32, ptr %25, align 4, !tbaa !5
  %586 = call ptr @__errno_location() #11
  store i32 %585, ptr %586, align 4, !tbaa !5
  %587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %588 = load i32, ptr @test_count, align 4, !tbaa !5
  %589 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %590 = load i32, ptr %589, align 4, !tbaa !5
  %591 = call ptr @s2n_strerror(i32 noundef %590, ptr noundef @.str.58)
  %592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %593 = load i32, ptr %592, align 4, !tbaa !5
  %594 = call ptr @s2n_strerror_debug(i32 noundef %593, ptr noundef @.str.58)
  %595 = call ptr @__errno_location() #11
  %596 = load i32, ptr %595, align 4, !tbaa !5
  %597 = call ptr @strerror(i32 noundef %596) #10
  %598 = call ptr @__errno_location() #11
  %599 = load i32, ptr %598, align 4, !tbaa !5
  %600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %587, ptr noundef @.str.59, i32 noundef %588, ptr noundef @.str.65, ptr noundef @.str.55, i32 noundef 146, ptr noundef %591, ptr noundef %594, ptr noundef %597, i32 noundef %599) #10
  br label %601

601:                                              ; preds = %584, %567
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %602

602:                                              ; preds = %601
  br label %603

603:                                              ; preds = %602
  call void @exit(i32 noundef 1) #12
  unreachable

604:                                              ; No predecessors!
  br label %605

605:                                              ; preds = %604
  br label %606

606:                                              ; preds = %605, %546
  br label %607

607:                                              ; preds = %606
  br label %608

608:                                              ; preds = %607
  br label %609

609:                                              ; preds = %608
  br label %610

610:                                              ; preds = %609
  br label %611

611:                                              ; preds = %610
  %612 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %612, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %613 = call ptr @__errno_location() #11
  store i32 0, ptr %613, align 4, !tbaa !5
  br label %614

614:                                              ; preds = %611
  br label %615

615:                                              ; preds = %614
  br label %616

616:                                              ; preds = %615
  br label %617

617:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 4184, ptr %26) #10
  call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 4184, i1 false)
  %618 = getelementptr inbounds { i8, i8, i8, 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 }, ptr %26, i32 0, i32 15
  store i32 1, ptr %618, align 4
  %619 = getelementptr inbounds { i8, i8, i8, 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 }, ptr %26, i32 0, i32 23
  store i8 34, ptr %619, align 2
  %620 = getelementptr inbounds { i8, i8, i8, 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 }, ptr %26, i32 0, i32 91
  store i32 1, ptr %620, align 8
  br label %621

621:                                              ; preds = %617
  br label %622

622:                                              ; preds = %621
  br label %623

623:                                              ; preds = %622
  %624 = load i32, ptr @test_count, align 4, !tbaa !5
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr @test_count, align 4, !tbaa !5
  %626 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %26)
  %627 = getelementptr inbounds %struct.s2n_result, ptr %27, i32 0, i32 0
  store i32 %626, ptr %627, align 4
  %628 = getelementptr inbounds %struct.s2n_result, ptr %27, i32 0, i32 0
  %629 = load i32, ptr %628, align 4
  %630 = call zeroext i1 @s2n_result_is_error(i32 %629)
  br i1 %630, label %684, label %631

631:                                              ; preds = %623
  br label %632

632:                                              ; preds = %631
  br label %633

633:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  %634 = call ptr @__errno_location() #11
  %635 = load i32, ptr %634, align 4, !tbaa !5
  store i32 %635, ptr %28, align 4, !tbaa !5
  %636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %637 = call i32 @s2n_print_stacktrace(ptr noundef %636)
  %638 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %639 = trunc i8 %638 to i1
  br i1 %639, label %640, label %662

640:                                              ; preds = %633
  %641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %642 = call i32 @fileno(ptr noundef %641) #10
  %643 = call i32 @isatty(i32 noundef %642) #10
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %645, label %662

645:                                              ; preds = %640
  %646 = load i32, ptr %28, align 4, !tbaa !5
  %647 = call ptr @__errno_location() #11
  store i32 %646, ptr %647, align 4, !tbaa !5
  %648 = load ptr, ptr @stderr, align 8, !tbaa !9
  %649 = load i32, ptr @test_count, align 4, !tbaa !5
  %650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %651 = load i32, ptr %650, align 4, !tbaa !5
  %652 = call ptr @s2n_strerror(i32 noundef %651, ptr noundef @.str.58)
  %653 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %654 = load i32, ptr %653, align 4, !tbaa !5
  %655 = call ptr @s2n_strerror_debug(i32 noundef %654, ptr noundef @.str.58)
  %656 = call ptr @__errno_location() #11
  %657 = load i32, ptr %656, align 4, !tbaa !5
  %658 = call ptr @strerror(i32 noundef %657) #10
  %659 = call ptr @__errno_location() #11
  %660 = load i32, ptr %659, align 4, !tbaa !5
  %661 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %648, ptr noundef @.str.56, i32 noundef %649, ptr noundef @.str.66, ptr noundef @.str.55, i32 noundef 154, ptr noundef %652, ptr noundef %655, ptr noundef %658, i32 noundef %660) #10
  br label %679

662:                                              ; preds = %640, %633
  %663 = load i32, ptr %28, align 4, !tbaa !5
  %664 = call ptr @__errno_location() #11
  store i32 %663, ptr %664, align 4, !tbaa !5
  %665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %666 = load i32, ptr @test_count, align 4, !tbaa !5
  %667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %668 = load i32, ptr %667, align 4, !tbaa !5
  %669 = call ptr @s2n_strerror(i32 noundef %668, ptr noundef @.str.58)
  %670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %671 = load i32, ptr %670, align 4, !tbaa !5
  %672 = call ptr @s2n_strerror_debug(i32 noundef %671, ptr noundef @.str.58)
  %673 = call ptr @__errno_location() #11
  %674 = load i32, ptr %673, align 4, !tbaa !5
  %675 = call ptr @strerror(i32 noundef %674) #10
  %676 = call ptr @__errno_location() #11
  %677 = load i32, ptr %676, align 4, !tbaa !5
  %678 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %665, ptr noundef @.str.59, i32 noundef %666, ptr noundef @.str.66, ptr noundef @.str.55, i32 noundef 154, ptr noundef %669, ptr noundef %672, ptr noundef %675, i32 noundef %677) #10
  br label %679

679:                                              ; preds = %662, %645
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %680

680:                                              ; preds = %679
  br label %681

681:                                              ; preds = %680
  call void @exit(i32 noundef 1) #12
  unreachable

682:                                              ; No predecessors!
  br label %683

683:                                              ; preds = %682
  br label %684

684:                                              ; preds = %683, %623
  br label %685

685:                                              ; preds = %684
  br label %686

686:                                              ; preds = %685
  br label %687

687:                                              ; preds = %686
  %688 = load i32, ptr @test_count, align 4, !tbaa !5
  %689 = add nsw i32 %688, 1
  store i32 %689, ptr @test_count, align 4, !tbaa !5
  %690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %691 = load i32, ptr %690, align 4, !tbaa !5
  %692 = icmp eq i32 %691, 402653193
  br i1 %692, label %746, label %693

693:                                              ; preds = %687
  br label %694

694:                                              ; preds = %693
  br label %695

695:                                              ; preds = %694
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  %696 = call ptr @__errno_location() #11
  %697 = load i32, ptr %696, align 4, !tbaa !5
  store i32 %697, ptr %29, align 4, !tbaa !5
  %698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %699 = call i32 @s2n_print_stacktrace(ptr noundef %698)
  %700 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %701 = trunc i8 %700 to i1
  br i1 %701, label %702, label %724

702:                                              ; preds = %695
  %703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %704 = call i32 @fileno(ptr noundef %703) #10
  %705 = call i32 @isatty(i32 noundef %704) #10
  %706 = icmp ne i32 %705, 0
  br i1 %706, label %707, label %724

707:                                              ; preds = %702
  %708 = load i32, ptr %29, align 4, !tbaa !5
  %709 = call ptr @__errno_location() #11
  store i32 %708, ptr %709, align 4, !tbaa !5
  %710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %711 = load i32, ptr @test_count, align 4, !tbaa !5
  %712 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %713 = load i32, ptr %712, align 4, !tbaa !5
  %714 = call ptr @s2n_strerror(i32 noundef %713, ptr noundef @.str.58)
  %715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %716 = load i32, ptr %715, align 4, !tbaa !5
  %717 = call ptr @s2n_strerror_debug(i32 noundef %716, ptr noundef @.str.58)
  %718 = call ptr @__errno_location() #11
  %719 = load i32, ptr %718, align 4, !tbaa !5
  %720 = call ptr @strerror(i32 noundef %719) #10
  %721 = call ptr @__errno_location() #11
  %722 = load i32, ptr %721, align 4, !tbaa !5
  %723 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %710, ptr noundef @.str.56, i32 noundef %711, ptr noundef @.str.64, ptr noundef @.str.55, i32 noundef 154, ptr noundef %714, ptr noundef %717, ptr noundef %720, i32 noundef %722) #10
  br label %741

724:                                              ; preds = %702, %695
  %725 = load i32, ptr %29, align 4, !tbaa !5
  %726 = call ptr @__errno_location() #11
  store i32 %725, ptr %726, align 4, !tbaa !5
  %727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %728 = load i32, ptr @test_count, align 4, !tbaa !5
  %729 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %730 = load i32, ptr %729, align 4, !tbaa !5
  %731 = call ptr @s2n_strerror(i32 noundef %730, ptr noundef @.str.58)
  %732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %733 = load i32, ptr %732, align 4, !tbaa !5
  %734 = call ptr @s2n_strerror_debug(i32 noundef %733, ptr noundef @.str.58)
  %735 = call ptr @__errno_location() #11
  %736 = load i32, ptr %735, align 4, !tbaa !5
  %737 = call ptr @strerror(i32 noundef %736) #10
  %738 = call ptr @__errno_location() #11
  %739 = load i32, ptr %738, align 4, !tbaa !5
  %740 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %727, ptr noundef @.str.59, i32 noundef %728, ptr noundef @.str.64, ptr noundef @.str.55, i32 noundef 154, ptr noundef %731, ptr noundef %734, ptr noundef %737, i32 noundef %739) #10
  br label %741

741:                                              ; preds = %724, %707
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %742

742:                                              ; preds = %741
  br label %743

743:                                              ; preds = %742
  call void @exit(i32 noundef 1) #12
  unreachable

744:                                              ; No predecessors!
  br label %745

745:                                              ; preds = %744
  br label %746

746:                                              ; preds = %745, %687
  br label %747

747:                                              ; preds = %746
  br label %748

748:                                              ; preds = %747
  br label %749

749:                                              ; preds = %748
  %750 = load i32, ptr @test_count, align 4, !tbaa !5
  %751 = add nsw i32 %750, 1
  store i32 %751, ptr @test_count, align 4, !tbaa !5
  %752 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %753 = load i32, ptr %752, align 4, !tbaa !5
  %754 = call ptr @s2n_strerror_debug(i32 noundef %753, ptr noundef @.str.58)
  %755 = icmp eq ptr %754, null
  br i1 %755, label %756, label %809

756:                                              ; preds = %749
  br label %757

757:                                              ; preds = %756
  br label %758

758:                                              ; preds = %757
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  %759 = call ptr @__errno_location() #11
  %760 = load i32, ptr %759, align 4, !tbaa !5
  store i32 %760, ptr %30, align 4, !tbaa !5
  %761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %762 = call i32 @s2n_print_stacktrace(ptr noundef %761)
  %763 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %764 = trunc i8 %763 to i1
  br i1 %764, label %765, label %787

765:                                              ; preds = %758
  %766 = load ptr, ptr @stderr, align 8, !tbaa !9
  %767 = call i32 @fileno(ptr noundef %766) #10
  %768 = call i32 @isatty(i32 noundef %767) #10
  %769 = icmp ne i32 %768, 0
  br i1 %769, label %770, label %787

770:                                              ; preds = %765
  %771 = load i32, ptr %30, align 4, !tbaa !5
  %772 = call ptr @__errno_location() #11
  store i32 %771, ptr %772, align 4, !tbaa !5
  %773 = load ptr, ptr @stderr, align 8, !tbaa !9
  %774 = load i32, ptr @test_count, align 4, !tbaa !5
  %775 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %776 = load i32, ptr %775, align 4, !tbaa !5
  %777 = call ptr @s2n_strerror(i32 noundef %776, ptr noundef @.str.58)
  %778 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %779 = load i32, ptr %778, align 4, !tbaa !5
  %780 = call ptr @s2n_strerror_debug(i32 noundef %779, ptr noundef @.str.58)
  %781 = call ptr @__errno_location() #11
  %782 = load i32, ptr %781, align 4, !tbaa !5
  %783 = call ptr @strerror(i32 noundef %782) #10
  %784 = call ptr @__errno_location() #11
  %785 = load i32, ptr %784, align 4, !tbaa !5
  %786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %773, ptr noundef @.str.56, i32 noundef %774, ptr noundef @.str.65, ptr noundef @.str.55, i32 noundef 154, ptr noundef %777, ptr noundef %780, ptr noundef %783, i32 noundef %785) #10
  br label %804

787:                                              ; preds = %765, %758
  %788 = load i32, ptr %30, align 4, !tbaa !5
  %789 = call ptr @__errno_location() #11
  store i32 %788, ptr %789, align 4, !tbaa !5
  %790 = load ptr, ptr @stderr, align 8, !tbaa !9
  %791 = load i32, ptr @test_count, align 4, !tbaa !5
  %792 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %793 = load i32, ptr %792, align 4, !tbaa !5
  %794 = call ptr @s2n_strerror(i32 noundef %793, ptr noundef @.str.58)
  %795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %796 = load i32, ptr %795, align 4, !tbaa !5
  %797 = call ptr @s2n_strerror_debug(i32 noundef %796, ptr noundef @.str.58)
  %798 = call ptr @__errno_location() #11
  %799 = load i32, ptr %798, align 4, !tbaa !5
  %800 = call ptr @strerror(i32 noundef %799) #10
  %801 = call ptr @__errno_location() #11
  %802 = load i32, ptr %801, align 4, !tbaa !5
  %803 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %790, ptr noundef @.str.59, i32 noundef %791, ptr noundef @.str.65, ptr noundef @.str.55, i32 noundef 154, ptr noundef %794, ptr noundef %797, ptr noundef %800, i32 noundef %802) #10
  br label %804

804:                                              ; preds = %787, %770
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %805

805:                                              ; preds = %804
  br label %806

806:                                              ; preds = %805
  call void @exit(i32 noundef 1) #12
  unreachable

807:                                              ; No predecessors!
  br label %808

808:                                              ; preds = %807
  br label %809

809:                                              ; preds = %808, %749
  br label %810

810:                                              ; preds = %809
  br label %811

811:                                              ; preds = %810
  br label %812

812:                                              ; preds = %811
  br label %813

813:                                              ; preds = %812
  br label %814

814:                                              ; preds = %813
  %815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %815, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %816 = call ptr @__errno_location() #11
  store i32 0, ptr %816, align 4, !tbaa !5
  br label %817

817:                                              ; preds = %814
  br label %818

818:                                              ; preds = %817
  br label %819

819:                                              ; preds = %818
  br label %820

820:                                              ; preds = %819
  %821 = getelementptr inbounds %struct.s2n_connection, ptr %26, i32 0, i32 21
  store i8 33, ptr %821, align 2, !tbaa !57
  br label %822

822:                                              ; preds = %820
  %823 = load i32, ptr @test_count, align 4, !tbaa !5
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr @test_count, align 4, !tbaa !5
  %825 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %26)
  %826 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  store i32 %825, ptr %826, align 4
  %827 = getelementptr inbounds %struct.s2n_result, ptr %31, i32 0, i32 0
  %828 = load i32, ptr %827, align 4
  %829 = call zeroext i1 @s2n_result_is_ok(i32 %828)
  br i1 %829, label %883, label %830

830:                                              ; preds = %822
  br label %831

831:                                              ; preds = %830
  br label %832

832:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  %833 = call ptr @__errno_location() #11
  %834 = load i32, ptr %833, align 4, !tbaa !5
  store i32 %834, ptr %32, align 4, !tbaa !5
  %835 = load ptr, ptr @stderr, align 8, !tbaa !9
  %836 = call i32 @s2n_print_stacktrace(ptr noundef %835)
  %837 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %838 = trunc i8 %837 to i1
  br i1 %838, label %839, label %861

839:                                              ; preds = %832
  %840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %841 = call i32 @fileno(ptr noundef %840) #10
  %842 = call i32 @isatty(i32 noundef %841) #10
  %843 = icmp ne i32 %842, 0
  br i1 %843, label %844, label %861

844:                                              ; preds = %839
  %845 = load i32, ptr %32, align 4, !tbaa !5
  %846 = call ptr @__errno_location() #11
  store i32 %845, ptr %846, align 4, !tbaa !5
  %847 = load ptr, ptr @stderr, align 8, !tbaa !9
  %848 = load i32, ptr @test_count, align 4, !tbaa !5
  %849 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %850 = load i32, ptr %849, align 4, !tbaa !5
  %851 = call ptr @s2n_strerror(i32 noundef %850, ptr noundef @.str.58)
  %852 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %853 = load i32, ptr %852, align 4, !tbaa !5
  %854 = call ptr @s2n_strerror_debug(i32 noundef %853, ptr noundef @.str.58)
  %855 = call ptr @__errno_location() #11
  %856 = load i32, ptr %855, align 4, !tbaa !5
  %857 = call ptr @strerror(i32 noundef %856) #10
  %858 = call ptr @__errno_location() #11
  %859 = load i32, ptr %858, align 4, !tbaa !5
  %860 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %847, ptr noundef @.str.56, i32 noundef %848, ptr noundef @.str.67, ptr noundef @.str.55, i32 noundef 156, ptr noundef %851, ptr noundef %854, ptr noundef %857, i32 noundef %859) #10
  br label %878

861:                                              ; preds = %839, %832
  %862 = load i32, ptr %32, align 4, !tbaa !5
  %863 = call ptr @__errno_location() #11
  store i32 %862, ptr %863, align 4, !tbaa !5
  %864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %865 = load i32, ptr @test_count, align 4, !tbaa !5
  %866 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %867 = load i32, ptr %866, align 4, !tbaa !5
  %868 = call ptr @s2n_strerror(i32 noundef %867, ptr noundef @.str.58)
  %869 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %870 = load i32, ptr %869, align 4, !tbaa !5
  %871 = call ptr @s2n_strerror_debug(i32 noundef %870, ptr noundef @.str.58)
  %872 = call ptr @__errno_location() #11
  %873 = load i32, ptr %872, align 4, !tbaa !5
  %874 = call ptr @strerror(i32 noundef %873) #10
  %875 = call ptr @__errno_location() #11
  %876 = load i32, ptr %875, align 4, !tbaa !5
  %877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %864, ptr noundef @.str.59, i32 noundef %865, ptr noundef @.str.67, ptr noundef @.str.55, i32 noundef 156, ptr noundef %868, ptr noundef %871, ptr noundef %874, i32 noundef %876) #10
  br label %878

878:                                              ; preds = %861, %844
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %879

879:                                              ; preds = %878
  br label %880

880:                                              ; preds = %879
  call void @exit(i32 noundef 1) #12
  unreachable

881:                                              ; No predecessors!
  br label %882

882:                                              ; preds = %881
  br label %883

883:                                              ; preds = %882, %822
  br label %884

884:                                              ; preds = %883
  br label %885

885:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 4184, ptr %33) #10
  call void @llvm.memset.p0.i64(ptr align 8 %33, i8 0, i64 4184, i1 false)
  %886 = getelementptr inbounds { i8, i8, i8, 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 }, ptr %33, i32 0, i32 25
  store i8 34, ptr %886, align 4
  %887 = getelementptr inbounds { i8, i8, i8, 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 }, ptr %33, i32 0, i32 54
  %888 = getelementptr inbounds %struct.s2n_handshake, ptr %887, i32 0, i32 7
  store i32 1, ptr %888, align 8
  br label %889

889:                                              ; preds = %885
  br label %890

890:                                              ; preds = %889
  br label %891

891:                                              ; preds = %890
  %892 = load i32, ptr @test_count, align 4, !tbaa !5
  %893 = add nsw i32 %892, 1
  store i32 %893, ptr @test_count, align 4, !tbaa !5
  %894 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %33)
  %895 = getelementptr inbounds %struct.s2n_result, ptr %34, i32 0, i32 0
  store i32 %894, ptr %895, align 4
  %896 = getelementptr inbounds %struct.s2n_result, ptr %34, i32 0, i32 0
  %897 = load i32, ptr %896, align 4
  %898 = call zeroext i1 @s2n_result_is_error(i32 %897)
  br i1 %898, label %952, label %899

899:                                              ; preds = %891
  br label %900

900:                                              ; preds = %899
  br label %901

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

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

913:                                              ; preds = %908
  %914 = load i32, ptr %35, align 4, !tbaa !5
  %915 = call ptr @__errno_location() #11
  store i32 %914, ptr %915, align 4, !tbaa !5
  %916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %917 = load i32, ptr @test_count, align 4, !tbaa !5
  %918 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %919 = load i32, ptr %918, align 4, !tbaa !5
  %920 = call ptr @s2n_strerror(i32 noundef %919, ptr noundef @.str.58)
  %921 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %922 = load i32, ptr %921, align 4, !tbaa !5
  %923 = call ptr @s2n_strerror_debug(i32 noundef %922, ptr noundef @.str.58)
  %924 = call ptr @__errno_location() #11
  %925 = load i32, ptr %924, align 4, !tbaa !5
  %926 = call ptr @strerror(i32 noundef %925) #10
  %927 = call ptr @__errno_location() #11
  %928 = load i32, ptr %927, align 4, !tbaa !5
  %929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %916, ptr noundef @.str.56, i32 noundef %917, ptr noundef @.str.68, ptr noundef @.str.55, i32 noundef 164, ptr noundef %920, ptr noundef %923, ptr noundef %926, i32 noundef %928) #10
  br label %947

930:                                              ; preds = %908, %901
  %931 = load i32, ptr %35, align 4, !tbaa !5
  %932 = call ptr @__errno_location() #11
  store i32 %931, ptr %932, align 4, !tbaa !5
  %933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %934 = load i32, ptr @test_count, align 4, !tbaa !5
  %935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %936 = load i32, ptr %935, align 4, !tbaa !5
  %937 = call ptr @s2n_strerror(i32 noundef %936, ptr noundef @.str.58)
  %938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %939 = load i32, ptr %938, align 4, !tbaa !5
  %940 = call ptr @s2n_strerror_debug(i32 noundef %939, ptr noundef @.str.58)
  %941 = call ptr @__errno_location() #11
  %942 = load i32, ptr %941, align 4, !tbaa !5
  %943 = call ptr @strerror(i32 noundef %942) #10
  %944 = call ptr @__errno_location() #11
  %945 = load i32, ptr %944, align 4, !tbaa !5
  %946 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %933, ptr noundef @.str.59, i32 noundef %934, ptr noundef @.str.68, ptr noundef @.str.55, i32 noundef 164, ptr noundef %937, ptr noundef %940, ptr noundef %943, i32 noundef %945) #10
  br label %947

947:                                              ; preds = %930, %913
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %948

948:                                              ; preds = %947
  br label %949

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

950:                                              ; No predecessors!
  br label %951

951:                                              ; preds = %950
  br label %952

952:                                              ; preds = %951, %891
  br label %953

953:                                              ; preds = %952
  br label %954

954:                                              ; preds = %953
  br label %955

955:                                              ; preds = %954
  %956 = load i32, ptr @test_count, align 4, !tbaa !5
  %957 = add nsw i32 %956, 1
  store i32 %957, ptr @test_count, align 4, !tbaa !5
  %958 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %959 = load i32, ptr %958, align 4, !tbaa !5
  %960 = icmp eq i32 %959, 402653193
  br i1 %960, label %1014, label %961

961:                                              ; preds = %955
  br label %962

962:                                              ; preds = %961
  br label %963

963:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  %964 = call ptr @__errno_location() #11
  %965 = load i32, ptr %964, align 4, !tbaa !5
  store i32 %965, ptr %36, 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) #10
  %973 = call i32 @isatty(i32 noundef %972) #10
  %974 = icmp ne i32 %973, 0
  br i1 %974, label %975, label %992

975:                                              ; preds = %970
  %976 = load i32, ptr %36, align 4, !tbaa !5
  %977 = call ptr @__errno_location() #11
  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.58)
  %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.58)
  %986 = call ptr @__errno_location() #11
  %987 = load i32, ptr %986, align 4, !tbaa !5
  %988 = call ptr @strerror(i32 noundef %987) #10
  %989 = call ptr @__errno_location() #11
  %990 = load i32, ptr %989, align 4, !tbaa !5
  %991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %978, ptr noundef @.str.56, i32 noundef %979, ptr noundef @.str.64, ptr noundef @.str.55, i32 noundef 164, ptr noundef %982, ptr noundef %985, ptr noundef %988, i32 noundef %990) #10
  br label %1009

992:                                              ; preds = %970, %963
  %993 = load i32, ptr %36, align 4, !tbaa !5
  %994 = call ptr @__errno_location() #11
  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.58)
  %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.58)
  %1003 = call ptr @__errno_location() #11
  %1004 = load i32, ptr %1003, align 4, !tbaa !5
  %1005 = call ptr @strerror(i32 noundef %1004) #10
  %1006 = call ptr @__errno_location() #11
  %1007 = load i32, ptr %1006, align 4, !tbaa !5
  %1008 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %995, ptr noundef @.str.59, i32 noundef %996, ptr noundef @.str.64, ptr noundef @.str.55, i32 noundef 164, ptr noundef %999, ptr noundef %1002, ptr noundef %1005, i32 noundef %1007) #10
  br label %1009

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

1010:                                             ; preds = %1009
  br label %1011

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

1012:                                             ; No predecessors!
  br label %1013

1013:                                             ; preds = %1012
  br label %1014

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

1015:                                             ; preds = %1014
  br label %1016

1016:                                             ; preds = %1015
  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 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1021 = load i32, ptr %1020, align 4, !tbaa !5
  %1022 = call ptr @s2n_strerror_debug(i32 noundef %1021, ptr noundef @.str.58)
  %1023 = icmp eq ptr %1022, null
  br i1 %1023, label %1024, label %1077

1024:                                             ; preds = %1017
  br label %1025

1025:                                             ; preds = %1024
  br label %1026

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

1033:                                             ; preds = %1026
  %1034 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1035 = call i32 @fileno(ptr noundef %1034) #10
  %1036 = call i32 @isatty(i32 noundef %1035) #10
  %1037 = icmp ne i32 %1036, 0
  br i1 %1037, label %1038, label %1055

1038:                                             ; preds = %1033
  %1039 = load i32, ptr %37, align 4, !tbaa !5
  %1040 = call ptr @__errno_location() #11
  store i32 %1039, ptr %1040, align 4, !tbaa !5
  %1041 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1042 = load i32, ptr @test_count, align 4, !tbaa !5
  %1043 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1044 = load i32, ptr %1043, align 4, !tbaa !5
  %1045 = call ptr @s2n_strerror(i32 noundef %1044, ptr noundef @.str.58)
  %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_debug(i32 noundef %1047, ptr noundef @.str.58)
  %1049 = call ptr @__errno_location() #11
  %1050 = load i32, ptr %1049, align 4, !tbaa !5
  %1051 = call ptr @strerror(i32 noundef %1050) #10
  %1052 = call ptr @__errno_location() #11
  %1053 = load i32, ptr %1052, align 4, !tbaa !5
  %1054 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1041, ptr noundef @.str.56, i32 noundef %1042, ptr noundef @.str.65, ptr noundef @.str.55, i32 noundef 164, ptr noundef %1045, ptr noundef %1048, ptr noundef %1051, i32 noundef %1053) #10
  br label %1072

1055:                                             ; preds = %1033, %1026
  %1056 = load i32, ptr %37, align 4, !tbaa !5
  %1057 = call ptr @__errno_location() #11
  store i32 %1056, ptr %1057, align 4, !tbaa !5
  %1058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1059 = load i32, ptr @test_count, align 4, !tbaa !5
  %1060 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1061 = load i32, ptr %1060, align 4, !tbaa !5
  %1062 = call ptr @s2n_strerror(i32 noundef %1061, ptr noundef @.str.58)
  %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_debug(i32 noundef %1064, ptr noundef @.str.58)
  %1066 = call ptr @__errno_location() #11
  %1067 = load i32, ptr %1066, align 4, !tbaa !5
  %1068 = call ptr @strerror(i32 noundef %1067) #10
  %1069 = call ptr @__errno_location() #11
  %1070 = load i32, ptr %1069, align 4, !tbaa !5
  %1071 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1058, ptr noundef @.str.59, i32 noundef %1059, ptr noundef @.str.65, ptr noundef @.str.55, i32 noundef 164, ptr noundef %1062, ptr noundef %1065, ptr noundef %1068, i32 noundef %1070) #10
  br label %1072

1072:                                             ; preds = %1055, %1038
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %1073

1073:                                             ; preds = %1072
  br label %1074

1074:                                             ; preds = %1073
  call void @exit(i32 noundef 1) #12
  unreachable

1075:                                             ; No predecessors!
  br label %1076

1076:                                             ; preds = %1075
  br label %1077

1077:                                             ; preds = %1076, %1017
  br label %1078

1078:                                             ; preds = %1077
  br label %1079

1079:                                             ; preds = %1078
  br label %1080

1080:                                             ; preds = %1079
  br label %1081

1081:                                             ; preds = %1080
  br label %1082

1082:                                             ; preds = %1081
  %1083 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1083, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1084 = call ptr @__errno_location() #11
  store i32 0, ptr %1084, align 4, !tbaa !5
  br label %1085

1085:                                             ; preds = %1082
  br label %1086

1086:                                             ; preds = %1085
  br label %1087

1087:                                             ; preds = %1086
  br label %1088

1088:                                             ; preds = %1087
  %1089 = getelementptr inbounds %struct.s2n_connection, ptr %33, i32 0, i32 23
  store i8 33, ptr %1089, align 4, !tbaa !58
  br label %1090

1090:                                             ; preds = %1088
  %1091 = load i32, ptr @test_count, align 4, !tbaa !5
  %1092 = add nsw i32 %1091, 1
  store i32 %1092, ptr @test_count, align 4, !tbaa !5
  %1093 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %33)
  %1094 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  store i32 %1093, ptr %1094, align 4
  %1095 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  %1096 = load i32, ptr %1095, align 4
  %1097 = call zeroext i1 @s2n_result_is_ok(i32 %1096)
  br i1 %1097, label %1151, label %1098

1098:                                             ; preds = %1090
  br label %1099

1099:                                             ; preds = %1098
  br label %1100

1100:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %1101 = call ptr @__errno_location() #11
  %1102 = load i32, ptr %1101, align 4, !tbaa !5
  store i32 %1102, ptr %39, align 4, !tbaa !5
  %1103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1104 = call i32 @s2n_print_stacktrace(ptr noundef %1103)
  %1105 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1106 = trunc i8 %1105 to i1
  br i1 %1106, label %1107, label %1129

1107:                                             ; preds = %1100
  %1108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1109 = call i32 @fileno(ptr noundef %1108) #10
  %1110 = call i32 @isatty(i32 noundef %1109) #10
  %1111 = icmp ne i32 %1110, 0
  br i1 %1111, label %1112, label %1129

1112:                                             ; preds = %1107
  %1113 = load i32, ptr %39, align 4, !tbaa !5
  %1114 = call ptr @__errno_location() #11
  store i32 %1113, ptr %1114, align 4, !tbaa !5
  %1115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1116 = load i32, ptr @test_count, align 4, !tbaa !5
  %1117 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1118 = load i32, ptr %1117, align 4, !tbaa !5
  %1119 = call ptr @s2n_strerror(i32 noundef %1118, ptr noundef @.str.58)
  %1120 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1121 = load i32, ptr %1120, align 4, !tbaa !5
  %1122 = call ptr @s2n_strerror_debug(i32 noundef %1121, ptr noundef @.str.58)
  %1123 = call ptr @__errno_location() #11
  %1124 = load i32, ptr %1123, align 4, !tbaa !5
  %1125 = call ptr @strerror(i32 noundef %1124) #10
  %1126 = call ptr @__errno_location() #11
  %1127 = load i32, ptr %1126, align 4, !tbaa !5
  %1128 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1115, ptr noundef @.str.56, i32 noundef %1116, ptr noundef @.str.69, ptr noundef @.str.55, i32 noundef 166, ptr noundef %1119, ptr noundef %1122, ptr noundef %1125, i32 noundef %1127) #10
  br label %1146

1129:                                             ; preds = %1107, %1100
  %1130 = load i32, ptr %39, align 4, !tbaa !5
  %1131 = call ptr @__errno_location() #11
  store i32 %1130, ptr %1131, align 4, !tbaa !5
  %1132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1133 = load i32, ptr @test_count, align 4, !tbaa !5
  %1134 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1135 = load i32, ptr %1134, align 4, !tbaa !5
  %1136 = call ptr @s2n_strerror(i32 noundef %1135, ptr noundef @.str.58)
  %1137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1138 = load i32, ptr %1137, align 4, !tbaa !5
  %1139 = call ptr @s2n_strerror_debug(i32 noundef %1138, ptr noundef @.str.58)
  %1140 = call ptr @__errno_location() #11
  %1141 = load i32, ptr %1140, align 4, !tbaa !5
  %1142 = call ptr @strerror(i32 noundef %1141) #10
  %1143 = call ptr @__errno_location() #11
  %1144 = load i32, ptr %1143, align 4, !tbaa !5
  %1145 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1132, ptr noundef @.str.59, i32 noundef %1133, ptr noundef @.str.69, ptr noundef @.str.55, i32 noundef 166, ptr noundef %1136, ptr noundef %1139, ptr noundef %1142, i32 noundef %1144) #10
  br label %1146

1146:                                             ; preds = %1129, %1112
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %1147

1147:                                             ; preds = %1146
  br label %1148

1148:                                             ; preds = %1147
  call void @exit(i32 noundef 1) #12
  unreachable

1149:                                             ; No predecessors!
  br label %1150

1150:                                             ; preds = %1149
  br label %1151

1151:                                             ; preds = %1150, %1090
  br label %1152

1152:                                             ; preds = %1151
  br label %1153

1153:                                             ; preds = %1152
  call void @llvm.lifetime.end.p0(i64 4184, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4184, ptr %26) #10
  call void @llvm.lifetime.start.p0(i64 64, ptr %40) #10
  call void @llvm.memset.p0.i64(ptr align 16 %40, i8 0, i64 64, i1 false)
  br label %1154

1154:                                             ; preds = %1153
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  store i64 64, ptr %41, align 8, !tbaa !15
  %1155 = load i64, ptr %41, align 8, !tbaa !15
  %1156 = icmp ne i64 %1155, 0
  br i1 %1156, label %1157, label %1215

1157:                                             ; preds = %1154
  %1158 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  %1159 = load i64, ptr %41, align 8, !tbaa !15
  call void @llvm.memmove.p0.p0.i64(ptr align 16 %1158, ptr align 16 @derive_methods, i64 %1159, i1 false)
  %1160 = icmp eq ptr %1158, null
  br i1 %1160, label %1161, label %1214

1161:                                             ; preds = %1157
  br label %1162

1162:                                             ; preds = %1161
  br label %1163

1163:                                             ; preds = %1162
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  %1164 = call ptr @__errno_location() #11
  %1165 = load i32, ptr %1164, align 4, !tbaa !5
  store i32 %1165, ptr %42, align 4, !tbaa !5
  %1166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1167 = call i32 @s2n_print_stacktrace(ptr noundef %1166)
  %1168 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1169 = trunc i8 %1168 to i1
  br i1 %1169, label %1170, label %1192

1170:                                             ; preds = %1163
  %1171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1172 = call i32 @fileno(ptr noundef %1171) #10
  %1173 = call i32 @isatty(i32 noundef %1172) #10
  %1174 = icmp ne i32 %1173, 0
  br i1 %1174, label %1175, label %1192

1175:                                             ; preds = %1170
  %1176 = load i32, ptr %42, align 4, !tbaa !5
  %1177 = call ptr @__errno_location() #11
  store i32 %1176, ptr %1177, align 4, !tbaa !5
  %1178 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1179 = load i32, ptr @test_count, align 4, !tbaa !5
  %1180 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1181 = load i32, ptr %1180, align 4, !tbaa !5
  %1182 = call ptr @s2n_strerror(i32 noundef %1181, ptr noundef @.str.58)
  %1183 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1184 = load i32, ptr %1183, align 4, !tbaa !5
  %1185 = call ptr @s2n_strerror_debug(i32 noundef %1184, ptr noundef @.str.58)
  %1186 = call ptr @__errno_location() #11
  %1187 = load i32, ptr %1186, align 4, !tbaa !5
  %1188 = call ptr @strerror(i32 noundef %1187) #10
  %1189 = call ptr @__errno_location() #11
  %1190 = load i32, ptr %1189, align 4, !tbaa !5
  %1191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1178, ptr noundef @.str.56, i32 noundef %1179, ptr noundef @.str.70, ptr noundef @.str.55, i32 noundef 173, ptr noundef %1182, ptr noundef %1185, ptr noundef %1188, i32 noundef %1190) #10
  br label %1209

1192:                                             ; preds = %1170, %1163
  %1193 = load i32, ptr %42, align 4, !tbaa !5
  %1194 = call ptr @__errno_location() #11
  store i32 %1193, ptr %1194, align 4, !tbaa !5
  %1195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1196 = load i32, ptr @test_count, align 4, !tbaa !5
  %1197 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1198 = load i32, ptr %1197, align 4, !tbaa !5
  %1199 = call ptr @s2n_strerror(i32 noundef %1198, ptr noundef @.str.58)
  %1200 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1201 = load i32, ptr %1200, align 4, !tbaa !5
  %1202 = call ptr @s2n_strerror_debug(i32 noundef %1201, ptr noundef @.str.58)
  %1203 = call ptr @__errno_location() #11
  %1204 = load i32, ptr %1203, align 4, !tbaa !5
  %1205 = call ptr @strerror(i32 noundef %1204) #10
  %1206 = call ptr @__errno_location() #11
  %1207 = load i32, ptr %1206, align 4, !tbaa !5
  %1208 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1195, ptr noundef @.str.59, i32 noundef %1196, ptr noundef @.str.70, ptr noundef @.str.55, i32 noundef 173, ptr noundef %1199, ptr noundef %1202, ptr noundef %1205, i32 noundef %1207) #10
  br label %1209

1209:                                             ; preds = %1192, %1175
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %1210

1210:                                             ; preds = %1209
  br label %1211

1211:                                             ; preds = %1210
  call void @exit(i32 noundef 1) #12
  unreachable

1212:                                             ; No predecessors!
  br label %1213

1213:                                             ; preds = %1212
  br label %1214

1214:                                             ; preds = %1213, %1157
  br label %1215

1215:                                             ; preds = %1214, %1154
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  br label %1216

1216:                                             ; preds = %1215
  br label %1217

1217:                                             ; preds = %1216
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  store i64 0, ptr %43, align 8, !tbaa !15
  br label %1218

1218:                                             ; preds = %1229, %1217
  %1219 = load i64, ptr %43, align 8, !tbaa !15
  %1220 = icmp ult i64 %1219, 4
  br i1 %1220, label %1222, label %1221

1221:                                             ; preds = %1218
  store i32 132, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %1232

1222:                                             ; preds = %1218
  %1223 = load i64, ptr %43, align 8, !tbaa !15
  %1224 = getelementptr inbounds [4 x [2 x ptr]], ptr @derive_methods, i64 0, i64 %1223
  %1225 = getelementptr inbounds [2 x ptr], ptr %1224, i64 0, i64 1
  store ptr @s2n_mock_derive_method, ptr %1225, align 8, !tbaa !9
  %1226 = load i64, ptr %43, align 8, !tbaa !15
  %1227 = getelementptr inbounds [4 x [2 x ptr]], ptr @derive_methods, i64 0, i64 %1226
  %1228 = getelementptr inbounds [2 x ptr], ptr %1227, i64 0, i64 0
  store ptr @s2n_mock_derive_method, ptr %1228, align 16, !tbaa !9
  br label %1229

1229:                                             ; preds = %1222
  %1230 = load i64, ptr %43, align 8, !tbaa !15
  %1231 = add i64 %1230, 1
  store i64 %1231, ptr %43, align 8, !tbaa !15
  br label %1218, !llvm.loop !59

1232:                                             ; preds = %1221
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #10
  call void @llvm.memset.p0.i64(ptr align 16 %44, i8 0, i64 32, i1 false)
  br label %1233

1233:                                             ; preds = %1232
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  store i64 32, ptr %45, align 8, !tbaa !15
  %1234 = load i64, ptr %45, align 8, !tbaa !15
  %1235 = icmp ne i64 %1234, 0
  br i1 %1235, label %1236, label %1294

1236:                                             ; preds = %1233
  %1237 = getelementptr inbounds [32 x i8], ptr %44, i64 0, i64 0
  %1238 = load i64, ptr %45, align 8, !tbaa !15
  call void @llvm.memmove.p0.p0.i64(ptr align 16 %1237, ptr align 16 @extract_methods, i64 %1238, i1 false)
  %1239 = icmp eq ptr %1237, null
  br i1 %1239, label %1240, label %1293

1240:                                             ; preds = %1236
  br label %1241

1241:                                             ; preds = %1240
  br label %1242

1242:                                             ; preds = %1241
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %1243 = call ptr @__errno_location() #11
  %1244 = load i32, ptr %1243, align 4, !tbaa !5
  store i32 %1244, ptr %46, align 4, !tbaa !5
  %1245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1246 = call i32 @s2n_print_stacktrace(ptr noundef %1245)
  %1247 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1248 = trunc i8 %1247 to i1
  br i1 %1248, label %1249, label %1271

1249:                                             ; preds = %1242
  %1250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1251 = call i32 @fileno(ptr noundef %1250) #10
  %1252 = call i32 @isatty(i32 noundef %1251) #10
  %1253 = icmp ne i32 %1252, 0
  br i1 %1253, label %1254, label %1271

1254:                                             ; preds = %1249
  %1255 = load i32, ptr %46, align 4, !tbaa !5
  %1256 = call ptr @__errno_location() #11
  store i32 %1255, ptr %1256, align 4, !tbaa !5
  %1257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1258 = load i32, ptr @test_count, align 4, !tbaa !5
  %1259 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1260 = load i32, ptr %1259, align 4, !tbaa !5
  %1261 = call ptr @s2n_strerror(i32 noundef %1260, ptr noundef @.str.58)
  %1262 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1263 = load i32, ptr %1262, align 4, !tbaa !5
  %1264 = call ptr @s2n_strerror_debug(i32 noundef %1263, ptr noundef @.str.58)
  %1265 = call ptr @__errno_location() #11
  %1266 = load i32, ptr %1265, align 4, !tbaa !5
  %1267 = call ptr @strerror(i32 noundef %1266) #10
  %1268 = call ptr @__errno_location() #11
  %1269 = load i32, ptr %1268, align 4, !tbaa !5
  %1270 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1257, ptr noundef @.str.56, i32 noundef %1258, ptr noundef @.str.71, ptr noundef @.str.55, i32 noundef 179, ptr noundef %1261, ptr noundef %1264, ptr noundef %1267, i32 noundef %1269) #10
  br label %1288

1271:                                             ; preds = %1249, %1242
  %1272 = load i32, ptr %46, align 4, !tbaa !5
  %1273 = call ptr @__errno_location() #11
  store i32 %1272, ptr %1273, align 4, !tbaa !5
  %1274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1275 = load i32, ptr @test_count, align 4, !tbaa !5
  %1276 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1277 = load i32, ptr %1276, align 4, !tbaa !5
  %1278 = call ptr @s2n_strerror(i32 noundef %1277, ptr noundef @.str.58)
  %1279 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1280 = load i32, ptr %1279, align 4, !tbaa !5
  %1281 = call ptr @s2n_strerror_debug(i32 noundef %1280, ptr noundef @.str.58)
  %1282 = call ptr @__errno_location() #11
  %1283 = load i32, ptr %1282, align 4, !tbaa !5
  %1284 = call ptr @strerror(i32 noundef %1283) #10
  %1285 = call ptr @__errno_location() #11
  %1286 = load i32, ptr %1285, align 4, !tbaa !5
  %1287 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1274, ptr noundef @.str.59, i32 noundef %1275, ptr noundef @.str.71, ptr noundef @.str.55, i32 noundef 179, ptr noundef %1278, ptr noundef %1281, ptr noundef %1284, i32 noundef %1286) #10
  br label %1288

1288:                                             ; preds = %1271, %1254
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %1289

1289:                                             ; preds = %1288
  br label %1290

1290:                                             ; preds = %1289
  call void @exit(i32 noundef 1) #12
  unreachable

1291:                                             ; No predecessors!
  br label %1292

1292:                                             ; preds = %1291
  br label %1293

1293:                                             ; preds = %1292, %1236
  br label %1294

1294:                                             ; preds = %1293, %1233
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  br label %1295

1295:                                             ; preds = %1294
  br label %1296

1296:                                             ; preds = %1295
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  store i64 0, ptr %47, align 8, !tbaa !15
  br label %1297

1297:                                             ; preds = %1304, %1296
  %1298 = load i64, ptr %47, align 8, !tbaa !15
  %1299 = icmp ult i64 %1298, 4
  br i1 %1299, label %1301, label %1300

1300:                                             ; preds = %1297
  store i32 141, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  br label %1307

1301:                                             ; preds = %1297
  %1302 = load i64, ptr %47, align 8, !tbaa !15
  %1303 = getelementptr inbounds [4 x ptr], ptr @extract_methods, i64 0, i64 %1302
  store ptr @s2n_mock_extract_method, ptr %1303, align 8, !tbaa !9
  br label %1304

1304:                                             ; preds = %1301
  %1305 = load i64, ptr %47, align 8, !tbaa !15
  %1306 = add i64 %1305, 1
  store i64 %1306, ptr %47, align 8, !tbaa !15
  br label %1297, !llvm.loop !60

1307:                                             ; preds = %1300
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  store i64 0, ptr %48, align 8, !tbaa !15
  br label %1308

1308:                                             ; preds = %2602, %1307
  %1309 = load i64, ptr %48, align 8, !tbaa !15
  %1310 = load i64, ptr %13, align 8, !tbaa !15
  %1311 = icmp ult i64 %1309, %1310
  br i1 %1311, label %1313, label %1312

1312:                                             ; preds = %1308
  store i32 144, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %2605

1313:                                             ; preds = %1308
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %1314 = load i64, ptr %48, align 8, !tbaa !15
  %1315 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %12, i64 0, i64 %1314
  %1316 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %1315, i32 0, i32 0
  %1317 = load i32, ptr %1316, align 8, !tbaa !46
  %1318 = call ptr @s2n_connection_new(i32 noundef %1317)
  store ptr %1318, ptr %49, align 8, !tbaa !9
  %1319 = load ptr, ptr %49, align 8, !tbaa !9
  %1320 = getelementptr inbounds %struct.s2n_connection, ptr %1319, i32 0, i32 23
  store i8 34, ptr %1320, align 4, !tbaa !58
  br label %1321

1321:                                             ; preds = %1313
  %1322 = load i32, ptr @test_count, align 4, !tbaa !5
  %1323 = add nsw i32 %1322, 1
  store i32 %1323, ptr @test_count, align 4, !tbaa !5
  %1324 = load ptr, ptr %49, align 8, !tbaa !9
  %1325 = call i32 @s2n_conn_choose_state_machine(ptr noundef %1324, i8 noundef zeroext 34)
  %1326 = getelementptr inbounds %struct.s2n_result, ptr %50, i32 0, i32 0
  store i32 %1325, ptr %1326, align 4
  %1327 = getelementptr inbounds %struct.s2n_result, ptr %50, i32 0, i32 0
  %1328 = load i32, ptr %1327, align 4
  %1329 = call zeroext i1 @s2n_result_is_ok(i32 %1328)
  br i1 %1329, label %1383, label %1330

1330:                                             ; preds = %1321
  br label %1331

1331:                                             ; preds = %1330
  br label %1332

1332:                                             ; preds = %1331
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %1333 = call ptr @__errno_location() #11
  %1334 = load i32, ptr %1333, align 4, !tbaa !5
  store i32 %1334, ptr %51, align 4, !tbaa !5
  %1335 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1336 = call i32 @s2n_print_stacktrace(ptr noundef %1335)
  %1337 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1338 = trunc i8 %1337 to i1
  br i1 %1338, label %1339, label %1361

1339:                                             ; preds = %1332
  %1340 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1341 = call i32 @fileno(ptr noundef %1340) #10
  %1342 = call i32 @isatty(i32 noundef %1341) #10
  %1343 = icmp ne i32 %1342, 0
  br i1 %1343, label %1344, label %1361

1344:                                             ; preds = %1339
  %1345 = load i32, ptr %51, align 4, !tbaa !5
  %1346 = call ptr @__errno_location() #11
  store i32 %1345, ptr %1346, align 4, !tbaa !5
  %1347 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1348 = load i32, ptr @test_count, align 4, !tbaa !5
  %1349 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1350 = load i32, ptr %1349, align 4, !tbaa !5
  %1351 = call ptr @s2n_strerror(i32 noundef %1350, ptr noundef @.str.58)
  %1352 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1353 = load i32, ptr %1352, align 4, !tbaa !5
  %1354 = call ptr @s2n_strerror_debug(i32 noundef %1353, ptr noundef @.str.58)
  %1355 = call ptr @__errno_location() #11
  %1356 = load i32, ptr %1355, align 4, !tbaa !5
  %1357 = call ptr @strerror(i32 noundef %1356) #10
  %1358 = call ptr @__errno_location() #11
  %1359 = load i32, ptr %1358, align 4, !tbaa !5
  %1360 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1347, ptr noundef @.str.56, i32 noundef %1348, ptr noundef @.str.72, ptr noundef @.str.55, i32 noundef 188, ptr noundef %1351, ptr noundef %1354, ptr noundef %1357, i32 noundef %1359) #10
  br label %1378

1361:                                             ; preds = %1339, %1332
  %1362 = load i32, ptr %51, align 4, !tbaa !5
  %1363 = call ptr @__errno_location() #11
  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.58)
  %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.58)
  %1372 = call ptr @__errno_location() #11
  %1373 = load i32, ptr %1372, align 4, !tbaa !5
  %1374 = call ptr @strerror(i32 noundef %1373) #10
  %1375 = call ptr @__errno_location() #11
  %1376 = load i32, ptr %1375, align 4, !tbaa !5
  %1377 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1364, ptr noundef @.str.59, i32 noundef %1365, ptr noundef @.str.72, ptr noundef @.str.55, i32 noundef 188, ptr noundef %1368, ptr noundef %1371, ptr noundef %1374, i32 noundef %1376) #10
  br label %1378

1378:                                             ; preds = %1361, %1344
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %1379

1379:                                             ; preds = %1378
  br label %1380

1380:                                             ; preds = %1379
  call void @exit(i32 noundef 1) #12
  unreachable

1381:                                             ; No predecessors!
  br label %1382

1382:                                             ; preds = %1381
  br label %1383

1383:                                             ; preds = %1382, %1321
  br label %1384

1384:                                             ; preds = %1383
  br label %1385

1385:                                             ; preds = %1384
  %1386 = load i64, ptr %48, align 8, !tbaa !15
  %1387 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %12, i64 0, i64 %1386
  %1388 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %1387, i32 0, i32 1
  %1389 = load i32, ptr %1388, align 4, !tbaa !48
  %1390 = load ptr, ptr %49, align 8, !tbaa !9
  %1391 = getelementptr inbounds %struct.s2n_connection, ptr %1390, i32 0, i32 52
  %1392 = getelementptr inbounds %struct.s2n_handshake, ptr %1391, i32 0, i32 6
  store i32 %1389, ptr %1392, align 4, !tbaa !17
  %1393 = load i64, ptr %48, align 8, !tbaa !15
  %1394 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %12, i64 0, i64 %1393
  %1395 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %1394, i32 0, i32 2
  %1396 = load ptr, ptr %1395, align 8, !tbaa !49
  %1397 = load ptr, ptr %49, align 8, !tbaa !9
  %1398 = getelementptr inbounds %struct.s2n_connection, ptr %1397, i32 0, i32 27
  %1399 = load ptr, ptr %1398, align 8, !tbaa !61
  %1400 = getelementptr inbounds %struct.s2n_crypto_parameters, ptr %1399, i32 0, i32 0
  store ptr %1396, ptr %1400, align 8, !tbaa !62
  %1401 = load i64, ptr %48, align 8, !tbaa !15
  %1402 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %12, i64 0, i64 %1401
  %1403 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %1402, i32 0, i32 3
  %1404 = load i8, ptr %1403, align 8, !tbaa !50, !range !13, !noundef !14
  %1405 = trunc i8 %1404 to i1
  br i1 %1405, label %1406, label %1409

1406:                                             ; preds = %1385
  %1407 = load ptr, ptr %49, align 8, !tbaa !9
  %1408 = getelementptr inbounds %struct.s2n_connection, ptr %1407, i32 0, i32 89
  store i32 1, ptr %1408, align 8, !tbaa !67
  br label %1409

1409:                                             ; preds = %1406, %1385
  call void @llvm.lifetime.start.p0(i64 432, ptr %52) #10
  call void @llvm.memset.p0.i64(ptr align 8 %52, i8 0, i64 432, i1 false)
  br label %1410

1410:                                             ; preds = %1409
  %1411 = load i32, ptr @test_count, align 4, !tbaa !5
  %1412 = add nsw i32 %1411, 1
  store i32 %1412, ptr @test_count, align 4, !tbaa !5
  %1413 = load ptr, ptr %49, align 8, !tbaa !9
  %1414 = call i32 @s2n_connection_set_secret_callback(ptr noundef %1413, ptr noundef @s2n_test_secret_cb, ptr noundef %52)
  %1415 = icmp eq i32 %1414, -1
  br i1 %1415, label %1416, label %1469

1416:                                             ; preds = %1410
  br label %1417

1417:                                             ; preds = %1416
  br label %1418

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

1425:                                             ; preds = %1418
  %1426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1427 = call i32 @fileno(ptr noundef %1426) #10
  %1428 = call i32 @isatty(i32 noundef %1427) #10
  %1429 = icmp ne i32 %1428, 0
  br i1 %1429, label %1430, label %1447

1430:                                             ; preds = %1425
  %1431 = load i32, ptr %53, align 4, !tbaa !5
  %1432 = call ptr @__errno_location() #11
  store i32 %1431, ptr %1432, align 4, !tbaa !5
  %1433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1434 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1436, ptr noundef @.str.58)
  %1438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1439 = load i32, ptr %1438, align 4, !tbaa !5
  %1440 = call ptr @s2n_strerror_debug(i32 noundef %1439, ptr noundef @.str.58)
  %1441 = call ptr @__errno_location() #11
  %1442 = load i32, ptr %1441, align 4, !tbaa !5
  %1443 = call ptr @strerror(i32 noundef %1442) #10
  %1444 = call ptr @__errno_location() #11
  %1445 = load i32, ptr %1444, align 4, !tbaa !5
  %1446 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1433, ptr noundef @.str.56, i32 noundef %1434, ptr noundef @.str.73, ptr noundef @.str.55, i32 noundef 198, ptr noundef %1437, ptr noundef %1440, ptr noundef %1443, i32 noundef %1445) #10
  br label %1464

1447:                                             ; preds = %1425, %1418
  %1448 = load i32, ptr %53, align 4, !tbaa !5
  %1449 = call ptr @__errno_location() #11
  store i32 %1448, ptr %1449, align 4, !tbaa !5
  %1450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1451 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1453, ptr noundef @.str.58)
  %1455 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1456 = load i32, ptr %1455, align 4, !tbaa !5
  %1457 = call ptr @s2n_strerror_debug(i32 noundef %1456, ptr noundef @.str.58)
  %1458 = call ptr @__errno_location() #11
  %1459 = load i32, ptr %1458, align 4, !tbaa !5
  %1460 = call ptr @strerror(i32 noundef %1459) #10
  %1461 = call ptr @__errno_location() #11
  %1462 = load i32, ptr %1461, align 4, !tbaa !5
  %1463 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1450, ptr noundef @.str.59, i32 noundef %1451, ptr noundef @.str.73, ptr noundef @.str.55, i32 noundef 198, ptr noundef %1454, ptr noundef %1457, ptr noundef %1460, i32 noundef %1462) #10
  br label %1464

1464:                                             ; preds = %1447, %1430
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #10
  br label %1465

1465:                                             ; preds = %1464
  br label %1466

1466:                                             ; preds = %1465
  call void @exit(i32 noundef 1) #12
  unreachable

1467:                                             ; No predecessors!
  br label %1468

1468:                                             ; preds = %1467
  br label %1469

1469:                                             ; preds = %1468, %1410
  br label %1470

1470:                                             ; preds = %1469
  br label %1471

1471:                                             ; preds = %1470
  br label %1472

1472:                                             ; preds = %2523, %1471
  %1473 = load ptr, ptr %49, align 8, !tbaa !9
  %1474 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1473)
  %1475 = icmp ne i32 %1474, 20
  br i1 %1475, label %1476, label %2529

1476:                                             ; preds = %1472
  %1477 = load ptr, ptr %49, align 8, !tbaa !9
  %1478 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1477)
  %1479 = icmp eq i32 %1478, 18
  br i1 %1479, label %1480, label %1548

1480:                                             ; preds = %1476
  %1481 = load ptr, ptr %49, align 8, !tbaa !9
  %1482 = getelementptr inbounds %struct.s2n_connection, ptr %1481, i32 0, i32 89
  store i32 4, ptr %1482, align 8, !tbaa !67
  br label %1483

1483:                                             ; preds = %1480
  %1484 = load i32, ptr @test_count, align 4, !tbaa !5
  %1485 = add nsw i32 %1484, 1
  store i32 %1485, ptr @test_count, align 4, !tbaa !5
  %1486 = load ptr, ptr %49, align 8, !tbaa !9
  %1487 = call i32 @s2n_tls13_key_schedule_reset(ptr noundef %1486)
  %1488 = getelementptr inbounds %struct.s2n_result, ptr %54, i32 0, i32 0
  store i32 %1487, ptr %1488, align 4
  %1489 = getelementptr inbounds %struct.s2n_result, ptr %54, i32 0, i32 0
  %1490 = load i32, ptr %1489, align 4
  %1491 = call zeroext i1 @s2n_result_is_ok(i32 %1490)
  br i1 %1491, label %1545, label %1492

1492:                                             ; preds = %1483
  br label %1493

1493:                                             ; preds = %1492
  br label %1494

1494:                                             ; preds = %1493
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  %1495 = call ptr @__errno_location() #11
  %1496 = load i32, ptr %1495, align 4, !tbaa !5
  store i32 %1496, ptr %55, align 4, !tbaa !5
  %1497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1498 = call i32 @s2n_print_stacktrace(ptr noundef %1497)
  %1499 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1500 = trunc i8 %1499 to i1
  br i1 %1500, label %1501, label %1523

1501:                                             ; preds = %1494
  %1502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1503 = call i32 @fileno(ptr noundef %1502) #10
  %1504 = call i32 @isatty(i32 noundef %1503) #10
  %1505 = icmp ne i32 %1504, 0
  br i1 %1505, label %1506, label %1523

1506:                                             ; preds = %1501
  %1507 = load i32, ptr %55, align 4, !tbaa !5
  %1508 = call ptr @__errno_location() #11
  store i32 %1507, ptr %1508, align 4, !tbaa !5
  %1509 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1510 = load i32, ptr @test_count, align 4, !tbaa !5
  %1511 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1512 = load i32, ptr %1511, align 4, !tbaa !5
  %1513 = call ptr @s2n_strerror(i32 noundef %1512, ptr noundef @.str.58)
  %1514 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1515 = load i32, ptr %1514, align 4, !tbaa !5
  %1516 = call ptr @s2n_strerror_debug(i32 noundef %1515, ptr noundef @.str.58)
  %1517 = call ptr @__errno_location() #11
  %1518 = load i32, ptr %1517, align 4, !tbaa !5
  %1519 = call ptr @strerror(i32 noundef %1518) #10
  %1520 = call ptr @__errno_location() #11
  %1521 = load i32, ptr %1520, align 4, !tbaa !5
  %1522 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1509, ptr noundef @.str.56, i32 noundef %1510, ptr noundef @.str.74, ptr noundef @.str.55, i32 noundef 209, ptr noundef %1513, ptr noundef %1516, ptr noundef %1519, i32 noundef %1521) #10
  br label %1540

1523:                                             ; preds = %1501, %1494
  %1524 = load i32, ptr %55, align 4, !tbaa !5
  %1525 = call ptr @__errno_location() #11
  store i32 %1524, ptr %1525, align 4, !tbaa !5
  %1526 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1527 = load i32, ptr @test_count, align 4, !tbaa !5
  %1528 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1529 = load i32, ptr %1528, align 4, !tbaa !5
  %1530 = call ptr @s2n_strerror(i32 noundef %1529, ptr noundef @.str.58)
  %1531 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1532 = load i32, ptr %1531, align 4, !tbaa !5
  %1533 = call ptr @s2n_strerror_debug(i32 noundef %1532, ptr noundef @.str.58)
  %1534 = call ptr @__errno_location() #11
  %1535 = load i32, ptr %1534, align 4, !tbaa !5
  %1536 = call ptr @strerror(i32 noundef %1535) #10
  %1537 = call ptr @__errno_location() #11
  %1538 = load i32, ptr %1537, align 4, !tbaa !5
  %1539 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1526, ptr noundef @.str.59, i32 noundef %1527, ptr noundef @.str.74, ptr noundef @.str.55, i32 noundef 209, ptr noundef %1530, ptr noundef %1533, ptr noundef %1536, i32 noundef %1538) #10
  br label %1540

1540:                                             ; preds = %1523, %1506
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  br label %1541

1541:                                             ; preds = %1540
  br label %1542

1542:                                             ; preds = %1541
  call void @exit(i32 noundef 1) #12
  unreachable

1543:                                             ; No predecessors!
  br label %1544

1544:                                             ; preds = %1543
  br label %1545

1545:                                             ; preds = %1544, %1483
  br label %1546

1546:                                             ; preds = %1545
  br label %1547

1547:                                             ; preds = %1546
  br label %1548

1548:                                             ; preds = %1547, %1476
  %1549 = load ptr, ptr %49, align 8, !tbaa !9
  %1550 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1549)
  switch i32 %1550, label %2393 [
    i32 0, label %1551
    i32 18, label %1618
    i32 1, label %1618
    i32 19, label %1685
    i32 16, label %1816
    i32 2, label %1816
    i32 17, label %1816
    i32 15, label %1816
    i32 6, label %1816
    i32 8, label %1947
    i32 10, label %1947
    i32 13, label %1947
    i32 20, label %2078
    i32 14, label %2339
    i32 11, label %2339
    i32 9, label %2340
    i32 5, label %2340
    i32 3, label %2340
    i32 4, label %2340
    i32 7, label %2340
    i32 12, label %2340
  ]

1551:                                             ; preds = %1548
  br label %1552

1552:                                             ; preds = %1551
  %1553 = load i32, ptr @test_count, align 4, !tbaa !5
  %1554 = add nsw i32 %1553, 1
  store i32 %1554, ptr @test_count, align 4, !tbaa !5
  %1555 = load ptr, ptr %49, align 8, !tbaa !9
  %1556 = getelementptr inbounds %struct.s2n_connection, ptr %1555, i32 0, i32 29
  %1557 = load ptr, ptr %1556, align 8, !tbaa !68
  %1558 = load ptr, ptr %49, align 8, !tbaa !9
  %1559 = getelementptr inbounds %struct.s2n_connection, ptr %1558, i32 0, i32 26
  %1560 = load ptr, ptr %1559, align 8, !tbaa !69
  %1561 = icmp eq ptr %1557, %1560
  br i1 %1561, label %1615, label %1562

1562:                                             ; preds = %1552
  br label %1563

1563:                                             ; preds = %1562
  br label %1564

1564:                                             ; preds = %1563
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #10
  %1565 = call ptr @__errno_location() #11
  %1566 = load i32, ptr %1565, align 4, !tbaa !5
  store i32 %1566, ptr %56, align 4, !tbaa !5
  %1567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1568 = call i32 @s2n_print_stacktrace(ptr noundef %1567)
  %1569 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1570 = trunc i8 %1569 to i1
  br i1 %1570, label %1571, label %1593

1571:                                             ; preds = %1564
  %1572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1573 = call i32 @fileno(ptr noundef %1572) #10
  %1574 = call i32 @isatty(i32 noundef %1573) #10
  %1575 = icmp ne i32 %1574, 0
  br i1 %1575, label %1576, label %1593

1576:                                             ; preds = %1571
  %1577 = load i32, ptr %56, align 4, !tbaa !5
  %1578 = call ptr @__errno_location() #11
  store i32 %1577, ptr %1578, align 4, !tbaa !5
  %1579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1580 = load i32, ptr @test_count, align 4, !tbaa !5
  %1581 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1582 = load i32, ptr %1581, align 4, !tbaa !5
  %1583 = call ptr @s2n_strerror(i32 noundef %1582, ptr noundef @.str.58)
  %1584 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1585 = load i32, ptr %1584, align 4, !tbaa !5
  %1586 = call ptr @s2n_strerror_debug(i32 noundef %1585, ptr noundef @.str.58)
  %1587 = call ptr @__errno_location() #11
  %1588 = load i32, ptr %1587, align 4, !tbaa !5
  %1589 = call ptr @strerror(i32 noundef %1588) #10
  %1590 = call ptr @__errno_location() #11
  %1591 = load i32, ptr %1590, align 4, !tbaa !5
  %1592 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1579, ptr noundef @.str.56, i32 noundef %1580, ptr noundef @.str.75, ptr noundef @.str.55, i32 noundef 219, ptr noundef %1583, ptr noundef %1586, ptr noundef %1589, i32 noundef %1591) #10
  br label %1610

1593:                                             ; preds = %1571, %1564
  %1594 = load i32, ptr %56, align 4, !tbaa !5
  %1595 = call ptr @__errno_location() #11
  store i32 %1594, ptr %1595, align 4, !tbaa !5
  %1596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1597 = load i32, ptr @test_count, align 4, !tbaa !5
  %1598 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1599 = load i32, ptr %1598, align 4, !tbaa !5
  %1600 = call ptr @s2n_strerror(i32 noundef %1599, ptr noundef @.str.58)
  %1601 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1602 = load i32, ptr %1601, align 4, !tbaa !5
  %1603 = call ptr @s2n_strerror_debug(i32 noundef %1602, ptr noundef @.str.58)
  %1604 = call ptr @__errno_location() #11
  %1605 = load i32, ptr %1604, align 4, !tbaa !5
  %1606 = call ptr @strerror(i32 noundef %1605) #10
  %1607 = call ptr @__errno_location() #11
  %1608 = load i32, ptr %1607, align 4, !tbaa !5
  %1609 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1596, ptr noundef @.str.59, i32 noundef %1597, ptr noundef @.str.75, ptr noundef @.str.55, i32 noundef 219, ptr noundef %1600, ptr noundef %1603, ptr noundef %1606, i32 noundef %1608) #10
  br label %1610

1610:                                             ; preds = %1593, %1576
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %1611

1611:                                             ; preds = %1610
  br label %1612

1612:                                             ; preds = %1611
  call void @exit(i32 noundef 1) #12
  unreachable

1613:                                             ; No predecessors!
  br label %1614

1614:                                             ; preds = %1613
  br label %1615

1615:                                             ; preds = %1614, %1552
  br label %1616

1616:                                             ; preds = %1615
  br label %1617

1617:                                             ; preds = %1616
  br label %2393

1618:                                             ; preds = %1548, %1548
  br label %1619

1619:                                             ; preds = %1618
  %1620 = load i32, ptr @test_count, align 4, !tbaa !5
  %1621 = add nsw i32 %1620, 1
  store i32 %1621, ptr @test_count, align 4, !tbaa !5
  %1622 = load ptr, ptr %49, align 8, !tbaa !9
  %1623 = getelementptr inbounds %struct.s2n_connection, ptr %1622, i32 0, i32 30
  %1624 = load ptr, ptr %1623, align 8, !tbaa !70
  %1625 = load ptr, ptr %49, align 8, !tbaa !9
  %1626 = getelementptr inbounds %struct.s2n_connection, ptr %1625, i32 0, i32 26
  %1627 = load ptr, ptr %1626, align 8, !tbaa !69
  %1628 = icmp eq ptr %1624, %1627
  br i1 %1628, label %1682, label %1629

1629:                                             ; preds = %1619
  br label %1630

1630:                                             ; preds = %1629
  br label %1631

1631:                                             ; preds = %1630
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  %1632 = call ptr @__errno_location() #11
  %1633 = load i32, ptr %1632, align 4, !tbaa !5
  store i32 %1633, ptr %57, align 4, !tbaa !5
  %1634 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1635 = call i32 @s2n_print_stacktrace(ptr noundef %1634)
  %1636 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1637 = trunc i8 %1636 to i1
  br i1 %1637, label %1638, label %1660

1638:                                             ; preds = %1631
  %1639 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1640 = call i32 @fileno(ptr noundef %1639) #10
  %1641 = call i32 @isatty(i32 noundef %1640) #10
  %1642 = icmp ne i32 %1641, 0
  br i1 %1642, label %1643, label %1660

1643:                                             ; preds = %1638
  %1644 = load i32, ptr %57, align 4, !tbaa !5
  %1645 = call ptr @__errno_location() #11
  store i32 %1644, ptr %1645, align 4, !tbaa !5
  %1646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1647 = load i32, ptr @test_count, align 4, !tbaa !5
  %1648 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1649 = load i32, ptr %1648, align 4, !tbaa !5
  %1650 = call ptr @s2n_strerror(i32 noundef %1649, ptr noundef @.str.58)
  %1651 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1652 = load i32, ptr %1651, align 4, !tbaa !5
  %1653 = call ptr @s2n_strerror_debug(i32 noundef %1652, ptr noundef @.str.58)
  %1654 = call ptr @__errno_location() #11
  %1655 = load i32, ptr %1654, align 4, !tbaa !5
  %1656 = call ptr @strerror(i32 noundef %1655) #10
  %1657 = call ptr @__errno_location() #11
  %1658 = load i32, ptr %1657, align 4, !tbaa !5
  %1659 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1646, ptr noundef @.str.56, i32 noundef %1647, ptr noundef @.str.76, ptr noundef @.str.55, i32 noundef 224, ptr noundef %1650, ptr noundef %1653, ptr noundef %1656, i32 noundef %1658) #10
  br label %1677

1660:                                             ; preds = %1638, %1631
  %1661 = load i32, ptr %57, align 4, !tbaa !5
  %1662 = call ptr @__errno_location() #11
  store i32 %1661, ptr %1662, align 4, !tbaa !5
  %1663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1664 = load i32, ptr @test_count, align 4, !tbaa !5
  %1665 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1666 = load i32, ptr %1665, align 4, !tbaa !5
  %1667 = call ptr @s2n_strerror(i32 noundef %1666, ptr noundef @.str.58)
  %1668 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1669 = load i32, ptr %1668, align 4, !tbaa !5
  %1670 = call ptr @s2n_strerror_debug(i32 noundef %1669, ptr noundef @.str.58)
  %1671 = call ptr @__errno_location() #11
  %1672 = load i32, ptr %1671, align 4, !tbaa !5
  %1673 = call ptr @strerror(i32 noundef %1672) #10
  %1674 = call ptr @__errno_location() #11
  %1675 = load i32, ptr %1674, align 4, !tbaa !5
  %1676 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1663, ptr noundef @.str.59, i32 noundef %1664, ptr noundef @.str.76, ptr noundef @.str.55, i32 noundef 224, ptr noundef %1667, ptr noundef %1670, ptr noundef %1673, i32 noundef %1675) #10
  br label %1677

1677:                                             ; preds = %1660, %1643
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %1678

1678:                                             ; preds = %1677
  br label %1679

1679:                                             ; preds = %1678
  call void @exit(i32 noundef 1) #12
  unreachable

1680:                                             ; No predecessors!
  br label %1681

1681:                                             ; preds = %1680
  br label %1682

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

1683:                                             ; preds = %1682
  br label %1684

1684:                                             ; preds = %1683
  br label %2393

1685:                                             ; preds = %1548
  br label %1686

1686:                                             ; preds = %1685
  %1687 = load i32, ptr @test_count, align 4, !tbaa !5
  %1688 = add nsw i32 %1687, 1
  store i32 %1688, ptr @test_count, align 4, !tbaa !5
  %1689 = load ptr, ptr %49, align 8, !tbaa !9
  %1690 = getelementptr inbounds %struct.s2n_connection, ptr %1689, i32 0, i32 29
  %1691 = load ptr, ptr %1690, align 8, !tbaa !68
  %1692 = load ptr, ptr %49, align 8, !tbaa !9
  %1693 = getelementptr inbounds %struct.s2n_connection, ptr %1692, i32 0, i32 27
  %1694 = load ptr, ptr %1693, align 8, !tbaa !61
  %1695 = icmp eq ptr %1691, %1694
  br i1 %1695, label %1749, label %1696

1696:                                             ; preds = %1686
  br label %1697

1697:                                             ; preds = %1696
  br label %1698

1698:                                             ; preds = %1697
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  %1699 = call ptr @__errno_location() #11
  %1700 = load i32, ptr %1699, align 4, !tbaa !5
  store i32 %1700, ptr %58, align 4, !tbaa !5
  %1701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1702 = call i32 @s2n_print_stacktrace(ptr noundef %1701)
  %1703 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1704 = trunc i8 %1703 to i1
  br i1 %1704, label %1705, label %1727

1705:                                             ; preds = %1698
  %1706 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1707 = call i32 @fileno(ptr noundef %1706) #10
  %1708 = call i32 @isatty(i32 noundef %1707) #10
  %1709 = icmp ne i32 %1708, 0
  br i1 %1709, label %1710, label %1727

1710:                                             ; preds = %1705
  %1711 = load i32, ptr %58, align 4, !tbaa !5
  %1712 = call ptr @__errno_location() #11
  store i32 %1711, ptr %1712, align 4, !tbaa !5
  %1713 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1714 = load i32, ptr @test_count, align 4, !tbaa !5
  %1715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1716 = load i32, ptr %1715, align 4, !tbaa !5
  %1717 = call ptr @s2n_strerror(i32 noundef %1716, ptr noundef @.str.58)
  %1718 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1719 = load i32, ptr %1718, align 4, !tbaa !5
  %1720 = call ptr @s2n_strerror_debug(i32 noundef %1719, ptr noundef @.str.58)
  %1721 = call ptr @__errno_location() #11
  %1722 = load i32, ptr %1721, align 4, !tbaa !5
  %1723 = call ptr @strerror(i32 noundef %1722) #10
  %1724 = call ptr @__errno_location() #11
  %1725 = load i32, ptr %1724, align 4, !tbaa !5
  %1726 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1713, ptr noundef @.str.56, i32 noundef %1714, ptr noundef @.str.77, ptr noundef @.str.55, i32 noundef 228, ptr noundef %1717, ptr noundef %1720, ptr noundef %1723, i32 noundef %1725) #10
  br label %1744

1727:                                             ; preds = %1705, %1698
  %1728 = load i32, ptr %58, align 4, !tbaa !5
  %1729 = call ptr @__errno_location() #11
  store i32 %1728, ptr %1729, align 4, !tbaa !5
  %1730 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1731 = load i32, ptr @test_count, align 4, !tbaa !5
  %1732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1733 = load i32, ptr %1732, align 4, !tbaa !5
  %1734 = call ptr @s2n_strerror(i32 noundef %1733, ptr noundef @.str.58)
  %1735 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1736 = load i32, ptr %1735, align 4, !tbaa !5
  %1737 = call ptr @s2n_strerror_debug(i32 noundef %1736, ptr noundef @.str.58)
  %1738 = call ptr @__errno_location() #11
  %1739 = load i32, ptr %1738, align 4, !tbaa !5
  %1740 = call ptr @strerror(i32 noundef %1739) #10
  %1741 = call ptr @__errno_location() #11
  %1742 = load i32, ptr %1741, align 4, !tbaa !5
  %1743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1730, ptr noundef @.str.59, i32 noundef %1731, ptr noundef @.str.77, ptr noundef @.str.55, i32 noundef 228, ptr noundef %1734, ptr noundef %1737, ptr noundef %1740, i32 noundef %1742) #10
  br label %1744

1744:                                             ; preds = %1727, %1710
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %1745

1745:                                             ; preds = %1744
  br label %1746

1746:                                             ; preds = %1745
  call void @exit(i32 noundef 1) #12
  unreachable

1747:                                             ; No predecessors!
  br label %1748

1748:                                             ; preds = %1747
  br label %1749

1749:                                             ; preds = %1748, %1686
  br label %1750

1750:                                             ; preds = %1749
  br label %1751

1751:                                             ; preds = %1750
  br label %1752

1752:                                             ; preds = %1751
  %1753 = load i32, ptr @test_count, align 4, !tbaa !5
  %1754 = add nsw i32 %1753, 1
  store i32 %1754, ptr @test_count, align 4, !tbaa !5
  %1755 = getelementptr inbounds %struct.s2n_test_secrets, ptr %52, i32 0, i32 1
  %1756 = getelementptr inbounds [6 x %struct.s2n_blob], ptr %1755, i64 0, i64 0
  %1757 = getelementptr inbounds %struct.s2n_blob, ptr %1756, i32 0, i32 1
  %1758 = load i32, ptr %1757, align 8, !tbaa !71
  %1759 = icmp ugt i32 %1758, 0
  br i1 %1759, label %1813, label %1760

1760:                                             ; preds = %1752
  br label %1761

1761:                                             ; preds = %1760
  br label %1762

1762:                                             ; preds = %1761
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  %1763 = call ptr @__errno_location() #11
  %1764 = load i32, ptr %1763, align 4, !tbaa !5
  store i32 %1764, ptr %59, align 4, !tbaa !5
  %1765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1766 = call i32 @s2n_print_stacktrace(ptr noundef %1765)
  %1767 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1768 = trunc i8 %1767 to i1
  br i1 %1768, label %1769, label %1791

1769:                                             ; preds = %1762
  %1770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1771 = call i32 @fileno(ptr noundef %1770) #10
  %1772 = call i32 @isatty(i32 noundef %1771) #10
  %1773 = icmp ne i32 %1772, 0
  br i1 %1773, label %1774, label %1791

1774:                                             ; preds = %1769
  %1775 = load i32, ptr %59, align 4, !tbaa !5
  %1776 = call ptr @__errno_location() #11
  store i32 %1775, ptr %1776, align 4, !tbaa !5
  %1777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1778 = load i32, ptr @test_count, align 4, !tbaa !5
  %1779 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1780 = load i32, ptr %1779, align 4, !tbaa !5
  %1781 = call ptr @s2n_strerror(i32 noundef %1780, ptr noundef @.str.58)
  %1782 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1783 = load i32, ptr %1782, align 4, !tbaa !5
  %1784 = call ptr @s2n_strerror_debug(i32 noundef %1783, ptr noundef @.str.58)
  %1785 = call ptr @__errno_location() #11
  %1786 = load i32, ptr %1785, align 4, !tbaa !5
  %1787 = call ptr @strerror(i32 noundef %1786) #10
  %1788 = call ptr @__errno_location() #11
  %1789 = load i32, ptr %1788, align 4, !tbaa !5
  %1790 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1777, ptr noundef @.str.56, i32 noundef %1778, ptr noundef @.str.78, ptr noundef @.str.55, i32 noundef 230, ptr noundef %1781, ptr noundef %1784, ptr noundef %1787, i32 noundef %1789) #10
  br label %1808

1791:                                             ; preds = %1769, %1762
  %1792 = load i32, ptr %59, align 4, !tbaa !5
  %1793 = call ptr @__errno_location() #11
  store i32 %1792, ptr %1793, align 4, !tbaa !5
  %1794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1795 = load i32, ptr @test_count, align 4, !tbaa !5
  %1796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1797 = load i32, ptr %1796, align 4, !tbaa !5
  %1798 = call ptr @s2n_strerror(i32 noundef %1797, ptr noundef @.str.58)
  %1799 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1800 = load i32, ptr %1799, align 4, !tbaa !5
  %1801 = call ptr @s2n_strerror_debug(i32 noundef %1800, ptr noundef @.str.58)
  %1802 = call ptr @__errno_location() #11
  %1803 = load i32, ptr %1802, align 4, !tbaa !5
  %1804 = call ptr @strerror(i32 noundef %1803) #10
  %1805 = call ptr @__errno_location() #11
  %1806 = load i32, ptr %1805, align 4, !tbaa !5
  %1807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1794, ptr noundef @.str.59, i32 noundef %1795, ptr noundef @.str.78, ptr noundef @.str.55, i32 noundef 230, ptr noundef %1798, ptr noundef %1801, ptr noundef %1804, i32 noundef %1806) #10
  br label %1808

1808:                                             ; preds = %1791, %1774
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %1809

1809:                                             ; preds = %1808
  br label %1810

1810:                                             ; preds = %1809
  call void @exit(i32 noundef 1) #12
  unreachable

1811:                                             ; No predecessors!
  br label %1812

1812:                                             ; preds = %1811
  br label %1813

1813:                                             ; preds = %1812, %1752
  br label %1814

1814:                                             ; preds = %1813
  br label %1815

1815:                                             ; preds = %1814
  br label %2393

1816:                                             ; preds = %1548, %1548, %1548, %1548, %1548
  br label %1817

1817:                                             ; preds = %1816
  %1818 = load i32, ptr @test_count, align 4, !tbaa !5
  %1819 = add nsw i32 %1818, 1
  store i32 %1819, ptr @test_count, align 4, !tbaa !5
  %1820 = load ptr, ptr %49, align 8, !tbaa !9
  %1821 = getelementptr inbounds %struct.s2n_connection, ptr %1820, i32 0, i32 30
  %1822 = load ptr, ptr %1821, align 8, !tbaa !70
  %1823 = load ptr, ptr %49, align 8, !tbaa !9
  %1824 = getelementptr inbounds %struct.s2n_connection, ptr %1823, i32 0, i32 27
  %1825 = load ptr, ptr %1824, align 8, !tbaa !61
  %1826 = icmp eq ptr %1822, %1825
  br i1 %1826, label %1880, label %1827

1827:                                             ; preds = %1817
  br label %1828

1828:                                             ; preds = %1827
  br label %1829

1829:                                             ; preds = %1828
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #10
  %1830 = call ptr @__errno_location() #11
  %1831 = load i32, ptr %1830, align 4, !tbaa !5
  store i32 %1831, ptr %60, align 4, !tbaa !5
  %1832 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1833 = call i32 @s2n_print_stacktrace(ptr noundef %1832)
  %1834 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1835 = trunc i8 %1834 to i1
  br i1 %1835, label %1836, label %1858

1836:                                             ; preds = %1829
  %1837 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1838 = call i32 @fileno(ptr noundef %1837) #10
  %1839 = call i32 @isatty(i32 noundef %1838) #10
  %1840 = icmp ne i32 %1839, 0
  br i1 %1840, label %1841, label %1858

1841:                                             ; preds = %1836
  %1842 = load i32, ptr %60, align 4, !tbaa !5
  %1843 = call ptr @__errno_location() #11
  store i32 %1842, ptr %1843, align 4, !tbaa !5
  %1844 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1845 = load i32, ptr @test_count, align 4, !tbaa !5
  %1846 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1847 = load i32, ptr %1846, align 4, !tbaa !5
  %1848 = call ptr @s2n_strerror(i32 noundef %1847, ptr noundef @.str.58)
  %1849 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1850 = load i32, ptr %1849, align 4, !tbaa !5
  %1851 = call ptr @s2n_strerror_debug(i32 noundef %1850, ptr noundef @.str.58)
  %1852 = call ptr @__errno_location() #11
  %1853 = load i32, ptr %1852, align 4, !tbaa !5
  %1854 = call ptr @strerror(i32 noundef %1853) #10
  %1855 = call ptr @__errno_location() #11
  %1856 = load i32, ptr %1855, align 4, !tbaa !5
  %1857 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1844, ptr noundef @.str.56, i32 noundef %1845, ptr noundef @.str.79, ptr noundef @.str.55, i32 noundef 238, ptr noundef %1848, ptr noundef %1851, ptr noundef %1854, i32 noundef %1856) #10
  br label %1875

1858:                                             ; preds = %1836, %1829
  %1859 = load i32, ptr %60, align 4, !tbaa !5
  %1860 = call ptr @__errno_location() #11
  store i32 %1859, ptr %1860, align 4, !tbaa !5
  %1861 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1862 = load i32, ptr @test_count, align 4, !tbaa !5
  %1863 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1864 = load i32, ptr %1863, align 4, !tbaa !5
  %1865 = call ptr @s2n_strerror(i32 noundef %1864, ptr noundef @.str.58)
  %1866 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1867 = load i32, ptr %1866, align 4, !tbaa !5
  %1868 = call ptr @s2n_strerror_debug(i32 noundef %1867, ptr noundef @.str.58)
  %1869 = call ptr @__errno_location() #11
  %1870 = load i32, ptr %1869, align 4, !tbaa !5
  %1871 = call ptr @strerror(i32 noundef %1870) #10
  %1872 = call ptr @__errno_location() #11
  %1873 = load i32, ptr %1872, align 4, !tbaa !5
  %1874 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1861, ptr noundef @.str.59, i32 noundef %1862, ptr noundef @.str.79, ptr noundef @.str.55, i32 noundef 238, ptr noundef %1865, ptr noundef %1868, ptr noundef %1871, i32 noundef %1873) #10
  br label %1875

1875:                                             ; preds = %1858, %1841
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %1876

1876:                                             ; preds = %1875
  br label %1877

1877:                                             ; preds = %1876
  call void @exit(i32 noundef 1) #12
  unreachable

1878:                                             ; No predecessors!
  br label %1879

1879:                                             ; preds = %1878
  br label %1880

1880:                                             ; preds = %1879, %1817
  br label %1881

1881:                                             ; preds = %1880
  br label %1882

1882:                                             ; preds = %1881
  br label %1883

1883:                                             ; preds = %1882
  %1884 = load i32, ptr @test_count, align 4, !tbaa !5
  %1885 = add nsw i32 %1884, 1
  store i32 %1885, ptr @test_count, align 4, !tbaa !5
  %1886 = getelementptr inbounds %struct.s2n_test_secrets, ptr %52, i32 0, i32 1
  %1887 = getelementptr inbounds [6 x %struct.s2n_blob], ptr %1886, i64 0, i64 2
  %1888 = getelementptr inbounds %struct.s2n_blob, ptr %1887, i32 0, i32 1
  %1889 = load i32, ptr %1888, align 8, !tbaa !71
  %1890 = icmp ugt i32 %1889, 0
  br i1 %1890, label %1944, label %1891

1891:                                             ; preds = %1883
  br label %1892

1892:                                             ; preds = %1891
  br label %1893

1893:                                             ; preds = %1892
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  %1894 = call ptr @__errno_location() #11
  %1895 = load i32, ptr %1894, align 4, !tbaa !5
  store i32 %1895, ptr %61, align 4, !tbaa !5
  %1896 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1897 = call i32 @s2n_print_stacktrace(ptr noundef %1896)
  %1898 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1899 = trunc i8 %1898 to i1
  br i1 %1899, label %1900, label %1922

1900:                                             ; preds = %1893
  %1901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1902 = call i32 @fileno(ptr noundef %1901) #10
  %1903 = call i32 @isatty(i32 noundef %1902) #10
  %1904 = icmp ne i32 %1903, 0
  br i1 %1904, label %1905, label %1922

1905:                                             ; preds = %1900
  %1906 = load i32, ptr %61, align 4, !tbaa !5
  %1907 = call ptr @__errno_location() #11
  store i32 %1906, ptr %1907, align 4, !tbaa !5
  %1908 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1909 = load i32, ptr @test_count, align 4, !tbaa !5
  %1910 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1911 = load i32, ptr %1910, align 4, !tbaa !5
  %1912 = call ptr @s2n_strerror(i32 noundef %1911, ptr noundef @.str.58)
  %1913 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1914 = load i32, ptr %1913, align 4, !tbaa !5
  %1915 = call ptr @s2n_strerror_debug(i32 noundef %1914, ptr noundef @.str.58)
  %1916 = call ptr @__errno_location() #11
  %1917 = load i32, ptr %1916, align 4, !tbaa !5
  %1918 = call ptr @strerror(i32 noundef %1917) #10
  %1919 = call ptr @__errno_location() #11
  %1920 = load i32, ptr %1919, align 4, !tbaa !5
  %1921 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1908, ptr noundef @.str.56, i32 noundef %1909, ptr noundef @.str.80, ptr noundef @.str.55, i32 noundef 240, ptr noundef %1912, ptr noundef %1915, ptr noundef %1918, i32 noundef %1920) #10
  br label %1939

1922:                                             ; preds = %1900, %1893
  %1923 = load i32, ptr %61, align 4, !tbaa !5
  %1924 = call ptr @__errno_location() #11
  store i32 %1923, ptr %1924, align 4, !tbaa !5
  %1925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1926 = load i32, ptr @test_count, align 4, !tbaa !5
  %1927 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1928 = load i32, ptr %1927, align 4, !tbaa !5
  %1929 = call ptr @s2n_strerror(i32 noundef %1928, ptr noundef @.str.58)
  %1930 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1931 = load i32, ptr %1930, align 4, !tbaa !5
  %1932 = call ptr @s2n_strerror_debug(i32 noundef %1931, ptr noundef @.str.58)
  %1933 = call ptr @__errno_location() #11
  %1934 = load i32, ptr %1933, align 4, !tbaa !5
  %1935 = call ptr @strerror(i32 noundef %1934) #10
  %1936 = call ptr @__errno_location() #11
  %1937 = load i32, ptr %1936, align 4, !tbaa !5
  %1938 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1925, ptr noundef @.str.59, i32 noundef %1926, ptr noundef @.str.80, ptr noundef @.str.55, i32 noundef 240, ptr noundef %1929, ptr noundef %1932, ptr noundef %1935, i32 noundef %1937) #10
  br label %1939

1939:                                             ; preds = %1922, %1905
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %1940

1940:                                             ; preds = %1939
  br label %1941

1941:                                             ; preds = %1940
  call void @exit(i32 noundef 1) #12
  unreachable

1942:                                             ; No predecessors!
  br label %1943

1943:                                             ; preds = %1942
  br label %1944

1944:                                             ; preds = %1943, %1883
  br label %1945

1945:                                             ; preds = %1944
  br label %1946

1946:                                             ; preds = %1945
  br label %2393

1947:                                             ; preds = %1548, %1548, %1548
  br label %1948

1948:                                             ; preds = %1947
  %1949 = load i32, ptr @test_count, align 4, !tbaa !5
  %1950 = add nsw i32 %1949, 1
  store i32 %1950, ptr @test_count, align 4, !tbaa !5
  %1951 = load ptr, ptr %49, align 8, !tbaa !9
  %1952 = getelementptr inbounds %struct.s2n_connection, ptr %1951, i32 0, i32 29
  %1953 = load ptr, ptr %1952, align 8, !tbaa !68
  %1954 = load ptr, ptr %49, align 8, !tbaa !9
  %1955 = getelementptr inbounds %struct.s2n_connection, ptr %1954, i32 0, i32 27
  %1956 = load ptr, ptr %1955, align 8, !tbaa !61
  %1957 = icmp eq ptr %1953, %1956
  br i1 %1957, label %2011, label %1958

1958:                                             ; preds = %1948
  br label %1959

1959:                                             ; preds = %1958
  br label %1960

1960:                                             ; preds = %1959
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  %1961 = call ptr @__errno_location() #11
  %1962 = load i32, ptr %1961, align 4, !tbaa !5
  store i32 %1962, ptr %62, align 4, !tbaa !5
  %1963 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1964 = call i32 @s2n_print_stacktrace(ptr noundef %1963)
  %1965 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1966 = trunc i8 %1965 to i1
  br i1 %1966, label %1967, label %1989

1967:                                             ; preds = %1960
  %1968 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1969 = call i32 @fileno(ptr noundef %1968) #10
  %1970 = call i32 @isatty(i32 noundef %1969) #10
  %1971 = icmp ne i32 %1970, 0
  br i1 %1971, label %1972, label %1989

1972:                                             ; preds = %1967
  %1973 = load i32, ptr %62, align 4, !tbaa !5
  %1974 = call ptr @__errno_location() #11
  store i32 %1973, ptr %1974, align 4, !tbaa !5
  %1975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1976 = load i32, ptr @test_count, align 4, !tbaa !5
  %1977 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1978 = load i32, ptr %1977, align 4, !tbaa !5
  %1979 = call ptr @s2n_strerror(i32 noundef %1978, ptr noundef @.str.58)
  %1980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1981 = load i32, ptr %1980, align 4, !tbaa !5
  %1982 = call ptr @s2n_strerror_debug(i32 noundef %1981, ptr noundef @.str.58)
  %1983 = call ptr @__errno_location() #11
  %1984 = load i32, ptr %1983, align 4, !tbaa !5
  %1985 = call ptr @strerror(i32 noundef %1984) #10
  %1986 = call ptr @__errno_location() #11
  %1987 = load i32, ptr %1986, align 4, !tbaa !5
  %1988 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1975, ptr noundef @.str.56, i32 noundef %1976, ptr noundef @.str.77, ptr noundef @.str.55, i32 noundef 246, ptr noundef %1979, ptr noundef %1982, ptr noundef %1985, i32 noundef %1987) #10
  br label %2006

1989:                                             ; preds = %1967, %1960
  %1990 = load i32, ptr %62, align 4, !tbaa !5
  %1991 = call ptr @__errno_location() #11
  store i32 %1990, ptr %1991, align 4, !tbaa !5
  %1992 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1993 = load i32, ptr @test_count, align 4, !tbaa !5
  %1994 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1995 = load i32, ptr %1994, align 4, !tbaa !5
  %1996 = call ptr @s2n_strerror(i32 noundef %1995, ptr noundef @.str.58)
  %1997 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1998 = load i32, ptr %1997, align 4, !tbaa !5
  %1999 = call ptr @s2n_strerror_debug(i32 noundef %1998, ptr noundef @.str.58)
  %2000 = call ptr @__errno_location() #11
  %2001 = load i32, ptr %2000, align 4, !tbaa !5
  %2002 = call ptr @strerror(i32 noundef %2001) #10
  %2003 = call ptr @__errno_location() #11
  %2004 = load i32, ptr %2003, align 4, !tbaa !5
  %2005 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1992, ptr noundef @.str.59, i32 noundef %1993, ptr noundef @.str.77, ptr noundef @.str.55, i32 noundef 246, ptr noundef %1996, ptr noundef %1999, ptr noundef %2002, i32 noundef %2004) #10
  br label %2006

2006:                                             ; preds = %1989, %1972
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  br label %2007

2007:                                             ; preds = %2006
  br label %2008

2008:                                             ; preds = %2007
  call void @exit(i32 noundef 1) #12
  unreachable

2009:                                             ; No predecessors!
  br label %2010

2010:                                             ; preds = %2009
  br label %2011

2011:                                             ; preds = %2010, %1948
  br label %2012

2012:                                             ; preds = %2011
  br label %2013

2013:                                             ; preds = %2012
  br label %2014

2014:                                             ; preds = %2013
  %2015 = load i32, ptr @test_count, align 4, !tbaa !5
  %2016 = add nsw i32 %2015, 1
  store i32 %2016, ptr @test_count, align 4, !tbaa !5
  %2017 = getelementptr inbounds %struct.s2n_test_secrets, ptr %52, i32 0, i32 1
  %2018 = getelementptr inbounds [6 x %struct.s2n_blob], ptr %2017, i64 0, i64 1
  %2019 = getelementptr inbounds %struct.s2n_blob, ptr %2018, i32 0, i32 1
  %2020 = load i32, ptr %2019, align 8, !tbaa !71
  %2021 = icmp ugt i32 %2020, 0
  br i1 %2021, label %2075, label %2022

2022:                                             ; preds = %2014
  br label %2023

2023:                                             ; preds = %2022
  br label %2024

2024:                                             ; preds = %2023
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  %2025 = call ptr @__errno_location() #11
  %2026 = load i32, ptr %2025, align 4, !tbaa !5
  store i32 %2026, ptr %63, align 4, !tbaa !5
  %2027 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2028 = call i32 @s2n_print_stacktrace(ptr noundef %2027)
  %2029 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2030 = trunc i8 %2029 to i1
  br i1 %2030, label %2031, label %2053

2031:                                             ; preds = %2024
  %2032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2033 = call i32 @fileno(ptr noundef %2032) #10
  %2034 = call i32 @isatty(i32 noundef %2033) #10
  %2035 = icmp ne i32 %2034, 0
  br i1 %2035, label %2036, label %2053

2036:                                             ; preds = %2031
  %2037 = load i32, ptr %63, align 4, !tbaa !5
  %2038 = call ptr @__errno_location() #11
  store i32 %2037, ptr %2038, align 4, !tbaa !5
  %2039 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2040 = load i32, ptr @test_count, align 4, !tbaa !5
  %2041 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2042 = load i32, ptr %2041, align 4, !tbaa !5
  %2043 = call ptr @s2n_strerror(i32 noundef %2042, ptr noundef @.str.58)
  %2044 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2045 = load i32, ptr %2044, align 4, !tbaa !5
  %2046 = call ptr @s2n_strerror_debug(i32 noundef %2045, ptr noundef @.str.58)
  %2047 = call ptr @__errno_location() #11
  %2048 = load i32, ptr %2047, align 4, !tbaa !5
  %2049 = call ptr @strerror(i32 noundef %2048) #10
  %2050 = call ptr @__errno_location() #11
  %2051 = load i32, ptr %2050, align 4, !tbaa !5
  %2052 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2039, ptr noundef @.str.56, i32 noundef %2040, ptr noundef @.str.81, ptr noundef @.str.55, i32 noundef 248, ptr noundef %2043, ptr noundef %2046, ptr noundef %2049, i32 noundef %2051) #10
  br label %2070

2053:                                             ; preds = %2031, %2024
  %2054 = load i32, ptr %63, align 4, !tbaa !5
  %2055 = call ptr @__errno_location() #11
  store i32 %2054, ptr %2055, align 4, !tbaa !5
  %2056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2057 = load i32, ptr @test_count, align 4, !tbaa !5
  %2058 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2059 = load i32, ptr %2058, align 4, !tbaa !5
  %2060 = call ptr @s2n_strerror(i32 noundef %2059, ptr noundef @.str.58)
  %2061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2062 = load i32, ptr %2061, align 4, !tbaa !5
  %2063 = call ptr @s2n_strerror_debug(i32 noundef %2062, ptr noundef @.str.58)
  %2064 = call ptr @__errno_location() #11
  %2065 = load i32, ptr %2064, align 4, !tbaa !5
  %2066 = call ptr @strerror(i32 noundef %2065) #10
  %2067 = call ptr @__errno_location() #11
  %2068 = load i32, ptr %2067, align 4, !tbaa !5
  %2069 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2056, ptr noundef @.str.59, i32 noundef %2057, ptr noundef @.str.81, ptr noundef @.str.55, i32 noundef 248, ptr noundef %2060, ptr noundef %2063, ptr noundef %2066, i32 noundef %2068) #10
  br label %2070

2070:                                             ; preds = %2053, %2036
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  br label %2071

2071:                                             ; preds = %2070
  br label %2072

2072:                                             ; preds = %2071
  call void @exit(i32 noundef 1) #12
  unreachable

2073:                                             ; No predecessors!
  br label %2074

2074:                                             ; preds = %2073
  br label %2075

2075:                                             ; preds = %2074, %2014
  br label %2076

2076:                                             ; preds = %2075
  br label %2077

2077:                                             ; preds = %2076
  br label %2393

2078:                                             ; preds = %1548
  br label %2079

2079:                                             ; preds = %2078
  %2080 = load i32, ptr @test_count, align 4, !tbaa !5
  %2081 = add nsw i32 %2080, 1
  store i32 %2081, ptr @test_count, align 4, !tbaa !5
  %2082 = load ptr, ptr %49, align 8, !tbaa !9
  %2083 = getelementptr inbounds %struct.s2n_connection, ptr %2082, i32 0, i32 29
  %2084 = load ptr, ptr %2083, align 8, !tbaa !68
  %2085 = load ptr, ptr %49, align 8, !tbaa !9
  %2086 = getelementptr inbounds %struct.s2n_connection, ptr %2085, i32 0, i32 27
  %2087 = load ptr, ptr %2086, align 8, !tbaa !61
  %2088 = icmp eq ptr %2084, %2087
  br i1 %2088, label %2142, label %2089

2089:                                             ; preds = %2079
  br label %2090

2090:                                             ; preds = %2089
  br label %2091

2091:                                             ; preds = %2090
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #10
  %2092 = call ptr @__errno_location() #11
  %2093 = load i32, ptr %2092, align 4, !tbaa !5
  store i32 %2093, ptr %64, align 4, !tbaa !5
  %2094 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2095 = call i32 @s2n_print_stacktrace(ptr noundef %2094)
  %2096 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2097 = trunc i8 %2096 to i1
  br i1 %2097, label %2098, label %2120

2098:                                             ; preds = %2091
  %2099 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2100 = call i32 @fileno(ptr noundef %2099) #10
  %2101 = call i32 @isatty(i32 noundef %2100) #10
  %2102 = icmp ne i32 %2101, 0
  br i1 %2102, label %2103, label %2120

2103:                                             ; preds = %2098
  %2104 = load i32, ptr %64, align 4, !tbaa !5
  %2105 = call ptr @__errno_location() #11
  store i32 %2104, ptr %2105, align 4, !tbaa !5
  %2106 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2107 = load i32, ptr @test_count, align 4, !tbaa !5
  %2108 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2109 = load i32, ptr %2108, align 4, !tbaa !5
  %2110 = call ptr @s2n_strerror(i32 noundef %2109, ptr noundef @.str.58)
  %2111 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2112 = load i32, ptr %2111, align 4, !tbaa !5
  %2113 = call ptr @s2n_strerror_debug(i32 noundef %2112, ptr noundef @.str.58)
  %2114 = call ptr @__errno_location() #11
  %2115 = load i32, ptr %2114, align 4, !tbaa !5
  %2116 = call ptr @strerror(i32 noundef %2115) #10
  %2117 = call ptr @__errno_location() #11
  %2118 = load i32, ptr %2117, align 4, !tbaa !5
  %2119 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2106, ptr noundef @.str.56, i32 noundef %2107, ptr noundef @.str.77, ptr noundef @.str.55, i32 noundef 252, ptr noundef %2110, ptr noundef %2113, ptr noundef %2116, i32 noundef %2118) #10
  br label %2137

2120:                                             ; preds = %2098, %2091
  %2121 = load i32, ptr %64, align 4, !tbaa !5
  %2122 = call ptr @__errno_location() #11
  store i32 %2121, ptr %2122, align 4, !tbaa !5
  %2123 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2124 = load i32, ptr @test_count, align 4, !tbaa !5
  %2125 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2126 = load i32, ptr %2125, align 4, !tbaa !5
  %2127 = call ptr @s2n_strerror(i32 noundef %2126, ptr noundef @.str.58)
  %2128 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2129 = load i32, ptr %2128, align 4, !tbaa !5
  %2130 = call ptr @s2n_strerror_debug(i32 noundef %2129, ptr noundef @.str.58)
  %2131 = call ptr @__errno_location() #11
  %2132 = load i32, ptr %2131, align 4, !tbaa !5
  %2133 = call ptr @strerror(i32 noundef %2132) #10
  %2134 = call ptr @__errno_location() #11
  %2135 = load i32, ptr %2134, align 4, !tbaa !5
  %2136 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2123, ptr noundef @.str.59, i32 noundef %2124, ptr noundef @.str.77, ptr noundef @.str.55, i32 noundef 252, ptr noundef %2127, ptr noundef %2130, ptr noundef %2133, i32 noundef %2135) #10
  br label %2137

2137:                                             ; preds = %2120, %2103
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #10
  br label %2138

2138:                                             ; preds = %2137
  br label %2139

2139:                                             ; preds = %2138
  call void @exit(i32 noundef 1) #12
  unreachable

2140:                                             ; No predecessors!
  br label %2141

2141:                                             ; preds = %2140
  br label %2142

2142:                                             ; preds = %2141, %2079
  br label %2143

2143:                                             ; preds = %2142
  br label %2144

2144:                                             ; preds = %2143
  br label %2145

2145:                                             ; preds = %2144
  %2146 = load i32, ptr @test_count, align 4, !tbaa !5
  %2147 = add nsw i32 %2146, 1
  store i32 %2147, ptr @test_count, align 4, !tbaa !5
  %2148 = load ptr, ptr %49, align 8, !tbaa !9
  %2149 = getelementptr inbounds %struct.s2n_connection, ptr %2148, i32 0, i32 30
  %2150 = load ptr, ptr %2149, align 8, !tbaa !70
  %2151 = load ptr, ptr %49, align 8, !tbaa !9
  %2152 = getelementptr inbounds %struct.s2n_connection, ptr %2151, i32 0, i32 27
  %2153 = load ptr, ptr %2152, align 8, !tbaa !61
  %2154 = icmp eq ptr %2150, %2153
  br i1 %2154, label %2208, label %2155

2155:                                             ; preds = %2145
  br label %2156

2156:                                             ; preds = %2155
  br label %2157

2157:                                             ; preds = %2156
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #10
  %2158 = call ptr @__errno_location() #11
  %2159 = load i32, ptr %2158, align 4, !tbaa !5
  store i32 %2159, ptr %65, align 4, !tbaa !5
  %2160 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2161 = call i32 @s2n_print_stacktrace(ptr noundef %2160)
  %2162 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2163 = trunc i8 %2162 to i1
  br i1 %2163, label %2164, label %2186

2164:                                             ; preds = %2157
  %2165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2166 = call i32 @fileno(ptr noundef %2165) #10
  %2167 = call i32 @isatty(i32 noundef %2166) #10
  %2168 = icmp ne i32 %2167, 0
  br i1 %2168, label %2169, label %2186

2169:                                             ; preds = %2164
  %2170 = load i32, ptr %65, align 4, !tbaa !5
  %2171 = call ptr @__errno_location() #11
  store i32 %2170, ptr %2171, align 4, !tbaa !5
  %2172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2173 = load i32, ptr @test_count, align 4, !tbaa !5
  %2174 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2175 = load i32, ptr %2174, align 4, !tbaa !5
  %2176 = call ptr @s2n_strerror(i32 noundef %2175, ptr noundef @.str.58)
  %2177 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2178 = load i32, ptr %2177, align 4, !tbaa !5
  %2179 = call ptr @s2n_strerror_debug(i32 noundef %2178, ptr noundef @.str.58)
  %2180 = call ptr @__errno_location() #11
  %2181 = load i32, ptr %2180, align 4, !tbaa !5
  %2182 = call ptr @strerror(i32 noundef %2181) #10
  %2183 = call ptr @__errno_location() #11
  %2184 = load i32, ptr %2183, align 4, !tbaa !5
  %2185 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2172, ptr noundef @.str.56, i32 noundef %2173, ptr noundef @.str.79, ptr noundef @.str.55, i32 noundef 253, ptr noundef %2176, ptr noundef %2179, ptr noundef %2182, i32 noundef %2184) #10
  br label %2203

2186:                                             ; preds = %2164, %2157
  %2187 = load i32, ptr %65, align 4, !tbaa !5
  %2188 = call ptr @__errno_location() #11
  store i32 %2187, ptr %2188, align 4, !tbaa !5
  %2189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2190 = load i32, ptr @test_count, align 4, !tbaa !5
  %2191 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2192 = load i32, ptr %2191, align 4, !tbaa !5
  %2193 = call ptr @s2n_strerror(i32 noundef %2192, ptr noundef @.str.58)
  %2194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2195 = load i32, ptr %2194, align 4, !tbaa !5
  %2196 = call ptr @s2n_strerror_debug(i32 noundef %2195, ptr noundef @.str.58)
  %2197 = call ptr @__errno_location() #11
  %2198 = load i32, ptr %2197, align 4, !tbaa !5
  %2199 = call ptr @strerror(i32 noundef %2198) #10
  %2200 = call ptr @__errno_location() #11
  %2201 = load i32, ptr %2200, align 4, !tbaa !5
  %2202 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2189, ptr noundef @.str.59, i32 noundef %2190, ptr noundef @.str.79, ptr noundef @.str.55, i32 noundef 253, ptr noundef %2193, ptr noundef %2196, ptr noundef %2199, i32 noundef %2201) #10
  br label %2203

2203:                                             ; preds = %2186, %2169
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #10
  br label %2204

2204:                                             ; preds = %2203
  br label %2205

2205:                                             ; preds = %2204
  call void @exit(i32 noundef 1) #12
  unreachable

2206:                                             ; No predecessors!
  br label %2207

2207:                                             ; preds = %2206
  br label %2208

2208:                                             ; preds = %2207, %2145
  br label %2209

2209:                                             ; preds = %2208
  br label %2210

2210:                                             ; preds = %2209
  br label %2211

2211:                                             ; preds = %2210
  %2212 = load i32, ptr @test_count, align 4, !tbaa !5
  %2213 = add nsw i32 %2212, 1
  store i32 %2213, ptr @test_count, align 4, !tbaa !5
  %2214 = getelementptr inbounds %struct.s2n_test_secrets, ptr %52, i32 0, i32 1
  %2215 = getelementptr inbounds [6 x %struct.s2n_blob], ptr %2214, i64 0, i64 3
  %2216 = getelementptr inbounds %struct.s2n_blob, ptr %2215, i32 0, i32 1
  %2217 = load i32, ptr %2216, align 8, !tbaa !71
  %2218 = icmp ugt i32 %2217, 0
  br i1 %2218, label %2272, label %2219

2219:                                             ; preds = %2211
  br label %2220

2220:                                             ; preds = %2219
  br label %2221

2221:                                             ; preds = %2220
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #10
  %2222 = call ptr @__errno_location() #11
  %2223 = load i32, ptr %2222, align 4, !tbaa !5
  store i32 %2223, ptr %66, align 4, !tbaa !5
  %2224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2225 = call i32 @s2n_print_stacktrace(ptr noundef %2224)
  %2226 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2227 = trunc i8 %2226 to i1
  br i1 %2227, label %2228, label %2250

2228:                                             ; preds = %2221
  %2229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2230 = call i32 @fileno(ptr noundef %2229) #10
  %2231 = call i32 @isatty(i32 noundef %2230) #10
  %2232 = icmp ne i32 %2231, 0
  br i1 %2232, label %2233, label %2250

2233:                                             ; preds = %2228
  %2234 = load i32, ptr %66, align 4, !tbaa !5
  %2235 = call ptr @__errno_location() #11
  store i32 %2234, ptr %2235, align 4, !tbaa !5
  %2236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2237 = load i32, ptr @test_count, align 4, !tbaa !5
  %2238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2239 = load i32, ptr %2238, align 4, !tbaa !5
  %2240 = call ptr @s2n_strerror(i32 noundef %2239, ptr noundef @.str.58)
  %2241 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2242 = load i32, ptr %2241, align 4, !tbaa !5
  %2243 = call ptr @s2n_strerror_debug(i32 noundef %2242, ptr noundef @.str.58)
  %2244 = call ptr @__errno_location() #11
  %2245 = load i32, ptr %2244, align 4, !tbaa !5
  %2246 = call ptr @strerror(i32 noundef %2245) #10
  %2247 = call ptr @__errno_location() #11
  %2248 = load i32, ptr %2247, align 4, !tbaa !5
  %2249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2236, ptr noundef @.str.56, i32 noundef %2237, ptr noundef @.str.82, ptr noundef @.str.55, i32 noundef 255, ptr noundef %2240, ptr noundef %2243, ptr noundef %2246, i32 noundef %2248) #10
  br label %2267

2250:                                             ; preds = %2228, %2221
  %2251 = load i32, ptr %66, align 4, !tbaa !5
  %2252 = call ptr @__errno_location() #11
  store i32 %2251, ptr %2252, align 4, !tbaa !5
  %2253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2254 = load i32, ptr @test_count, align 4, !tbaa !5
  %2255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2256 = load i32, ptr %2255, align 4, !tbaa !5
  %2257 = call ptr @s2n_strerror(i32 noundef %2256, ptr noundef @.str.58)
  %2258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2259 = load i32, ptr %2258, align 4, !tbaa !5
  %2260 = call ptr @s2n_strerror_debug(i32 noundef %2259, ptr noundef @.str.58)
  %2261 = call ptr @__errno_location() #11
  %2262 = load i32, ptr %2261, align 4, !tbaa !5
  %2263 = call ptr @strerror(i32 noundef %2262) #10
  %2264 = call ptr @__errno_location() #11
  %2265 = load i32, ptr %2264, align 4, !tbaa !5
  %2266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2253, ptr noundef @.str.59, i32 noundef %2254, ptr noundef @.str.82, ptr noundef @.str.55, i32 noundef 255, ptr noundef %2257, ptr noundef %2260, ptr noundef %2263, i32 noundef %2265) #10
  br label %2267

2267:                                             ; preds = %2250, %2233
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #10
  br label %2268

2268:                                             ; preds = %2267
  br label %2269

2269:                                             ; preds = %2268
  call void @exit(i32 noundef 1) #12
  unreachable

2270:                                             ; No predecessors!
  br label %2271

2271:                                             ; preds = %2270
  br label %2272

2272:                                             ; preds = %2271, %2211
  br label %2273

2273:                                             ; preds = %2272
  br label %2274

2274:                                             ; preds = %2273
  br label %2275

2275:                                             ; preds = %2274
  %2276 = load i32, ptr @test_count, align 4, !tbaa !5
  %2277 = add nsw i32 %2276, 1
  store i32 %2277, ptr @test_count, align 4, !tbaa !5
  %2278 = getelementptr inbounds %struct.s2n_test_secrets, ptr %52, i32 0, i32 1
  %2279 = getelementptr inbounds [6 x %struct.s2n_blob], ptr %2278, i64 0, i64 4
  %2280 = getelementptr inbounds %struct.s2n_blob, ptr %2279, i32 0, i32 1
  %2281 = load i32, ptr %2280, align 8, !tbaa !71
  %2282 = icmp ugt i32 %2281, 0
  br i1 %2282, label %2336, label %2283

2283:                                             ; preds = %2275
  br label %2284

2284:                                             ; preds = %2283
  br label %2285

2285:                                             ; preds = %2284
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #10
  %2286 = call ptr @__errno_location() #11
  %2287 = load i32, ptr %2286, align 4, !tbaa !5
  store i32 %2287, ptr %67, align 4, !tbaa !5
  %2288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2289 = call i32 @s2n_print_stacktrace(ptr noundef %2288)
  %2290 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2291 = trunc i8 %2290 to i1
  br i1 %2291, label %2292, label %2314

2292:                                             ; preds = %2285
  %2293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2294 = call i32 @fileno(ptr noundef %2293) #10
  %2295 = call i32 @isatty(i32 noundef %2294) #10
  %2296 = icmp ne i32 %2295, 0
  br i1 %2296, label %2297, label %2314

2297:                                             ; preds = %2292
  %2298 = load i32, ptr %67, align 4, !tbaa !5
  %2299 = call ptr @__errno_location() #11
  store i32 %2298, ptr %2299, align 4, !tbaa !5
  %2300 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2301 = load i32, ptr @test_count, align 4, !tbaa !5
  %2302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2303 = load i32, ptr %2302, align 4, !tbaa !5
  %2304 = call ptr @s2n_strerror(i32 noundef %2303, ptr noundef @.str.58)
  %2305 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2306 = load i32, ptr %2305, align 4, !tbaa !5
  %2307 = call ptr @s2n_strerror_debug(i32 noundef %2306, ptr noundef @.str.58)
  %2308 = call ptr @__errno_location() #11
  %2309 = load i32, ptr %2308, align 4, !tbaa !5
  %2310 = call ptr @strerror(i32 noundef %2309) #10
  %2311 = call ptr @__errno_location() #11
  %2312 = load i32, ptr %2311, align 4, !tbaa !5
  %2313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2300, ptr noundef @.str.56, i32 noundef %2301, ptr noundef @.str.83, ptr noundef @.str.55, i32 noundef 256, ptr noundef %2304, ptr noundef %2307, ptr noundef %2310, i32 noundef %2312) #10
  br label %2331

2314:                                             ; preds = %2292, %2285
  %2315 = load i32, ptr %67, align 4, !tbaa !5
  %2316 = call ptr @__errno_location() #11
  store i32 %2315, ptr %2316, align 4, !tbaa !5
  %2317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2318 = load i32, ptr @test_count, align 4, !tbaa !5
  %2319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2320 = load i32, ptr %2319, align 4, !tbaa !5
  %2321 = call ptr @s2n_strerror(i32 noundef %2320, ptr noundef @.str.58)
  %2322 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2323 = load i32, ptr %2322, align 4, !tbaa !5
  %2324 = call ptr @s2n_strerror_debug(i32 noundef %2323, ptr noundef @.str.58)
  %2325 = call ptr @__errno_location() #11
  %2326 = load i32, ptr %2325, align 4, !tbaa !5
  %2327 = call ptr @strerror(i32 noundef %2326) #10
  %2328 = call ptr @__errno_location() #11
  %2329 = load i32, ptr %2328, align 4, !tbaa !5
  %2330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2317, ptr noundef @.str.59, i32 noundef %2318, ptr noundef @.str.83, ptr noundef @.str.55, i32 noundef 256, ptr noundef %2321, ptr noundef %2324, ptr noundef %2327, i32 noundef %2329) #10
  br label %2331

2331:                                             ; preds = %2314, %2297
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  br label %2332

2332:                                             ; preds = %2331
  br label %2333

2333:                                             ; preds = %2332
  call void @exit(i32 noundef 1) #12
  unreachable

2334:                                             ; No predecessors!
  br label %2335

2335:                                             ; preds = %2334
  br label %2336

2336:                                             ; preds = %2335, %2275
  br label %2337

2337:                                             ; preds = %2336
  br label %2338

2338:                                             ; preds = %2337
  br label %2393

2339:                                             ; preds = %1548, %1548
  br label %2393

2340:                                             ; preds = %1548, %1548, %1548, %1548, %1548, %1548
  br label %2341

2341:                                             ; preds = %2340
  br label %2342

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

2349:                                             ; preds = %2342
  %2350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2351 = call i32 @fileno(ptr noundef %2350) #10
  %2352 = call i32 @isatty(i32 noundef %2351) #10
  %2353 = icmp ne i32 %2352, 0
  br i1 %2353, label %2354, label %2371

2354:                                             ; preds = %2349
  %2355 = load i32, ptr %68, align 4, !tbaa !5
  %2356 = call ptr @__errno_location() #11
  store i32 %2355, ptr %2356, align 4, !tbaa !5
  %2357 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2358 = load i32, ptr @test_count, align 4, !tbaa !5
  %2359 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2360 = load i32, ptr %2359, align 4, !tbaa !5
  %2361 = call ptr @s2n_strerror(i32 noundef %2360, ptr noundef @.str.58)
  %2362 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2363 = load i32, ptr %2362, align 4, !tbaa !5
  %2364 = call ptr @s2n_strerror_debug(i32 noundef %2363, ptr noundef @.str.58)
  %2365 = call ptr @__errno_location() #11
  %2366 = load i32, ptr %2365, align 4, !tbaa !5
  %2367 = call ptr @strerror(i32 noundef %2366) #10
  %2368 = call ptr @__errno_location() #11
  %2369 = load i32, ptr %2368, align 4, !tbaa !5
  %2370 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2357, ptr noundef @.str.56, i32 noundef %2358, ptr noundef @.str.84, ptr noundef @.str.55, i32 noundef 271, ptr noundef %2361, ptr noundef %2364, ptr noundef %2367, i32 noundef %2369) #10
  br label %2388

2371:                                             ; preds = %2349, %2342
  %2372 = load i32, ptr %68, align 4, !tbaa !5
  %2373 = call ptr @__errno_location() #11
  store i32 %2372, ptr %2373, align 4, !tbaa !5
  %2374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2375 = load i32, ptr @test_count, align 4, !tbaa !5
  %2376 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2377 = load i32, ptr %2376, align 4, !tbaa !5
  %2378 = call ptr @s2n_strerror(i32 noundef %2377, ptr noundef @.str.58)
  %2379 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2380 = load i32, ptr %2379, align 4, !tbaa !5
  %2381 = call ptr @s2n_strerror_debug(i32 noundef %2380, ptr noundef @.str.58)
  %2382 = call ptr @__errno_location() #11
  %2383 = load i32, ptr %2382, align 4, !tbaa !5
  %2384 = call ptr @strerror(i32 noundef %2383) #10
  %2385 = call ptr @__errno_location() #11
  %2386 = load i32, ptr %2385, align 4, !tbaa !5
  %2387 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2374, ptr noundef @.str.59, i32 noundef %2375, ptr noundef @.str.84, ptr noundef @.str.55, i32 noundef 271, ptr noundef %2378, ptr noundef %2381, ptr noundef %2384, i32 noundef %2386) #10
  br label %2388

2388:                                             ; preds = %2371, %2354
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  br label %2389

2389:                                             ; preds = %2388
  br label %2390

2390:                                             ; preds = %2389
  call void @exit(i32 noundef 1) #12
  unreachable

2391:                                             ; No predecessors!
  br label %2392

2392:                                             ; preds = %2391
  br label %2393

2393:                                             ; preds = %2392, %2339, %2338, %2077, %1946, %1815, %1684, %1617, %1548
  br label %2394

2394:                                             ; preds = %2393
  %2395 = load i32, ptr @test_count, align 4, !tbaa !5
  %2396 = add nsw i32 %2395, 1
  store i32 %2396, ptr @test_count, align 4, !tbaa !5
  %2397 = load ptr, ptr %49, align 8, !tbaa !9
  %2398 = call i32 @s2n_tls13_secrets_update(ptr noundef %2397)
  %2399 = getelementptr inbounds %struct.s2n_result, ptr %69, i32 0, i32 0
  store i32 %2398, ptr %2399, align 4
  %2400 = getelementptr inbounds %struct.s2n_result, ptr %69, i32 0, i32 0
  %2401 = load i32, ptr %2400, align 4
  %2402 = call zeroext i1 @s2n_result_is_ok(i32 %2401)
  br i1 %2402, label %2456, label %2403

2403:                                             ; preds = %2394
  br label %2404

2404:                                             ; preds = %2403
  br label %2405

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

2412:                                             ; preds = %2405
  %2413 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2414 = call i32 @fileno(ptr noundef %2413) #10
  %2415 = call i32 @isatty(i32 noundef %2414) #10
  %2416 = icmp ne i32 %2415, 0
  br i1 %2416, label %2417, label %2434

2417:                                             ; preds = %2412
  %2418 = load i32, ptr %70, align 4, !tbaa !5
  %2419 = call ptr @__errno_location() #11
  store i32 %2418, ptr %2419, align 4, !tbaa !5
  %2420 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2421 = load i32, ptr @test_count, align 4, !tbaa !5
  %2422 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2423 = load i32, ptr %2422, align 4, !tbaa !5
  %2424 = call ptr @s2n_strerror(i32 noundef %2423, ptr noundef @.str.58)
  %2425 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2426 = load i32, ptr %2425, align 4, !tbaa !5
  %2427 = call ptr @s2n_strerror_debug(i32 noundef %2426, ptr noundef @.str.58)
  %2428 = call ptr @__errno_location() #11
  %2429 = load i32, ptr %2428, align 4, !tbaa !5
  %2430 = call ptr @strerror(i32 noundef %2429) #10
  %2431 = call ptr @__errno_location() #11
  %2432 = load i32, ptr %2431, align 4, !tbaa !5
  %2433 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2420, ptr noundef @.str.56, i32 noundef %2421, ptr noundef @.str.85, ptr noundef @.str.55, i32 noundef 275, ptr noundef %2424, ptr noundef %2427, ptr noundef %2430, i32 noundef %2432) #10
  br label %2451

2434:                                             ; preds = %2412, %2405
  %2435 = load i32, ptr %70, align 4, !tbaa !5
  %2436 = call ptr @__errno_location() #11
  store i32 %2435, ptr %2436, align 4, !tbaa !5
  %2437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2438 = load i32, ptr @test_count, align 4, !tbaa !5
  %2439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2440 = load i32, ptr %2439, align 4, !tbaa !5
  %2441 = call ptr @s2n_strerror(i32 noundef %2440, ptr noundef @.str.58)
  %2442 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2443 = load i32, ptr %2442, align 4, !tbaa !5
  %2444 = call ptr @s2n_strerror_debug(i32 noundef %2443, ptr noundef @.str.58)
  %2445 = call ptr @__errno_location() #11
  %2446 = load i32, ptr %2445, align 4, !tbaa !5
  %2447 = call ptr @strerror(i32 noundef %2446) #10
  %2448 = call ptr @__errno_location() #11
  %2449 = load i32, ptr %2448, align 4, !tbaa !5
  %2450 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2437, ptr noundef @.str.59, i32 noundef %2438, ptr noundef @.str.85, ptr noundef @.str.55, i32 noundef 275, ptr noundef %2441, ptr noundef %2444, ptr noundef %2447, i32 noundef %2449) #10
  br label %2451

2451:                                             ; preds = %2434, %2417
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #10
  br label %2452

2452:                                             ; preds = %2451
  br label %2453

2453:                                             ; preds = %2452
  call void @exit(i32 noundef 1) #12
  unreachable

2454:                                             ; No predecessors!
  br label %2455

2455:                                             ; preds = %2454
  br label %2456

2456:                                             ; preds = %2455, %2394
  br label %2457

2457:                                             ; preds = %2456
  br label %2458

2458:                                             ; preds = %2457
  br label %2459

2459:                                             ; preds = %2458
  %2460 = load i32, ptr @test_count, align 4, !tbaa !5
  %2461 = add nsw i32 %2460, 1
  store i32 %2461, ptr @test_count, align 4, !tbaa !5
  %2462 = load ptr, ptr %49, align 8, !tbaa !9
  %2463 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %2462)
  %2464 = getelementptr inbounds %struct.s2n_result, ptr %71, i32 0, i32 0
  store i32 %2463, ptr %2464, align 4
  %2465 = getelementptr inbounds %struct.s2n_result, ptr %71, i32 0, i32 0
  %2466 = load i32, ptr %2465, align 4
  %2467 = call zeroext i1 @s2n_result_is_ok(i32 %2466)
  br i1 %2467, label %2521, label %2468

2468:                                             ; preds = %2459
  br label %2469

2469:                                             ; preds = %2468
  br label %2470

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

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

2482:                                             ; preds = %2477
  %2483 = load i32, ptr %72, align 4, !tbaa !5
  %2484 = call ptr @__errno_location() #11
  store i32 %2483, ptr %2484, align 4, !tbaa !5
  %2485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2486 = load i32, ptr @test_count, align 4, !tbaa !5
  %2487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2488 = load i32, ptr %2487, align 4, !tbaa !5
  %2489 = call ptr @s2n_strerror(i32 noundef %2488, ptr noundef @.str.58)
  %2490 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2491 = load i32, ptr %2490, align 4, !tbaa !5
  %2492 = call ptr @s2n_strerror_debug(i32 noundef %2491, ptr noundef @.str.58)
  %2493 = call ptr @__errno_location() #11
  %2494 = load i32, ptr %2493, align 4, !tbaa !5
  %2495 = call ptr @strerror(i32 noundef %2494) #10
  %2496 = call ptr @__errno_location() #11
  %2497 = load i32, ptr %2496, align 4, !tbaa !5
  %2498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2485, ptr noundef @.str.56, i32 noundef %2486, ptr noundef @.str.86, ptr noundef @.str.55, i32 noundef 276, ptr noundef %2489, ptr noundef %2492, ptr noundef %2495, i32 noundef %2497) #10
  br label %2516

2499:                                             ; preds = %2477, %2470
  %2500 = load i32, ptr %72, align 4, !tbaa !5
  %2501 = call ptr @__errno_location() #11
  store i32 %2500, ptr %2501, align 4, !tbaa !5
  %2502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2503 = load i32, ptr @test_count, align 4, !tbaa !5
  %2504 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2505 = load i32, ptr %2504, align 4, !tbaa !5
  %2506 = call ptr @s2n_strerror(i32 noundef %2505, ptr noundef @.str.58)
  %2507 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2508 = load i32, ptr %2507, align 4, !tbaa !5
  %2509 = call ptr @s2n_strerror_debug(i32 noundef %2508, ptr noundef @.str.58)
  %2510 = call ptr @__errno_location() #11
  %2511 = load i32, ptr %2510, align 4, !tbaa !5
  %2512 = call ptr @strerror(i32 noundef %2511) #10
  %2513 = call ptr @__errno_location() #11
  %2514 = load i32, ptr %2513, align 4, !tbaa !5
  %2515 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2502, ptr noundef @.str.59, i32 noundef %2503, ptr noundef @.str.86, ptr noundef @.str.55, i32 noundef 276, ptr noundef %2506, ptr noundef %2509, ptr noundef %2512, i32 noundef %2514) #10
  br label %2516

2516:                                             ; preds = %2499, %2482
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #10
  br label %2517

2517:                                             ; preds = %2516
  br label %2518

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

2519:                                             ; No predecessors!
  br label %2520

2520:                                             ; preds = %2519
  br label %2521

2521:                                             ; preds = %2520, %2459
  br label %2522

2522:                                             ; preds = %2521
  br label %2523

2523:                                             ; preds = %2522
  %2524 = load ptr, ptr %49, align 8, !tbaa !9
  %2525 = getelementptr inbounds %struct.s2n_connection, ptr %2524, i32 0, i32 52
  %2526 = getelementptr inbounds %struct.s2n_handshake, ptr %2525, i32 0, i32 7
  %2527 = load i32, ptr %2526, align 8, !tbaa !72
  %2528 = add nsw i32 %2527, 1
  store i32 %2528, ptr %2526, align 8, !tbaa !72
  br label %1472, !llvm.loop !73

2529:                                             ; preds = %1472
  br label %2530

2530:                                             ; preds = %2529
  %2531 = load i32, ptr @test_count, align 4, !tbaa !5
  %2532 = add nsw i32 %2531, 1
  store i32 %2532, ptr @test_count, align 4, !tbaa !5
  %2533 = load ptr, ptr %49, align 8, !tbaa !9
  %2534 = load i64, ptr %48, align 8, !tbaa !15
  %2535 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %12, i64 0, i64 %2534
  %2536 = getelementptr inbounds %struct.s2n_tls13_key_schedule_test_case, ptr %2535, i32 0, i32 3
  %2537 = load i8, ptr %2536, align 8, !tbaa !50, !range !13, !noundef !14
  %2538 = trunc i8 %2537 to i1
  %2539 = call i32 @s2n_connection_verify_secrets(ptr noundef %2533, ptr noundef %52, i1 noundef zeroext %2538)
  %2540 = getelementptr inbounds %struct.s2n_result, ptr %73, i32 0, i32 0
  store i32 %2539, ptr %2540, align 4
  %2541 = getelementptr inbounds %struct.s2n_result, ptr %73, i32 0, i32 0
  %2542 = load i32, ptr %2541, align 4
  %2543 = call zeroext i1 @s2n_result_is_ok(i32 %2542)
  br i1 %2543, label %2597, label %2544

2544:                                             ; preds = %2530
  br label %2545

2545:                                             ; preds = %2544
  br label %2546

2546:                                             ; preds = %2545
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #10
  %2547 = call ptr @__errno_location() #11
  %2548 = load i32, ptr %2547, align 4, !tbaa !5
  store i32 %2548, ptr %74, align 4, !tbaa !5
  %2549 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2550 = call i32 @s2n_print_stacktrace(ptr noundef %2549)
  %2551 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2552 = trunc i8 %2551 to i1
  br i1 %2552, label %2553, label %2575

2553:                                             ; preds = %2546
  %2554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2555 = call i32 @fileno(ptr noundef %2554) #10
  %2556 = call i32 @isatty(i32 noundef %2555) #10
  %2557 = icmp ne i32 %2556, 0
  br i1 %2557, label %2558, label %2575

2558:                                             ; preds = %2553
  %2559 = load i32, ptr %74, align 4, !tbaa !5
  %2560 = call ptr @__errno_location() #11
  store i32 %2559, ptr %2560, align 4, !tbaa !5
  %2561 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2562 = load i32, ptr @test_count, align 4, !tbaa !5
  %2563 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2564 = load i32, ptr %2563, align 4, !tbaa !5
  %2565 = call ptr @s2n_strerror(i32 noundef %2564, ptr noundef @.str.58)
  %2566 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2567 = load i32, ptr %2566, align 4, !tbaa !5
  %2568 = call ptr @s2n_strerror_debug(i32 noundef %2567, ptr noundef @.str.58)
  %2569 = call ptr @__errno_location() #11
  %2570 = load i32, ptr %2569, align 4, !tbaa !5
  %2571 = call ptr @strerror(i32 noundef %2570) #10
  %2572 = call ptr @__errno_location() #11
  %2573 = load i32, ptr %2572, align 4, !tbaa !5
  %2574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2561, ptr noundef @.str.56, i32 noundef %2562, ptr noundef @.str.87, ptr noundef @.str.55, i32 noundef 280, ptr noundef %2565, ptr noundef %2568, ptr noundef %2571, i32 noundef %2573) #10
  br label %2592

2575:                                             ; preds = %2553, %2546
  %2576 = load i32, ptr %74, align 4, !tbaa !5
  %2577 = call ptr @__errno_location() #11
  store i32 %2576, ptr %2577, align 4, !tbaa !5
  %2578 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2579 = load i32, ptr @test_count, align 4, !tbaa !5
  %2580 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2581 = load i32, ptr %2580, align 4, !tbaa !5
  %2582 = call ptr @s2n_strerror(i32 noundef %2581, ptr noundef @.str.58)
  %2583 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2584 = load i32, ptr %2583, align 4, !tbaa !5
  %2585 = call ptr @s2n_strerror_debug(i32 noundef %2584, ptr noundef @.str.58)
  %2586 = call ptr @__errno_location() #11
  %2587 = load i32, ptr %2586, align 4, !tbaa !5
  %2588 = call ptr @strerror(i32 noundef %2587) #10
  %2589 = call ptr @__errno_location() #11
  %2590 = load i32, ptr %2589, align 4, !tbaa !5
  %2591 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2578, ptr noundef @.str.59, i32 noundef %2579, ptr noundef @.str.87, ptr noundef @.str.55, i32 noundef 280, ptr noundef %2582, ptr noundef %2585, ptr noundef %2588, i32 noundef %2590) #10
  br label %2592

2592:                                             ; preds = %2575, %2558
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  br label %2593

2593:                                             ; preds = %2592
  br label %2594

2594:                                             ; preds = %2593
  call void @exit(i32 noundef 1) #12
  unreachable

2595:                                             ; No predecessors!
  br label %2596

2596:                                             ; preds = %2595
  br label %2597

2597:                                             ; preds = %2596, %2530
  br label %2598

2598:                                             ; preds = %2597
  br label %2599

2599:                                             ; preds = %2598
  call void @llvm.lifetime.end.p0(i64 432, ptr %52) #10
  %2600 = call i32 @s2n_connection_ptr_free(ptr noundef %49)
  %2601 = getelementptr inbounds %struct.s2n_result, ptr %75, i32 0, i32 0
  store i32 %2600, ptr %2601, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %2602

2602:                                             ; preds = %2599
  %2603 = load i64, ptr %48, align 8, !tbaa !15
  %2604 = add i64 %2603, 1
  store i64 %2604, ptr %48, align 8, !tbaa !15
  br label %1308, !llvm.loop !74

2605:                                             ; preds = %1312
  br label %2606

2606:                                             ; preds = %2605
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  store i64 64, ptr %76, align 8, !tbaa !15
  %2607 = load i64, ptr %76, align 8, !tbaa !15
  %2608 = icmp ne i64 %2607, 0
  br i1 %2608, label %2609, label %2666

2609:                                             ; preds = %2606
  %2610 = getelementptr inbounds [64 x i8], ptr %40, i64 0, i64 0
  %2611 = load i64, ptr %76, align 8, !tbaa !15
  call void @llvm.memmove.p0.p0.i64(ptr align 16 @derive_methods, ptr align 16 %2610, i64 %2611, i1 false)
  br i1 false, label %2612, label %2665

2612:                                             ; preds = %2609
  br label %2613

2613:                                             ; preds = %2612
  br label %2614

2614:                                             ; preds = %2613
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #10
  %2615 = call ptr @__errno_location() #11
  %2616 = load i32, ptr %2615, align 4, !tbaa !5
  store i32 %2616, ptr %77, align 4, !tbaa !5
  %2617 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2618 = call i32 @s2n_print_stacktrace(ptr noundef %2617)
  %2619 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2620 = trunc i8 %2619 to i1
  br i1 %2620, label %2621, label %2643

2621:                                             ; preds = %2614
  %2622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2623 = call i32 @fileno(ptr noundef %2622) #10
  %2624 = call i32 @isatty(i32 noundef %2623) #10
  %2625 = icmp ne i32 %2624, 0
  br i1 %2625, label %2626, label %2643

2626:                                             ; preds = %2621
  %2627 = load i32, ptr %77, align 4, !tbaa !5
  %2628 = call ptr @__errno_location() #11
  store i32 %2627, ptr %2628, align 4, !tbaa !5
  %2629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2630 = load i32, ptr @test_count, align 4, !tbaa !5
  %2631 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2632 = load i32, ptr %2631, align 4, !tbaa !5
  %2633 = call ptr @s2n_strerror(i32 noundef %2632, ptr noundef @.str.58)
  %2634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2635 = load i32, ptr %2634, align 4, !tbaa !5
  %2636 = call ptr @s2n_strerror_debug(i32 noundef %2635, ptr noundef @.str.58)
  %2637 = call ptr @__errno_location() #11
  %2638 = load i32, ptr %2637, align 4, !tbaa !5
  %2639 = call ptr @strerror(i32 noundef %2638) #10
  %2640 = call ptr @__errno_location() #11
  %2641 = load i32, ptr %2640, align 4, !tbaa !5
  %2642 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2629, ptr noundef @.str.56, i32 noundef %2630, ptr noundef @.str.88, ptr noundef @.str.55, i32 noundef 284, ptr noundef %2633, ptr noundef %2636, ptr noundef %2639, i32 noundef %2641) #10
  br label %2660

2643:                                             ; preds = %2621, %2614
  %2644 = load i32, ptr %77, align 4, !tbaa !5
  %2645 = call ptr @__errno_location() #11
  store i32 %2644, ptr %2645, align 4, !tbaa !5
  %2646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2647 = load i32, ptr @test_count, align 4, !tbaa !5
  %2648 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2649 = load i32, ptr %2648, align 4, !tbaa !5
  %2650 = call ptr @s2n_strerror(i32 noundef %2649, ptr noundef @.str.58)
  %2651 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2652 = load i32, ptr %2651, align 4, !tbaa !5
  %2653 = call ptr @s2n_strerror_debug(i32 noundef %2652, ptr noundef @.str.58)
  %2654 = call ptr @__errno_location() #11
  %2655 = load i32, ptr %2654, align 4, !tbaa !5
  %2656 = call ptr @strerror(i32 noundef %2655) #10
  %2657 = call ptr @__errno_location() #11
  %2658 = load i32, ptr %2657, align 4, !tbaa !5
  %2659 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2646, ptr noundef @.str.59, i32 noundef %2647, ptr noundef @.str.88, ptr noundef @.str.55, i32 noundef 284, ptr noundef %2650, ptr noundef %2653, ptr noundef %2656, i32 noundef %2658) #10
  br label %2660

2660:                                             ; preds = %2643, %2626
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  br label %2661

2661:                                             ; preds = %2660
  br label %2662

2662:                                             ; preds = %2661
  call void @exit(i32 noundef 1) #12
  unreachable

2663:                                             ; No predecessors!
  br label %2664

2664:                                             ; preds = %2663
  br label %2665

2665:                                             ; preds = %2664, %2609
  br label %2666

2666:                                             ; preds = %2665, %2606
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  br label %2667

2667:                                             ; preds = %2666
  br label %2668

2668:                                             ; preds = %2667
  br label %2669

2669:                                             ; preds = %2668
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  store i64 32, ptr %78, align 8, !tbaa !15
  %2670 = load i64, ptr %78, align 8, !tbaa !15
  %2671 = icmp ne i64 %2670, 0
  br i1 %2671, label %2672, label %2729

2672:                                             ; preds = %2669
  %2673 = getelementptr inbounds [32 x i8], ptr %44, i64 0, i64 0
  %2674 = load i64, ptr %78, align 8, !tbaa !15
  call void @llvm.memmove.p0.p0.i64(ptr align 16 @extract_methods, ptr align 16 %2673, i64 %2674, i1 false)
  br i1 false, label %2675, label %2728

2675:                                             ; preds = %2672
  br label %2676

2676:                                             ; preds = %2675
  br label %2677

2677:                                             ; preds = %2676
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #10
  %2678 = call ptr @__errno_location() #11
  %2679 = load i32, ptr %2678, align 4, !tbaa !5
  store i32 %2679, ptr %79, align 4, !tbaa !5
  %2680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2681 = call i32 @s2n_print_stacktrace(ptr noundef %2680)
  %2682 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2683 = trunc i8 %2682 to i1
  br i1 %2683, label %2684, label %2706

2684:                                             ; preds = %2677
  %2685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2686 = call i32 @fileno(ptr noundef %2685) #10
  %2687 = call i32 @isatty(i32 noundef %2686) #10
  %2688 = icmp ne i32 %2687, 0
  br i1 %2688, label %2689, label %2706

2689:                                             ; preds = %2684
  %2690 = load i32, ptr %79, align 4, !tbaa !5
  %2691 = call ptr @__errno_location() #11
  store i32 %2690, ptr %2691, align 4, !tbaa !5
  %2692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2693 = load i32, ptr @test_count, align 4, !tbaa !5
  %2694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2695 = load i32, ptr %2694, align 4, !tbaa !5
  %2696 = call ptr @s2n_strerror(i32 noundef %2695, ptr noundef @.str.58)
  %2697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2698 = load i32, ptr %2697, align 4, !tbaa !5
  %2699 = call ptr @s2n_strerror_debug(i32 noundef %2698, ptr noundef @.str.58)
  %2700 = call ptr @__errno_location() #11
  %2701 = load i32, ptr %2700, align 4, !tbaa !5
  %2702 = call ptr @strerror(i32 noundef %2701) #10
  %2703 = call ptr @__errno_location() #11
  %2704 = load i32, ptr %2703, align 4, !tbaa !5
  %2705 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2692, ptr noundef @.str.56, i32 noundef %2693, ptr noundef @.str.89, ptr noundef @.str.55, i32 noundef 285, ptr noundef %2696, ptr noundef %2699, ptr noundef %2702, i32 noundef %2704) #10
  br label %2723

2706:                                             ; preds = %2684, %2677
  %2707 = load i32, ptr %79, align 4, !tbaa !5
  %2708 = call ptr @__errno_location() #11
  store i32 %2707, ptr %2708, align 4, !tbaa !5
  %2709 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2710 = load i32, ptr @test_count, align 4, !tbaa !5
  %2711 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2712 = load i32, ptr %2711, align 4, !tbaa !5
  %2713 = call ptr @s2n_strerror(i32 noundef %2712, ptr noundef @.str.58)
  %2714 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2715 = load i32, ptr %2714, align 4, !tbaa !5
  %2716 = call ptr @s2n_strerror_debug(i32 noundef %2715, ptr noundef @.str.58)
  %2717 = call ptr @__errno_location() #11
  %2718 = load i32, ptr %2717, align 4, !tbaa !5
  %2719 = call ptr @strerror(i32 noundef %2718) #10
  %2720 = call ptr @__errno_location() #11
  %2721 = load i32, ptr %2720, align 4, !tbaa !5
  %2722 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2709, ptr noundef @.str.59, i32 noundef %2710, ptr noundef @.str.89, ptr noundef @.str.55, i32 noundef 285, ptr noundef %2713, ptr noundef %2716, ptr noundef %2719, i32 noundef %2721) #10
  br label %2723

2723:                                             ; preds = %2706, %2689
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #10
  br label %2724

2724:                                             ; preds = %2723
  br label %2725

2725:                                             ; preds = %2724
  call void @exit(i32 noundef 1) #12
  unreachable

2726:                                             ; No predecessors!
  br label %2727

2727:                                             ; preds = %2726
  br label %2728

2728:                                             ; preds = %2727, %2672
  br label %2729

2729:                                             ; preds = %2728, %2669
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  br label %2730

2730:                                             ; preds = %2729
  br label %2731

2731:                                             ; preds = %2730
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #10
  br label %2732

2732:                                             ; preds = %2731
  br label %2733

2733:                                             ; preds = %2732
  %2734 = call i32 @s2n_cleanup()
  %2735 = icmp eq i32 %2734, -1
  br i1 %2735, label %2736, label %2789

2736:                                             ; preds = %2733
  br label %2737

2737:                                             ; preds = %2736
  br label %2738

2738:                                             ; preds = %2737
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #10
  %2739 = call ptr @__errno_location() #11
  %2740 = load i32, ptr %2739, align 4, !tbaa !5
  store i32 %2740, ptr %80, align 4, !tbaa !5
  %2741 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2742 = call i32 @s2n_print_stacktrace(ptr noundef %2741)
  %2743 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2744 = trunc i8 %2743 to i1
  br i1 %2744, label %2745, label %2767

2745:                                             ; preds = %2738
  %2746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2747 = call i32 @fileno(ptr noundef %2746) #10
  %2748 = call i32 @isatty(i32 noundef %2747) #10
  %2749 = icmp ne i32 %2748, 0
  br i1 %2749, label %2750, label %2767

2750:                                             ; preds = %2745
  %2751 = load i32, ptr %80, align 4, !tbaa !5
  %2752 = call ptr @__errno_location() #11
  store i32 %2751, ptr %2752, align 4, !tbaa !5
  %2753 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2754 = load i32, ptr @test_count, align 4, !tbaa !5
  %2755 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2756 = load i32, ptr %2755, align 4, !tbaa !5
  %2757 = call ptr @s2n_strerror(i32 noundef %2756, ptr noundef @.str.58)
  %2758 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2759 = load i32, ptr %2758, align 4, !tbaa !5
  %2760 = call ptr @s2n_strerror_debug(i32 noundef %2759, ptr noundef @.str.58)
  %2761 = call ptr @__errno_location() #11
  %2762 = load i32, ptr %2761, align 4, !tbaa !5
  %2763 = call ptr @strerror(i32 noundef %2762) #10
  %2764 = call ptr @__errno_location() #11
  %2765 = load i32, ptr %2764, align 4, !tbaa !5
  %2766 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2753, ptr noundef @.str.56, i32 noundef %2754, ptr noundef @.str.90, ptr noundef @.str.55, i32 noundef 289, ptr noundef %2757, ptr noundef %2760, ptr noundef %2763, i32 noundef %2765) #10
  br label %2784

2767:                                             ; preds = %2745, %2738
  %2768 = load i32, ptr %80, align 4, !tbaa !5
  %2769 = call ptr @__errno_location() #11
  store i32 %2768, ptr %2769, align 4, !tbaa !5
  %2770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2771 = load i32, ptr @test_count, align 4, !tbaa !5
  %2772 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2773 = load i32, ptr %2772, align 4, !tbaa !5
  %2774 = call ptr @s2n_strerror(i32 noundef %2773, ptr noundef @.str.58)
  %2775 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2776 = load i32, ptr %2775, align 4, !tbaa !5
  %2777 = call ptr @s2n_strerror_debug(i32 noundef %2776, ptr noundef @.str.58)
  %2778 = call ptr @__errno_location() #11
  %2779 = load i32, ptr %2778, align 4, !tbaa !5
  %2780 = call ptr @strerror(i32 noundef %2779) #10
  %2781 = call ptr @__errno_location() #11
  %2782 = load i32, ptr %2781, align 4, !tbaa !5
  %2783 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2770, ptr noundef @.str.59, i32 noundef %2771, ptr noundef @.str.90, ptr noundef @.str.55, i32 noundef 289, ptr noundef %2774, ptr noundef %2777, ptr noundef %2780, i32 noundef %2782) #10
  br label %2784

2784:                                             ; preds = %2767, %2750
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  br label %2785

2785:                                             ; preds = %2784
  br label %2786

2786:                                             ; preds = %2785
  call void @exit(i32 noundef 1) #12
  unreachable

2787:                                             ; No predecessors!
  br label %2788

2788:                                             ; preds = %2787
  br label %2789

2789:                                             ; preds = %2788, %2733
  br label %2790

2790:                                             ; preds = %2789
  br label %2791

2791:                                             ; preds = %2790
  br label %2792

2792:                                             ; preds = %2791
  br label %2793

2793:                                             ; preds = %2792
  %2794 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %2795 = icmp eq i32 %2794, -1
  br i1 %2795, label %2796, label %2849

2796:                                             ; preds = %2793
  br label %2797

2797:                                             ; preds = %2796
  br label %2798

2798:                                             ; preds = %2797
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  %2799 = call ptr @__errno_location() #11
  %2800 = load i32, ptr %2799, align 4, !tbaa !5
  store i32 %2800, ptr %81, align 4, !tbaa !5
  %2801 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2802 = call i32 @s2n_print_stacktrace(ptr noundef %2801)
  %2803 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2804 = trunc i8 %2803 to i1
  br i1 %2804, label %2805, label %2827

2805:                                             ; preds = %2798
  %2806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2807 = call i32 @fileno(ptr noundef %2806) #10
  %2808 = call i32 @isatty(i32 noundef %2807) #10
  %2809 = icmp ne i32 %2808, 0
  br i1 %2809, label %2810, label %2827

2810:                                             ; preds = %2805
  %2811 = load i32, ptr %81, align 4, !tbaa !5
  %2812 = call ptr @__errno_location() #11
  store i32 %2811, ptr %2812, align 4, !tbaa !5
  %2813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2814 = load i32, ptr @test_count, align 4, !tbaa !5
  %2815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2816 = load i32, ptr %2815, align 4, !tbaa !5
  %2817 = call ptr @s2n_strerror(i32 noundef %2816, ptr noundef @.str.58)
  %2818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2819 = load i32, ptr %2818, align 4, !tbaa !5
  %2820 = call ptr @s2n_strerror_debug(i32 noundef %2819, ptr noundef @.str.58)
  %2821 = call ptr @__errno_location() #11
  %2822 = load i32, ptr %2821, align 4, !tbaa !5
  %2823 = call ptr @strerror(i32 noundef %2822) #10
  %2824 = call ptr @__errno_location() #11
  %2825 = load i32, ptr %2824, align 4, !tbaa !5
  %2826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2813, ptr noundef @.str.56, i32 noundef %2814, ptr noundef @.str.91, ptr noundef @.str.55, i32 noundef 289, ptr noundef %2817, ptr noundef %2820, ptr noundef %2823, i32 noundef %2825) #10
  br label %2844

2827:                                             ; preds = %2805, %2798
  %2828 = load i32, ptr %81, align 4, !tbaa !5
  %2829 = call ptr @__errno_location() #11
  store i32 %2828, ptr %2829, align 4, !tbaa !5
  %2830 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2831 = load i32, ptr @test_count, align 4, !tbaa !5
  %2832 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2833 = load i32, ptr %2832, align 4, !tbaa !5
  %2834 = call ptr @s2n_strerror(i32 noundef %2833, ptr noundef @.str.58)
  %2835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2836 = load i32, ptr %2835, align 4, !tbaa !5
  %2837 = call ptr @s2n_strerror_debug(i32 noundef %2836, ptr noundef @.str.58)
  %2838 = call ptr @__errno_location() #11
  %2839 = load i32, ptr %2838, align 4, !tbaa !5
  %2840 = call ptr @strerror(i32 noundef %2839) #10
  %2841 = call ptr @__errno_location() #11
  %2842 = load i32, ptr %2841, align 4, !tbaa !5
  %2843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2830, ptr noundef @.str.59, i32 noundef %2831, ptr noundef @.str.91, ptr noundef @.str.55, i32 noundef 289, ptr noundef %2834, ptr noundef %2837, ptr noundef %2840, i32 noundef %2842) #10
  br label %2844

2844:                                             ; preds = %2827, %2810
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %2845

2845:                                             ; preds = %2844
  br label %2846

2846:                                             ; preds = %2845
  call void @exit(i32 noundef 1) #12
  unreachable

2847:                                             ; No predecessors!
  br label %2848

2848:                                             ; preds = %2847
  br label %2849

2849:                                             ; preds = %2848, %2793
  br label %2850

2850:                                             ; preds = %2849
  br label %2851

2851:                                             ; preds = %2850
  %2852 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2853 = trunc i8 %2852 to i1
  br i1 %2853, label %2854, label %2870

2854:                                             ; preds = %2851
  %2855 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2856 = call i32 @fileno(ptr noundef %2855) #10
  %2857 = call i32 @isatty(i32 noundef %2856) #10
  %2858 = icmp ne i32 %2857, 0
  br i1 %2858, label %2859, label %2870

2859:                                             ; preds = %2854
  %2860 = load i32, ptr @test_count, align 4, !tbaa !5
  %2861 = icmp ne i32 %2860, 0
  br i1 %2861, label %2862, label %2866

2862:                                             ; preds = %2859
  %2863 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2864 = load i32, ptr @test_count, align 4, !tbaa !5
  %2865 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2863, ptr noundef @.str.92, i32 noundef %2864) #10
  br label %2869

2866:                                             ; preds = %2859
  %2867 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2868 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2867, ptr noundef @.str.93) #10
  br label %2869

2869:                                             ; preds = %2866, %2862
  br label %2881

2870:                                             ; preds = %2854, %2851
  %2871 = load i32, ptr @test_count, align 4, !tbaa !5
  %2872 = icmp ne i32 %2871, 0
  br i1 %2872, label %2873, label %2877

2873:                                             ; preds = %2870
  %2874 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2875 = load i32, ptr @test_count, align 4, !tbaa !5
  %2876 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2874, ptr noundef @.str.94, i32 noundef %2875) #10
  br label %2880

2877:                                             ; preds = %2870
  %2878 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2879 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2878, ptr noundef @.str.95) #10
  br label %2880

2880:                                             ; preds = %2877, %2873
  br label %2881

2881:                                             ; preds = %2880, %2869
  store i32 0, ptr %3, align 4
  store i32 1, ptr %16, align 4
  br label %2886

2882:                                             ; No predecessors!
  br label %2883

2883:                                             ; preds = %2882
  br label %2884

2884:                                             ; preds = %2883
  br label %2885

2885:                                             ; preds = %2884
  store i32 0, ptr %16, align 4
  br label %2886

2886:                                             ; preds = %2885, %2881
  call void @llvm.lifetime.end.p0(i64 4184, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 48000, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  %2887 = load i32, ptr %16, align 4
  switch i32 %2887, label %2890 [
    i32 0, label %2888
    i32 1, label %2888
  ]

2888:                                             ; preds = %2886, %2886
  %2889 = load i32, ptr %3, align 4
  ret i32 %2889

2890:                                             ; preds = %2886
  unreachable
}

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

declare i32 @fflush(ptr noundef) #5

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #5

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

declare i32 @s2n_print_stacktrace(ptr noundef) #5

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #5

declare i32 @s2n_init() #5

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

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

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

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

declare i32 @s2n_tls13_key_schedule_update(ptr noundef) #5

declare void @s2n_debug_info_reset() #5

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_mock_extract_method(ptr noundef) #4

declare ptr @s2n_connection_new(i32 noundef) #5

declare i32 @s2n_connection_ptr_free(ptr noundef) #5

declare i32 @s2n_conn_choose_state_machine(ptr noundef, i8 noundef zeroext) #5

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

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

declare i32 @s2n_tls13_key_schedule_reset(ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_connection_verify_secrets(ptr noundef, ptr noundef, i1 noundef zeroext) #4

declare i32 @s2n_cleanup() #5

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

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

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


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

%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_tls13_key_schedule_test_case = type { i32, i32, ptr, 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.0, i32 }
%union.anon.0 = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_sig_scheme_list = type { [128 x i16], i8 }
%struct.s2n_psk_parameters = type { i32, %struct.s2n_array, i16, i16, ptr, i32 }
%struct.s2n_array = type { %struct.s2n_blob, i32, i32 }
%struct.s2n_handshake = type { %struct.s2n_stuffer, ptr, [8 x i8], [48 x i8], [48 x i8], i8, i32, i32, i32, i32, %struct.s2n_offered_early_data, i8, i32 }
%struct.s2n_offered_early_data = type { ptr }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }
%struct.s2n_test_secrets = type { [6 x [48 x i8]], [6 x %struct.s2n_blob] }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@extract_methods = external hidden local_unnamed_addr global [4 x ptr], align 16
@derive_methods = external hidden local_unnamed_addr global [4 x [2 x ptr]], align 16
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str.54 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [86 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.56 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [39 x i8], align 1
@cipher_preferences_test_all_tls13 = external local_unnamed_addr constant %struct.s2n_cipher_preferences, align 8
@__const.main.modes = external hidden unnamed_addr constant [2 x i32], align 4
@__const.main.early_data_req_states = external hidden unnamed_addr constant [2 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

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

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

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

declare i32 @s2n_conn_get_current_message_type(ptr noundef) local_unnamed_addr #5

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

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

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

28:                                               ; preds = %24, %17
  br label %29

29:                                               ; preds = %24, %28
  %.str.59.sink = phi ptr [ @.str.59, %28 ], [ @.str.56, %24 ]
  store i32 %19, ptr %18, align 4, !tbaa !5
  %30 = load ptr, ptr @stderr, align 8, !tbaa !9
  %31 = load i32, ptr @test_count, align 4, !tbaa !5
  %32 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %33 = load i32, ptr %32, align 4, !tbaa !5
  %34 = tail call ptr @s2n_strerror(i32 noundef %33, ptr noundef nonnull @.str.58) #11
  %35 = load i32, ptr %32, align 4, !tbaa !5
  %36 = tail call ptr @s2n_strerror_debug(i32 noundef %35, ptr noundef nonnull @.str.58) #11
  %37 = load i32, ptr %18, align 4, !tbaa !5
  %38 = tail call ptr @strerror(i32 noundef %37) #11
  %39 = load i32, ptr %18, align 4, !tbaa !5
  %40 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %30, ptr noundef nonnull %.str.59.sink, i32 noundef %31, ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.55, i32 noundef 95, ptr noundef %34, ptr noundef %36, ptr noundef %38, i32 noundef %39) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

41:                                               ; preds = %2
  %42 = load i32, ptr @test_count, align 4, !tbaa !5
  %43 = add nsw i32 %42, 1
  store i32 %43, ptr @test_count, align 4, !tbaa !5
  %44 = tail call i32 @s2n_enable_atexit() #11
  %45 = icmp eq i32 %44, -1
  br i1 %45, label %46, label %70

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

53:                                               ; preds = %46
  %54 = load ptr, ptr @stderr, align 8, !tbaa !9
  %55 = tail call i32 @fileno(ptr noundef %54) #11
  %56 = tail call i32 @isatty(i32 noundef %55) #11
  %.not184 = icmp eq i32 %56, 0
  br i1 %.not184, label %57, label %58

57:                                               ; preds = %53, %46
  br label %58

58:                                               ; preds = %53, %57
  %.str.59.sink232 = phi ptr [ @.str.59, %57 ], [ @.str.56, %53 ]
  store i32 %48, ptr %47, align 4, !tbaa !5
  %59 = load ptr, ptr @stderr, align 8, !tbaa !9
  %60 = load i32, ptr @test_count, align 4, !tbaa !5
  %61 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %62 = load i32, ptr %61, align 4, !tbaa !5
  %63 = tail call ptr @s2n_strerror(i32 noundef %62, ptr noundef nonnull @.str.58) #11
  %64 = load i32, ptr %61, align 4, !tbaa !5
  %65 = tail call ptr @s2n_strerror_debug(i32 noundef %64, ptr noundef nonnull @.str.58) #11
  %66 = load i32, ptr %47, align 4, !tbaa !5
  %67 = tail call ptr @strerror(i32 noundef %66) #11
  %68 = load i32, ptr %47, align 4, !tbaa !5
  %69 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %59, ptr noundef nonnull %.str.59.sink232, i32 noundef %60, ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.55, i32 noundef 95, ptr noundef %63, ptr noundef %65, ptr noundef %67, i32 noundef %68) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

70:                                               ; preds = %41
  %71 = tail call i32 @s2n_init() #11
  %72 = icmp eq i32 %71, -1
  br i1 %72, label %73, label %97

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

80:                                               ; preds = %73
  %81 = load ptr, ptr @stderr, align 8, !tbaa !9
  %82 = tail call i32 @fileno(ptr noundef %81) #11
  %83 = tail call i32 @isatty(i32 noundef %82) #11
  %.not183 = icmp eq i32 %83, 0
  br i1 %.not183, label %84, label %85

84:                                               ; preds = %80, %73
  br label %85

85:                                               ; preds = %80, %84
  %.str.59.sink243 = phi ptr [ @.str.59, %84 ], [ @.str.56, %80 ]
  store i32 %75, ptr %74, align 4, !tbaa !5
  %86 = load ptr, ptr @stderr, align 8, !tbaa !9
  %87 = load i32, ptr @test_count, align 4, !tbaa !5
  %88 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %89 = load i32, ptr %88, align 4, !tbaa !5
  %90 = tail call ptr @s2n_strerror(i32 noundef %89, ptr noundef nonnull @.str.58) #11
  %91 = load i32, ptr %88, align 4, !tbaa !5
  %92 = tail call ptr @s2n_strerror_debug(i32 noundef %91, ptr noundef nonnull @.str.58) #11
  %93 = load i32, ptr %74, align 4, !tbaa !5
  %94 = tail call ptr @strerror(i32 noundef %93) #11
  %95 = load i32, ptr %74, align 4, !tbaa !5
  %96 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %86, ptr noundef nonnull %.str.59.sink243, i32 noundef %87, ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.55, i32 noundef 95, ptr noundef %90, ptr noundef %92, ptr noundef %94, i32 noundef %95) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

97:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 48000, ptr nonnull %3) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48000) %3, i8 0, i64 48000, i1 false)
  call void @llvm.lifetime.start.p0(i64 4184, ptr nonnull %4) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(4184) %4, i8 0, i64 4184, i1 false)
  %98 = getelementptr inbounds i8, ptr %4, i64 220
  store i8 34, ptr %98, align 4
  %99 = getelementptr inbounds i8, ptr %4, i64 2176
  store i32 1, ptr %99, align 8
  %100 = getelementptr inbounds i8, ptr %4, i64 2204
  store i32 2, ptr %100, align 4
  %101 = getelementptr inbounds i8, ptr %4, i64 2172
  %102 = load i16, ptr @cipher_preferences_test_all_tls13, align 8, !tbaa !15
  %103 = zext i16 %102 to i64
  %.not207 = icmp eq i16 %102, 0
  %104 = load ptr, ptr getelementptr inbounds (i8, ptr @cipher_preferences_test_all_tls13, i64 8), align 8
  br i1 %.not207, label %.split201.us.thread, label %.split.us.us.preheader

.split.us.us.preheader:                           ; preds = %97
  %105 = load i8, ptr @__const.main.early_data_req_states, align 1, !range !13
  %106 = trunc nuw i8 %105 to i1
  %107 = load i32, ptr @__const.main.modes, align 4
  %108 = trunc nuw i8 %105 to i1
  %109 = load i32, ptr getelementptr inbounds (i8, ptr @__const.main.modes, i64 4), align 4
  %110 = load i8, ptr getelementptr inbounds (i8, ptr @__const.main.early_data_req_states, i64 1), align 1, !range !13
  %111 = trunc nuw i8 %110 to i1
  %112 = trunc nuw i8 %110 to i1
  br label %.split.us.us

.split201.us.thread:                              ; preds = %97
  store i32 255, ptr %101, align 4, !tbaa !18
  %113 = load i32, ptr @test_count, align 4, !tbaa !5
  %114 = add nsw i32 %113, 1
  store i32 %114, ptr @test_count, align 4, !tbaa !5
  br label %178

.split.us.us:                                     ; preds = %.split.us.us.preheader, %._crit_edge.us.us.1
  %.0198.us = phi i64 [ %.4.us.us.1.1, %._crit_edge.us.us.1 ], [ 0, %.split.us.us.preheader ]
  %.0131197.us = phi i32 [ %175, %._crit_edge.us.us.1 ], [ 0, %.split.us.us.preheader ]
  store i32 %.0131197.us, ptr %101, align 4, !tbaa !18
  br label %.preheader187.us.us

115:                                              ; preds = %.preheader187.us.us
  %116 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef nonnull %4, i32 noundef 64) #11
  %.not254 = xor i1 %116, true
  %brmerge = select i1 %.not254, i1 true, i1 %106
  br i1 %brmerge, label %117, label %126

117:                                              ; preds = %115
  %118 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef nonnull %4, i32 noundef 1) #11
  br i1 %118, label %119, label %126

119:                                              ; preds = %117
  %120 = load ptr, ptr %142, align 8, !tbaa !9
  %121 = load i8, ptr %120, align 8
  %122 = and i8 %121, 1
  %.not182.us.us = icmp eq i8 %122, 0
  br i1 %.not182.us.us, label %126, label %123

123:                                              ; preds = %119
  %124 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %3, i64 0, i64 %.2192.us.us
  store i32 %107, ptr %124, align 8, !tbaa !5
  %.sroa.2.0..sroa_idx.us.us = getelementptr inbounds i8, ptr %124, i64 4
  store i32 %.0131197.us, ptr %.sroa.2.0..sroa_idx.us.us, align 4, !tbaa !5
  %.sroa.3.0..sroa_idx.us.us = getelementptr inbounds i8, ptr %124, i64 8
  store ptr %120, ptr %.sroa.3.0..sroa_idx.us.us, align 8, !tbaa !9
  %.sroa.4.0..sroa_idx.us.us = getelementptr inbounds i8, ptr %124, i64 16
  store i8 %105, ptr %.sroa.4.0..sroa_idx.us.us, align 8, !tbaa !11
  %125 = add i64 %.2192.us.us, 1
  br label %126

126:                                              ; preds = %115, %123, %119, %117, %.preheader187.us.us
  %.4.us.us = phi i64 [ %.2192.us.us, %.preheader187.us.us ], [ %125, %123 ], [ %.2192.us.us, %119 ], [ %.2192.us.us, %117 ], [ %.2192.us.us, %115 ]
  %127 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %4) #11
  %128 = icmp eq i32 %127, 0
  br i1 %128, label %140, label %129

129:                                              ; preds = %126
  %130 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef nonnull %4, i32 noundef 64) #11
  %.not255 = xor i1 %130, true
  %brmerge256 = select i1 %.not255, i1 true, i1 %108
  br i1 %brmerge256, label %131, label %140

131:                                              ; preds = %129
  %132 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef nonnull %4, i32 noundef 1) #11
  br i1 %132, label %133, label %140

133:                                              ; preds = %131
  %134 = load ptr, ptr %142, align 8, !tbaa !9
  %135 = load i8, ptr %134, align 8
  %136 = and i8 %135, 1
  %.not182.us.us.1 = icmp eq i8 %136, 0
  br i1 %.not182.us.us.1, label %140, label %137

137:                                              ; preds = %133
  %138 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %3, i64 0, i64 %.4.us.us
  store i32 %109, ptr %138, align 8, !tbaa !5
  %.sroa.2.0..sroa_idx.us.us.1 = getelementptr inbounds i8, ptr %138, i64 4
  store i32 %.0131197.us, ptr %.sroa.2.0..sroa_idx.us.us.1, align 4, !tbaa !5
  %.sroa.3.0..sroa_idx.us.us.1 = getelementptr inbounds i8, ptr %138, i64 8
  store ptr %134, ptr %.sroa.3.0..sroa_idx.us.us.1, align 8, !tbaa !9
  %.sroa.4.0..sroa_idx.us.us.1 = getelementptr inbounds i8, ptr %138, i64 16
  store i8 %105, ptr %.sroa.4.0..sroa_idx.us.us.1, align 8, !tbaa !11
  %139 = add i64 %.4.us.us, 1
  br label %140

140:                                              ; preds = %129, %137, %133, %131, %126
  %.4.us.us.1 = phi i64 [ %.4.us.us, %126 ], [ %139, %137 ], [ %.4.us.us, %133 ], [ %.4.us.us, %131 ], [ %.4.us.us, %129 ]
  %141 = add nuw nsw i64 %.0133191.us.us, 1
  %exitcond.not = icmp eq i64 %141, %103
  br i1 %exitcond.not, label %.preheader187.us.us.1, label %.preheader187.us.us, !llvm.loop !44

.preheader187.us.us:                              ; preds = %140, %.split.us.us
  %.2192.us.us = phi i64 [ %.0198.us, %.split.us.us ], [ %.4.us.us.1, %140 ]
  %.0133191.us.us = phi i64 [ 0, %.split.us.us ], [ %141, %140 ]
  %142 = getelementptr inbounds ptr, ptr %104, i64 %.0133191.us.us
  %143 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %4) #11
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %126, label %115

.preheader187.us.us.1:                            ; preds = %140, %173
  %.2192.us.us.1 = phi i64 [ %.4.us.us.1.1, %173 ], [ %.4.us.us.1, %140 ]
  %.0133191.us.us.1 = phi i64 [ %174, %173 ], [ 0, %140 ]
  %145 = getelementptr inbounds ptr, ptr %104, i64 %.0133191.us.us.1
  %146 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %4) #11
  %147 = icmp eq i32 %146, 0
  br i1 %147, label %159, label %148

148:                                              ; preds = %.preheader187.us.us.1
  %149 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef nonnull %4, i32 noundef 64) #11
  %.not257 = xor i1 %149, true
  %brmerge258 = select i1 %.not257, i1 true, i1 %111
  br i1 %brmerge258, label %150, label %159

150:                                              ; preds = %148
  %151 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef nonnull %4, i32 noundef 1) #11
  br i1 %151, label %152, label %159

152:                                              ; preds = %150
  %153 = load ptr, ptr %145, align 8, !tbaa !9
  %154 = load i8, ptr %153, align 8
  %155 = and i8 %154, 1
  %.not182.us.us.1208 = icmp eq i8 %155, 0
  br i1 %.not182.us.us.1208, label %159, label %156

156:                                              ; preds = %152
  %157 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %3, i64 0, i64 %.2192.us.us.1
  store i32 %107, ptr %157, align 8, !tbaa !5
  %.sroa.2.0..sroa_idx.us.us.1209 = getelementptr inbounds i8, ptr %157, i64 4
  store i32 %.0131197.us, ptr %.sroa.2.0..sroa_idx.us.us.1209, align 4, !tbaa !5
  %.sroa.3.0..sroa_idx.us.us.1210 = getelementptr inbounds i8, ptr %157, i64 8
  store ptr %153, ptr %.sroa.3.0..sroa_idx.us.us.1210, align 8, !tbaa !9
  %.sroa.4.0..sroa_idx.us.us.1211 = getelementptr inbounds i8, ptr %157, i64 16
  store i8 %110, ptr %.sroa.4.0..sroa_idx.us.us.1211, align 8, !tbaa !11
  %158 = add i64 %.2192.us.us.1, 1
  br label %159

159:                                              ; preds = %148, %156, %152, %150, %.preheader187.us.us.1
  %.4.us.us.1212 = phi i64 [ %.2192.us.us.1, %.preheader187.us.us.1 ], [ %158, %156 ], [ %.2192.us.us.1, %152 ], [ %.2192.us.us.1, %150 ], [ %.2192.us.us.1, %148 ]
  %160 = call i32 @s2n_conn_get_current_message_type(ptr noundef nonnull %4) #11
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %173, label %162

162:                                              ; preds = %159
  %163 = call zeroext i1 @s2n_handshake_type_check_tls13_flag(ptr noundef nonnull %4, i32 noundef 64) #11
  %.not259 = xor i1 %163, true
  %brmerge260 = select i1 %.not259, i1 true, i1 %112
  br i1 %brmerge260, label %164, label %173

164:                                              ; preds = %162
  %165 = call zeroext i1 @s2n_handshake_type_check_flag(ptr noundef nonnull %4, i32 noundef 1) #11
  br i1 %165, label %166, label %173

166:                                              ; preds = %164
  %167 = load ptr, ptr %145, align 8, !tbaa !9
  %168 = load i8, ptr %167, align 8
  %169 = and i8 %168, 1
  %.not182.us.us.1.1 = icmp eq i8 %169, 0
  br i1 %.not182.us.us.1.1, label %173, label %170

170:                                              ; preds = %166
  %171 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %3, i64 0, i64 %.4.us.us.1212
  store i32 %109, ptr %171, align 8, !tbaa !5
  %.sroa.2.0..sroa_idx.us.us.1.1 = getelementptr inbounds i8, ptr %171, i64 4
  store i32 %.0131197.us, ptr %.sroa.2.0..sroa_idx.us.us.1.1, align 4, !tbaa !5
  %.sroa.3.0..sroa_idx.us.us.1.1 = getelementptr inbounds i8, ptr %171, i64 8
  store ptr %167, ptr %.sroa.3.0..sroa_idx.us.us.1.1, align 8, !tbaa !9
  %.sroa.4.0..sroa_idx.us.us.1.1 = getelementptr inbounds i8, ptr %171, i64 16
  store i8 %110, ptr %.sroa.4.0..sroa_idx.us.us.1.1, align 8, !tbaa !11
  %172 = add i64 %.4.us.us.1212, 1
  br label %173

173:                                              ; preds = %162, %170, %166, %164, %159
  %.4.us.us.1.1 = phi i64 [ %.4.us.us.1212, %159 ], [ %172, %170 ], [ %.4.us.us.1212, %166 ], [ %.4.us.us.1212, %164 ], [ %.4.us.us.1212, %162 ]
  %174 = add nuw nsw i64 %.0133191.us.us.1, 1
  %exitcond.1.not = icmp eq i64 %174, %103
  br i1 %exitcond.1.not, label %._crit_edge.us.us.1, label %.preheader187.us.us.1, !llvm.loop !44

._crit_edge.us.us.1:                              ; preds = %173
  %175 = add nuw nsw i32 %.0131197.us, 1
  %exitcond213.not = icmp eq i32 %175, 256
  br i1 %exitcond213.not, label %.split201.us, label %.split.us.us, !llvm.loop !46

.split201.us:                                     ; preds = %._crit_edge.us.us.1
  %176 = load i32, ptr @test_count, align 4, !tbaa !5
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr @test_count, align 4, !tbaa !5
  %.not = icmp eq i64 %.4.us.us.1.1, 0
  br i1 %.not, label %178, label %202

178:                                              ; preds = %.split201.us.thread, %.split201.us
  %179 = tail call ptr @__errno_location() #12
  %180 = load i32, ptr %179, align 4, !tbaa !5
  %181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %182 = call i32 @s2n_print_stacktrace(ptr noundef %181) #11
  %183 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %184 = trunc nuw i8 %183 to i1
  br i1 %184, label %185, label %189

185:                                              ; preds = %178
  %186 = load ptr, ptr @stderr, align 8, !tbaa !9
  %187 = call i32 @fileno(ptr noundef %186) #11
  %188 = call i32 @isatty(i32 noundef %187) #11
  %.not140 = icmp eq i32 %188, 0
  br i1 %.not140, label %189, label %190

189:                                              ; preds = %185, %178
  br label %190

190:                                              ; preds = %185, %189
  %.str.59.sink261 = phi ptr [ @.str.59, %189 ], [ @.str.56, %185 ]
  store i32 %180, ptr %179, align 4, !tbaa !5
  %191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %192 = load i32, ptr @test_count, align 4, !tbaa !5
  %193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = call ptr @s2n_strerror(i32 noundef %194, ptr noundef nonnull @.str.58) #11
  %196 = load i32, ptr %193, align 4, !tbaa !5
  %197 = call ptr @s2n_strerror_debug(i32 noundef %196, ptr noundef nonnull @.str.58) #11
  %198 = load i32, ptr %179, align 4, !tbaa !5
  %199 = call ptr @strerror(i32 noundef %198) #11
  %200 = load i32, ptr %179, align 4, !tbaa !5
  %201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %191, ptr noundef nonnull %.str.59.sink261, i32 noundef %192, ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.55, i32 noundef 140, ptr noundef %195, ptr noundef %197, ptr noundef %199, i32 noundef %200) #13
  call void @exit(i32 noundef 1) #14
  unreachable

202:                                              ; preds = %.split201.us
  %203 = add nsw i32 %176, 2
  store i32 %203, ptr @test_count, align 4, !tbaa !5
  %204 = call i32 @s2n_tls13_key_schedule_update(ptr noundef null) #11
  %205 = call zeroext i1 @s2n_result_is_error(i32 %204)
  br i1 %205, label %230, label %206

206:                                              ; preds = %202
  %207 = tail call ptr @__errno_location() #12
  %208 = load i32, ptr %207, align 4, !tbaa !5
  %209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %210 = call i32 @s2n_print_stacktrace(ptr noundef %209) #11
  %211 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %212 = trunc nuw i8 %211 to i1
  br i1 %212, label %213, label %217

213:                                              ; preds = %206
  %214 = load ptr, ptr @stderr, align 8, !tbaa !9
  %215 = call i32 @fileno(ptr noundef %214) #11
  %216 = call i32 @isatty(i32 noundef %215) #11
  %.not141 = icmp eq i32 %216, 0
  br i1 %.not141, label %217, label %218

217:                                              ; preds = %213, %206
  br label %218

218:                                              ; preds = %213, %217
  %.str.59.sink272 = phi ptr [ @.str.59, %217 ], [ @.str.56, %213 ]
  store i32 %208, ptr %207, align 4, !tbaa !5
  %219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %220 = load i32, ptr @test_count, align 4, !tbaa !5
  %221 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %222 = load i32, ptr %221, align 4, !tbaa !5
  %223 = call ptr @s2n_strerror(i32 noundef %222, ptr noundef nonnull @.str.58) #11
  %224 = load i32, ptr %221, align 4, !tbaa !5
  %225 = call ptr @s2n_strerror_debug(i32 noundef %224, ptr noundef nonnull @.str.58) #11
  %226 = load i32, ptr %207, align 4, !tbaa !5
  %227 = call ptr @strerror(i32 noundef %226) #11
  %228 = load i32, ptr %207, align 4, !tbaa !5
  %229 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %219, ptr noundef nonnull %.str.59.sink272, i32 noundef %220, ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.55, i32 noundef 146, ptr noundef %223, ptr noundef %225, ptr noundef %227, i32 noundef %228) #13
  call void @exit(i32 noundef 1) #14
  unreachable

230:                                              ; preds = %202
  %231 = load i32, ptr @test_count, align 4, !tbaa !5
  %232 = add nsw i32 %231, 1
  store i32 %232, ptr @test_count, align 4, !tbaa !5
  %233 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %234 = load i32, ptr %233, align 4, !tbaa !5
  %235 = icmp eq i32 %234, 402653193
  br i1 %235, label %259, label %236

236:                                              ; preds = %230
  %237 = tail call ptr @__errno_location() #12
  %238 = load i32, ptr %237, align 4, !tbaa !5
  %239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %240 = call i32 @s2n_print_stacktrace(ptr noundef %239) #11
  %241 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %242 = trunc nuw i8 %241 to i1
  br i1 %242, label %243, label %247

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

247:                                              ; preds = %243, %236
  br label %248

248:                                              ; preds = %243, %247
  %.str.59.sink283 = phi ptr [ @.str.59, %247 ], [ @.str.56, %243 ]
  store i32 %238, ptr %237, align 4, !tbaa !5
  %249 = load ptr, ptr @stderr, align 8, !tbaa !9
  %250 = load i32, ptr @test_count, align 4, !tbaa !5
  %251 = load i32, ptr %233, align 4, !tbaa !5
  %252 = call ptr @s2n_strerror(i32 noundef %251, ptr noundef nonnull @.str.58) #11
  %253 = load i32, ptr %233, align 4, !tbaa !5
  %254 = call ptr @s2n_strerror_debug(i32 noundef %253, ptr noundef nonnull @.str.58) #11
  %255 = load i32, ptr %237, align 4, !tbaa !5
  %256 = call ptr @strerror(i32 noundef %255) #11
  %257 = load i32, ptr %237, align 4, !tbaa !5
  %258 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %249, ptr noundef nonnull %.str.59.sink283, i32 noundef %250, ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.55, i32 noundef 146, ptr noundef %252, ptr noundef %254, ptr noundef %256, i32 noundef %257) #13
  call void @exit(i32 noundef 1) #14
  unreachable

259:                                              ; preds = %230
  %260 = add nsw i32 %231, 2
  store i32 %260, ptr @test_count, align 4, !tbaa !5
  %261 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.58) #11
  %262 = icmp eq ptr %261, null
  br i1 %262, label %263, label %286

263:                                              ; preds = %259
  %264 = tail call ptr @__errno_location() #12
  %265 = load i32, ptr %264, align 4, !tbaa !5
  %266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %267 = call i32 @s2n_print_stacktrace(ptr noundef %266) #11
  %268 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %269 = trunc nuw i8 %268 to i1
  br i1 %269, label %270, label %274

270:                                              ; preds = %263
  %271 = load ptr, ptr @stderr, align 8, !tbaa !9
  %272 = call i32 @fileno(ptr noundef %271) #11
  %273 = call i32 @isatty(i32 noundef %272) #11
  %.not181 = icmp eq i32 %273, 0
  br i1 %.not181, label %274, label %275

274:                                              ; preds = %270, %263
  br label %275

275:                                              ; preds = %270, %274
  %.str.59.sink292 = phi ptr [ @.str.59, %274 ], [ @.str.56, %270 ]
  store i32 %265, ptr %264, align 4, !tbaa !5
  %276 = load ptr, ptr @stderr, align 8, !tbaa !9
  %277 = load i32, ptr @test_count, align 4, !tbaa !5
  %278 = load i32, ptr %233, align 4, !tbaa !5
  %279 = call ptr @s2n_strerror(i32 noundef %278, ptr noundef nonnull @.str.58) #11
  %280 = load i32, ptr %233, align 4, !tbaa !5
  %281 = call ptr @s2n_strerror_debug(i32 noundef %280, ptr noundef nonnull @.str.58) #11
  %282 = load i32, ptr %264, align 4, !tbaa !5
  %283 = call ptr @strerror(i32 noundef %282) #11
  %284 = load i32, ptr %264, align 4, !tbaa !5
  %285 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %276, ptr noundef nonnull %.str.59.sink292, i32 noundef %277, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.55, i32 noundef 146, ptr noundef %279, ptr noundef %281, ptr noundef %283, i32 noundef %284) #13
  call void @exit(i32 noundef 1) #14
  unreachable

286:                                              ; preds = %259
  store i32 0, ptr %233, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  %287 = tail call ptr @__errno_location() #12
  store i32 0, ptr %287, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4184, ptr nonnull %5) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(4184) %5, i8 0, i64 4184, i1 false)
  %288 = getelementptr inbounds i8, ptr %5, i64 148
  store i32 1, ptr %288, align 4
  %289 = getelementptr inbounds i8, ptr %5, i64 218
  store i8 34, ptr %289, align 2
  %290 = getelementptr inbounds i8, ptr %5, i64 4088
  store i32 1, ptr %290, align 8
  %291 = load i32, ptr @test_count, align 4, !tbaa !5
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr @test_count, align 4, !tbaa !5
  %293 = call i32 @s2n_tls13_key_schedule_update(ptr noundef nonnull %5) #11
  %294 = call zeroext i1 @s2n_result_is_error(i32 %293)
  br i1 %294, label %317, label %295

295:                                              ; preds = %286
  %296 = load i32, ptr %287, align 4, !tbaa !5
  %297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %298 = call i32 @s2n_print_stacktrace(ptr noundef %297) #11
  %299 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %300 = trunc nuw i8 %299 to i1
  br i1 %300, label %301, label %305

301:                                              ; preds = %295
  %302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %303 = call i32 @fileno(ptr noundef %302) #11
  %304 = call i32 @isatty(i32 noundef %303) #11
  %.not143 = icmp eq i32 %304, 0
  br i1 %.not143, label %305, label %306

305:                                              ; preds = %301, %295
  br label %306

306:                                              ; preds = %301, %305
  %.str.59.sink301 = phi ptr [ @.str.59, %305 ], [ @.str.56, %301 ]
  store i32 %296, ptr %287, align 4, !tbaa !5
  %307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %308 = load i32, ptr @test_count, align 4, !tbaa !5
  %309 = load i32, ptr %233, align 4, !tbaa !5
  %310 = call ptr @s2n_strerror(i32 noundef %309, ptr noundef nonnull @.str.58) #11
  %311 = load i32, ptr %233, align 4, !tbaa !5
  %312 = call ptr @s2n_strerror_debug(i32 noundef %311, ptr noundef nonnull @.str.58) #11
  %313 = load i32, ptr %287, align 4, !tbaa !5
  %314 = call ptr @strerror(i32 noundef %313) #11
  %315 = load i32, ptr %287, align 4, !tbaa !5
  %316 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %307, ptr noundef nonnull %.str.59.sink301, i32 noundef %308, ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.55, i32 noundef 154, ptr noundef %310, ptr noundef %312, ptr noundef %314, i32 noundef %315) #13
  call void @exit(i32 noundef 1) #14
  unreachable

317:                                              ; preds = %286
  %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 = load i32, ptr %233, align 4, !tbaa !5
  %321 = icmp eq i32 %320, 402653193
  br i1 %321, label %344, label %322

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

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

332:                                              ; preds = %328, %322
  br label %333

333:                                              ; preds = %328, %332
  %.str.59.sink310 = phi ptr [ @.str.59, %332 ], [ @.str.56, %328 ]
  store i32 %323, ptr %287, align 4, !tbaa !5
  %334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %335 = load i32, ptr @test_count, align 4, !tbaa !5
  %336 = load i32, ptr %233, align 4, !tbaa !5
  %337 = call ptr @s2n_strerror(i32 noundef %336, ptr noundef nonnull @.str.58) #11
  %338 = load i32, ptr %233, align 4, !tbaa !5
  %339 = call ptr @s2n_strerror_debug(i32 noundef %338, ptr noundef nonnull @.str.58) #11
  %340 = load i32, ptr %287, align 4, !tbaa !5
  %341 = call ptr @strerror(i32 noundef %340) #11
  %342 = load i32, ptr %287, align 4, !tbaa !5
  %343 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %334, ptr noundef nonnull %.str.59.sink310, i32 noundef %335, ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.55, i32 noundef 154, ptr noundef %337, ptr noundef %339, ptr noundef %341, i32 noundef %342) #13
  call void @exit(i32 noundef 1) #14
  unreachable

344:                                              ; preds = %317
  %345 = add nsw i32 %318, 2
  store i32 %345, ptr @test_count, align 4, !tbaa !5
  %346 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.58) #11
  %347 = icmp eq ptr %346, null
  br i1 %347, label %348, label %370

348:                                              ; preds = %344
  %349 = load i32, ptr %287, align 4, !tbaa !5
  %350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %351 = call i32 @s2n_print_stacktrace(ptr noundef %350) #11
  %352 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %353 = trunc nuw i8 %352 to i1
  br i1 %353, label %354, label %358

354:                                              ; preds = %348
  %355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %356 = call i32 @fileno(ptr noundef %355) #11
  %357 = call i32 @isatty(i32 noundef %356) #11
  %.not180 = icmp eq i32 %357, 0
  br i1 %.not180, label %358, label %359

358:                                              ; preds = %354, %348
  br label %359

359:                                              ; preds = %354, %358
  %.str.59.sink319 = phi ptr [ @.str.59, %358 ], [ @.str.56, %354 ]
  store i32 %349, ptr %287, align 4, !tbaa !5
  %360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %361 = load i32, ptr @test_count, align 4, !tbaa !5
  %362 = load i32, ptr %233, align 4, !tbaa !5
  %363 = call ptr @s2n_strerror(i32 noundef %362, ptr noundef nonnull @.str.58) #11
  %364 = load i32, ptr %233, align 4, !tbaa !5
  %365 = call ptr @s2n_strerror_debug(i32 noundef %364, ptr noundef nonnull @.str.58) #11
  %366 = load i32, ptr %287, align 4, !tbaa !5
  %367 = call ptr @strerror(i32 noundef %366) #11
  %368 = load i32, ptr %287, align 4, !tbaa !5
  %369 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %360, ptr noundef nonnull %.str.59.sink319, i32 noundef %361, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.55, i32 noundef 154, ptr noundef %363, ptr noundef %365, ptr noundef %367, i32 noundef %368) #13
  call void @exit(i32 noundef 1) #14
  unreachable

370:                                              ; preds = %344
  store i32 0, ptr %233, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %287, align 4, !tbaa !5
  store i8 33, ptr %289, align 2, !tbaa !47
  %371 = load i32, ptr @test_count, align 4, !tbaa !5
  %372 = add nsw i32 %371, 1
  store i32 %372, ptr @test_count, align 4, !tbaa !5
  %373 = call i32 @s2n_tls13_key_schedule_update(ptr noundef nonnull %5) #11
  %374 = call zeroext i1 @s2n_result_is_ok(i32 %373)
  br i1 %374, label %397, label %375

375:                                              ; preds = %370
  %376 = load i32, ptr %287, align 4, !tbaa !5
  %377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %378 = call i32 @s2n_print_stacktrace(ptr noundef %377) #11
  %379 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %380 = trunc nuw i8 %379 to i1
  br i1 %380, label %381, label %385

381:                                              ; preds = %375
  %382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %383 = call i32 @fileno(ptr noundef %382) #11
  %384 = call i32 @isatty(i32 noundef %383) #11
  %.not145 = icmp eq i32 %384, 0
  br i1 %.not145, label %385, label %386

385:                                              ; preds = %381, %375
  br label %386

386:                                              ; preds = %381, %385
  %.str.59.sink328 = phi ptr [ @.str.59, %385 ], [ @.str.56, %381 ]
  store i32 %376, ptr %287, align 4, !tbaa !5
  %387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %388 = load i32, ptr @test_count, align 4, !tbaa !5
  %389 = load i32, ptr %233, align 4, !tbaa !5
  %390 = call ptr @s2n_strerror(i32 noundef %389, ptr noundef nonnull @.str.58) #11
  %391 = load i32, ptr %233, align 4, !tbaa !5
  %392 = call ptr @s2n_strerror_debug(i32 noundef %391, ptr noundef nonnull @.str.58) #11
  %393 = load i32, ptr %287, align 4, !tbaa !5
  %394 = call ptr @strerror(i32 noundef %393) #11
  %395 = load i32, ptr %287, align 4, !tbaa !5
  %396 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %387, ptr noundef nonnull %.str.59.sink328, i32 noundef %388, ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.55, i32 noundef 156, ptr noundef %390, ptr noundef %392, ptr noundef %394, i32 noundef %395) #13
  call void @exit(i32 noundef 1) #14
  unreachable

397:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 4184, ptr nonnull %6) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(4184) %6, i8 0, i64 4184, i1 false)
  %398 = getelementptr inbounds i8, ptr %6, i64 220
  store i8 34, ptr %398, align 4
  %399 = getelementptr inbounds i8, ptr %6, i64 2176
  store i32 1, ptr %399, align 8
  %400 = load i32, ptr @test_count, align 4, !tbaa !5
  %401 = add nsw i32 %400, 1
  store i32 %401, ptr @test_count, align 4, !tbaa !5
  %402 = call i32 @s2n_tls13_key_schedule_update(ptr noundef nonnull %6) #11
  %403 = call zeroext i1 @s2n_result_is_error(i32 %402)
  br i1 %403, label %426, label %404

404:                                              ; preds = %397
  %405 = load i32, ptr %287, align 4, !tbaa !5
  %406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %407 = call i32 @s2n_print_stacktrace(ptr noundef %406) #11
  %408 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %409 = trunc nuw i8 %408 to i1
  br i1 %409, label %410, label %414

410:                                              ; preds = %404
  %411 = load ptr, ptr @stderr, align 8, !tbaa !9
  %412 = call i32 @fileno(ptr noundef %411) #11
  %413 = call i32 @isatty(i32 noundef %412) #11
  %.not146 = icmp eq i32 %413, 0
  br i1 %.not146, label %414, label %415

414:                                              ; preds = %410, %404
  br label %415

415:                                              ; preds = %410, %414
  %.str.59.sink337 = phi ptr [ @.str.59, %414 ], [ @.str.56, %410 ]
  store i32 %405, ptr %287, align 4, !tbaa !5
  %416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %417 = load i32, ptr @test_count, align 4, !tbaa !5
  %418 = load i32, ptr %233, align 4, !tbaa !5
  %419 = call ptr @s2n_strerror(i32 noundef %418, ptr noundef nonnull @.str.58) #11
  %420 = load i32, ptr %233, align 4, !tbaa !5
  %421 = call ptr @s2n_strerror_debug(i32 noundef %420, ptr noundef nonnull @.str.58) #11
  %422 = load i32, ptr %287, align 4, !tbaa !5
  %423 = call ptr @strerror(i32 noundef %422) #11
  %424 = load i32, ptr %287, align 4, !tbaa !5
  %425 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %416, ptr noundef nonnull %.str.59.sink337, i32 noundef %417, ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.55, i32 noundef 164, ptr noundef %419, ptr noundef %421, ptr noundef %423, i32 noundef %424) #13
  call void @exit(i32 noundef 1) #14
  unreachable

426:                                              ; preds = %397
  %427 = load i32, ptr @test_count, align 4, !tbaa !5
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr @test_count, align 4, !tbaa !5
  %429 = load i32, ptr %233, align 4, !tbaa !5
  %430 = icmp eq i32 %429, 402653193
  br i1 %430, label %453, label %431

431:                                              ; preds = %426
  %432 = load i32, ptr %287, align 4, !tbaa !5
  %433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %434 = call i32 @s2n_print_stacktrace(ptr noundef %433) #11
  %435 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %436 = trunc nuw i8 %435 to i1
  br i1 %436, label %437, label %441

437:                                              ; preds = %431
  %438 = load ptr, ptr @stderr, align 8, !tbaa !9
  %439 = call i32 @fileno(ptr noundef %438) #11
  %440 = call i32 @isatty(i32 noundef %439) #11
  %.not147 = icmp eq i32 %440, 0
  br i1 %.not147, label %441, label %442

441:                                              ; preds = %437, %431
  br label %442

442:                                              ; preds = %437, %441
  %.str.59.sink346 = phi ptr [ @.str.59, %441 ], [ @.str.56, %437 ]
  store i32 %432, ptr %287, align 4, !tbaa !5
  %443 = load ptr, ptr @stderr, align 8, !tbaa !9
  %444 = load i32, ptr @test_count, align 4, !tbaa !5
  %445 = load i32, ptr %233, align 4, !tbaa !5
  %446 = call ptr @s2n_strerror(i32 noundef %445, ptr noundef nonnull @.str.58) #11
  %447 = load i32, ptr %233, align 4, !tbaa !5
  %448 = call ptr @s2n_strerror_debug(i32 noundef %447, ptr noundef nonnull @.str.58) #11
  %449 = load i32, ptr %287, align 4, !tbaa !5
  %450 = call ptr @strerror(i32 noundef %449) #11
  %451 = load i32, ptr %287, align 4, !tbaa !5
  %452 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %443, ptr noundef nonnull %.str.59.sink346, i32 noundef %444, ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.55, i32 noundef 164, ptr noundef %446, ptr noundef %448, ptr noundef %450, i32 noundef %451) #13
  call void @exit(i32 noundef 1) #14
  unreachable

453:                                              ; preds = %426
  %454 = add nsw i32 %427, 2
  store i32 %454, ptr @test_count, align 4, !tbaa !5
  %455 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.58) #11
  %456 = icmp eq ptr %455, null
  br i1 %456, label %457, label %479

457:                                              ; preds = %453
  %458 = load i32, ptr %287, align 4, !tbaa !5
  %459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %460 = call i32 @s2n_print_stacktrace(ptr noundef %459) #11
  %461 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %462 = trunc nuw i8 %461 to i1
  br i1 %462, label %463, label %467

463:                                              ; preds = %457
  %464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %465 = call i32 @fileno(ptr noundef %464) #11
  %466 = call i32 @isatty(i32 noundef %465) #11
  %.not179 = icmp eq i32 %466, 0
  br i1 %.not179, label %467, label %468

467:                                              ; preds = %463, %457
  br label %468

468:                                              ; preds = %463, %467
  %.str.59.sink355 = phi ptr [ @.str.59, %467 ], [ @.str.56, %463 ]
  store i32 %458, ptr %287, align 4, !tbaa !5
  %469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %470 = load i32, ptr @test_count, align 4, !tbaa !5
  %471 = load i32, ptr %233, align 4, !tbaa !5
  %472 = call ptr @s2n_strerror(i32 noundef %471, ptr noundef nonnull @.str.58) #11
  %473 = load i32, ptr %233, align 4, !tbaa !5
  %474 = call ptr @s2n_strerror_debug(i32 noundef %473, ptr noundef nonnull @.str.58) #11
  %475 = load i32, ptr %287, align 4, !tbaa !5
  %476 = call ptr @strerror(i32 noundef %475) #11
  %477 = load i32, ptr %287, align 4, !tbaa !5
  %478 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %469, ptr noundef nonnull %.str.59.sink355, i32 noundef %470, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.55, i32 noundef 164, ptr noundef %472, ptr noundef %474, ptr noundef %476, i32 noundef %477) #13
  call void @exit(i32 noundef 1) #14
  unreachable

479:                                              ; preds = %453
  store i32 0, ptr %233, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %287, align 4, !tbaa !5
  store i8 33, ptr %398, align 4, !tbaa !48
  %480 = load i32, ptr @test_count, align 4, !tbaa !5
  %481 = add nsw i32 %480, 1
  store i32 %481, ptr @test_count, align 4, !tbaa !5
  %482 = call i32 @s2n_tls13_key_schedule_update(ptr noundef nonnull %6) #11
  %483 = call zeroext i1 @s2n_result_is_ok(i32 %482)
  br i1 %483, label %.preheader186, label %484

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

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

494:                                              ; preds = %490, %484
  br label %495

495:                                              ; preds = %490, %494
  %.str.59.sink364 = phi ptr [ @.str.59, %494 ], [ @.str.56, %490 ]
  store i32 %485, ptr %287, align 4, !tbaa !5
  %496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %497 = load i32, ptr @test_count, align 4, !tbaa !5
  %498 = load i32, ptr %233, align 4, !tbaa !5
  %499 = call ptr @s2n_strerror(i32 noundef %498, ptr noundef nonnull @.str.58) #11
  %500 = load i32, ptr %233, align 4, !tbaa !5
  %501 = call ptr @s2n_strerror_debug(i32 noundef %500, ptr noundef nonnull @.str.58) #11
  %502 = load i32, ptr %287, align 4, !tbaa !5
  %503 = call ptr @strerror(i32 noundef %502) #11
  %504 = load i32, ptr %287, align 4, !tbaa !5
  %505 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %496, ptr noundef nonnull %.str.59.sink364, i32 noundef %497, ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.55, i32 noundef 166, ptr noundef %499, ptr noundef %501, ptr noundef %503, i32 noundef %504) #13
  call void @exit(i32 noundef 1) #14
  unreachable

.preheader186:                                    ; preds = %479
  call void @llvm.lifetime.end.p0(i64 4184, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 4184, ptr nonnull %5) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %7, ptr noundef nonnull align 16 dereferenceable(64) @derive_methods, i64 64, i1 false)
  store ptr @s2n_mock_derive_method, ptr getelementptr inbounds (i8, ptr @derive_methods, i64 8), align 8, !tbaa !9
  store ptr @s2n_mock_derive_method, ptr @derive_methods, align 16, !tbaa !9
  store ptr @s2n_mock_derive_method, ptr getelementptr inbounds (i8, ptr @derive_methods, i64 24), align 8, !tbaa !9
  store ptr @s2n_mock_derive_method, ptr getelementptr inbounds (i8, ptr @derive_methods, i64 16), align 16, !tbaa !9
  store ptr @s2n_mock_derive_method, ptr getelementptr inbounds (i8, ptr @derive_methods, i64 40), align 8, !tbaa !9
  store ptr @s2n_mock_derive_method, ptr getelementptr inbounds (i8, ptr @derive_methods, i64 32), align 16, !tbaa !9
  store ptr @s2n_mock_derive_method, ptr getelementptr inbounds (i8, ptr @derive_methods, i64 56), align 8, !tbaa !9
  store ptr @s2n_mock_derive_method, ptr getelementptr inbounds (i8, ptr @derive_methods, i64 48), align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %8, ptr noundef nonnull align 16 dereferenceable(32) @extract_methods, i64 32, i1 false)
  store ptr @s2n_mock_extract_method, ptr @extract_methods, align 16, !tbaa !9
  store ptr @s2n_mock_extract_method, ptr getelementptr inbounds (i8, ptr @extract_methods, i64 8), align 8, !tbaa !9
  store ptr @s2n_mock_extract_method, ptr getelementptr inbounds (i8, ptr @extract_methods, i64 16), align 16, !tbaa !9
  store ptr @s2n_mock_extract_method, ptr getelementptr inbounds (i8, ptr @extract_methods, i64 24), align 8, !tbaa !9
  %506 = getelementptr inbounds i8, ptr %10, i64 368
  %507 = getelementptr inbounds i8, ptr %10, i64 392
  %508 = getelementptr inbounds i8, ptr %10, i64 320
  %509 = getelementptr inbounds i8, ptr %10, i64 344
  %510 = getelementptr inbounds i8, ptr %10, i64 296
  br label %511

511:                                              ; preds = %.preheader186, %1069
  %.0137206 = phi i64 [ 0, %.preheader186 ], [ %1071, %1069 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #11
  %512 = getelementptr inbounds [2000 x %struct.s2n_tls13_key_schedule_test_case], ptr %3, i64 0, i64 %.0137206
  %513 = load i32, ptr %512, align 8, !tbaa !49
  %514 = call ptr @s2n_connection_new(i32 noundef %513) #11
  store ptr %514, ptr %9, align 8, !tbaa !9
  %515 = getelementptr inbounds i8, ptr %514, i64 220
  store i8 34, ptr %515, align 4, !tbaa !48
  %516 = load i32, ptr @test_count, align 4, !tbaa !5
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr @test_count, align 4, !tbaa !5
  %518 = call i32 @s2n_conn_choose_state_machine(ptr noundef %514, i8 noundef zeroext 34) #11
  %519 = call zeroext i1 @s2n_result_is_ok(i32 %518)
  br i1 %519, label %542, label %520

520:                                              ; preds = %511
  %521 = load i32, ptr %287, align 4, !tbaa !5
  %522 = load ptr, ptr @stderr, align 8, !tbaa !9
  %523 = call i32 @s2n_print_stacktrace(ptr noundef %522) #11
  %524 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %525 = trunc nuw i8 %524 to i1
  br i1 %525, label %526, label %530

526:                                              ; preds = %520
  %527 = load ptr, ptr @stderr, align 8, !tbaa !9
  %528 = call i32 @fileno(ptr noundef %527) #11
  %529 = call i32 @isatty(i32 noundef %528) #11
  %.not154 = icmp eq i32 %529, 0
  br i1 %.not154, label %530, label %531

530:                                              ; preds = %526, %520
  br label %531

531:                                              ; preds = %526, %530
  %.str.59.sink373 = phi ptr [ @.str.59, %530 ], [ @.str.56, %526 ]
  store i32 %521, ptr %287, align 4, !tbaa !5
  %532 = load ptr, ptr @stderr, align 8, !tbaa !9
  %533 = load i32, ptr @test_count, align 4, !tbaa !5
  %534 = load i32, ptr %233, align 4, !tbaa !5
  %535 = call ptr @s2n_strerror(i32 noundef %534, ptr noundef nonnull @.str.58) #11
  %536 = load i32, ptr %233, align 4, !tbaa !5
  %537 = call ptr @s2n_strerror_debug(i32 noundef %536, ptr noundef nonnull @.str.58) #11
  %538 = load i32, ptr %287, align 4, !tbaa !5
  %539 = call ptr @strerror(i32 noundef %538) #11
  %540 = load i32, ptr %287, align 4, !tbaa !5
  %541 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %532, ptr noundef nonnull %.str.59.sink373, i32 noundef %533, ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.55, i32 noundef 188, ptr noundef %535, ptr noundef %537, ptr noundef %539, i32 noundef %540) #13
  call void @exit(i32 noundef 1) #14
  unreachable

542:                                              ; preds = %511
  %543 = getelementptr inbounds i8, ptr %512, i64 4
  %544 = load i32, ptr %543, align 4, !tbaa !51
  %545 = load ptr, ptr %9, align 8, !tbaa !9
  %546 = getelementptr inbounds i8, ptr %545, i64 2172
  store i32 %544, ptr %546, align 4, !tbaa !18
  %547 = getelementptr inbounds i8, ptr %512, i64 8
  %548 = load ptr, ptr %547, align 8, !tbaa !52
  %549 = getelementptr inbounds i8, ptr %545, i64 232
  %550 = load ptr, ptr %549, align 8, !tbaa !53
  store ptr %548, ptr %550, align 8, !tbaa !54
  %551 = getelementptr inbounds i8, ptr %512, i64 16
  %552 = load i8, ptr %551, align 8, !tbaa !59, !range !13, !noundef !14
  %553 = trunc nuw i8 %552 to i1
  %.pre = load ptr, ptr %9, align 8, !tbaa !9
  br i1 %553, label %554, label %556

554:                                              ; preds = %542
  %555 = getelementptr inbounds i8, ptr %.pre, i64 4088
  store i32 1, ptr %555, align 8, !tbaa !60
  br label %556

556:                                              ; preds = %554, %542
  call void @llvm.lifetime.start.p0(i64 432, ptr nonnull %10) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(432) %10, i8 0, i64 432, i1 false)
  %557 = load i32, ptr @test_count, align 4, !tbaa !5
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr @test_count, align 4, !tbaa !5
  %559 = call i32 @s2n_connection_set_secret_callback(ptr noundef %.pre, ptr noundef nonnull @s2n_test_secret_cb, ptr noundef nonnull %10) #11
  %560 = icmp eq i32 %559, -1
  br i1 %560, label %563, label %.preheader

.preheader:                                       ; preds = %556
  %561 = load ptr, ptr %9, align 8, !tbaa !9
  %562 = call i32 @s2n_conn_get_current_message_type(ptr noundef %561) #11
  %.not155205 = icmp eq i32 %562, 20
  br i1 %.not155205, label %._crit_edge, label %.lr.ph

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

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

573:                                              ; preds = %569, %563
  br label %574

574:                                              ; preds = %569, %573
  %.str.59.sink382 = phi ptr [ @.str.59, %573 ], [ @.str.56, %569 ]
  store i32 %564, ptr %287, align 4, !tbaa !5
  %575 = load ptr, ptr @stderr, align 8, !tbaa !9
  %576 = load i32, ptr @test_count, align 4, !tbaa !5
  %577 = load i32, ptr %233, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror(i32 noundef %577, ptr noundef nonnull @.str.58) #11
  %579 = load i32, ptr %233, align 4, !tbaa !5
  %580 = call ptr @s2n_strerror_debug(i32 noundef %579, ptr noundef nonnull @.str.58) #11
  %581 = load i32, ptr %287, align 4, !tbaa !5
  %582 = call ptr @strerror(i32 noundef %581) #11
  %583 = load i32, ptr %287, align 4, !tbaa !5
  %584 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %575, ptr noundef nonnull %.str.59.sink382, i32 noundef %576, ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.55, i32 noundef 198, ptr noundef %578, ptr noundef %580, ptr noundef %582, i32 noundef %583) #13
  call void @exit(i32 noundef 1) #14
  unreachable

.lr.ph:                                           ; preds = %.preheader, %1036
  %585 = load ptr, ptr %9, align 8, !tbaa !9
  %586 = call i32 @s2n_conn_get_current_message_type(ptr noundef %585) #11
  %587 = icmp eq i32 %586, 18
  br i1 %587, label %588, label %617

588:                                              ; preds = %.lr.ph
  %589 = load ptr, ptr %9, align 8, !tbaa !9
  %590 = getelementptr inbounds i8, ptr %589, i64 4088
  store i32 4, ptr %590, align 8, !tbaa !60
  %591 = load i32, ptr @test_count, align 4, !tbaa !5
  %592 = add nsw i32 %591, 1
  store i32 %592, ptr @test_count, align 4, !tbaa !5
  %593 = call i32 @s2n_tls13_key_schedule_reset(ptr noundef %589) #11
  %594 = call zeroext i1 @s2n_result_is_ok(i32 %593)
  br i1 %594, label %617, label %595

595:                                              ; preds = %588
  %596 = load i32, ptr %287, align 4, !tbaa !5
  %597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %598 = call i32 @s2n_print_stacktrace(ptr noundef %597) #11
  %599 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %600 = trunc nuw i8 %599 to i1
  br i1 %600, label %601, label %605

601:                                              ; preds = %595
  %602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %603 = call i32 @fileno(ptr noundef %602) #11
  %604 = call i32 @isatty(i32 noundef %603) #11
  %.not157 = icmp eq i32 %604, 0
  br i1 %.not157, label %605, label %606

605:                                              ; preds = %601, %595
  br label %606

606:                                              ; preds = %601, %605
  %.str.59.sink391 = phi ptr [ @.str.59, %605 ], [ @.str.56, %601 ]
  store i32 %596, ptr %287, align 4, !tbaa !5
  %607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %608 = load i32, ptr @test_count, align 4, !tbaa !5
  %609 = load i32, ptr %233, align 4, !tbaa !5
  %610 = call ptr @s2n_strerror(i32 noundef %609, ptr noundef nonnull @.str.58) #11
  %611 = load i32, ptr %233, align 4, !tbaa !5
  %612 = call ptr @s2n_strerror_debug(i32 noundef %611, ptr noundef nonnull @.str.58) #11
  %613 = load i32, ptr %287, align 4, !tbaa !5
  %614 = call ptr @strerror(i32 noundef %613) #11
  %615 = load i32, ptr %287, align 4, !tbaa !5
  %616 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %607, ptr noundef nonnull %.str.59.sink391, i32 noundef %608, ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.55, i32 noundef 209, ptr noundef %610, ptr noundef %612, ptr noundef %614, i32 noundef %615) #13
  call void @exit(i32 noundef 1) #14
  unreachable

617:                                              ; preds = %588, %.lr.ph
  %618 = load ptr, ptr %9, align 8, !tbaa !9
  %619 = call i32 @s2n_conn_get_current_message_type(ptr noundef %618) #11
  switch i32 %619, label %._crit_edge217 [
    i32 0, label %620
    i32 18, label %651
    i32 1, label %651
    i32 19, label %682
    i32 16, label %738
    i32 2, label %738
    i32 17, label %738
    i32 15, label %738
    i32 6, label %738
    i32 8, label %794
    i32 10, label %794
    i32 13, label %794
    i32 20, label %850
    i32 12, label %958
    i32 7, label %958
    i32 9, label %958
    i32 5, label %958
    i32 3, label %958
    i32 4, label %958
  ]

._crit_edge217:                                   ; preds = %617
  %.pre218 = load i32, ptr @test_count, align 4, !tbaa !5
  %.pre219 = load ptr, ptr %9, align 8, !tbaa !9
  br label %980

620:                                              ; preds = %617
  %621 = load i32, ptr @test_count, align 4, !tbaa !5
  %622 = add nsw i32 %621, 1
  store i32 %622, ptr @test_count, align 4, !tbaa !5
  %623 = load ptr, ptr %9, align 8, !tbaa !9
  %624 = getelementptr inbounds i8, ptr %623, i64 632
  %625 = load ptr, ptr %624, align 8, !tbaa !61
  %626 = getelementptr inbounds i8, ptr %623, i64 224
  %627 = load ptr, ptr %626, align 8, !tbaa !62
  %628 = icmp eq ptr %625, %627
  br i1 %628, label %980, label %629

629:                                              ; preds = %620
  %630 = load i32, ptr %287, align 4, !tbaa !5
  %631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %632 = call i32 @s2n_print_stacktrace(ptr noundef %631) #11
  %633 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %634 = trunc nuw i8 %633 to i1
  br i1 %634, label %635, label %639

635:                                              ; preds = %629
  %636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %637 = call i32 @fileno(ptr noundef %636) #11
  %638 = call i32 @isatty(i32 noundef %637) #11
  %.not175 = icmp eq i32 %638, 0
  br i1 %.not175, label %639, label %640

639:                                              ; preds = %635, %629
  br label %640

640:                                              ; preds = %635, %639
  %.str.59.sink400 = phi ptr [ @.str.59, %639 ], [ @.str.56, %635 ]
  store i32 %630, ptr %287, align 4, !tbaa !5
  %641 = load ptr, ptr @stderr, align 8, !tbaa !9
  %642 = load i32, ptr @test_count, align 4, !tbaa !5
  %643 = load i32, ptr %233, align 4, !tbaa !5
  %644 = call ptr @s2n_strerror(i32 noundef %643, ptr noundef nonnull @.str.58) #11
  %645 = load i32, ptr %233, align 4, !tbaa !5
  %646 = call ptr @s2n_strerror_debug(i32 noundef %645, ptr noundef nonnull @.str.58) #11
  %647 = load i32, ptr %287, align 4, !tbaa !5
  %648 = call ptr @strerror(i32 noundef %647) #11
  %649 = load i32, ptr %287, align 4, !tbaa !5
  %650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %641, ptr noundef nonnull %.str.59.sink400, i32 noundef %642, ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.55, i32 noundef 219, ptr noundef %644, ptr noundef %646, ptr noundef %648, i32 noundef %649) #13
  call void @exit(i32 noundef 1) #14
  unreachable

651:                                              ; preds = %617, %617
  %652 = load i32, ptr @test_count, align 4, !tbaa !5
  %653 = add nsw i32 %652, 1
  store i32 %653, ptr @test_count, align 4, !tbaa !5
  %654 = load ptr, ptr %9, align 8, !tbaa !9
  %655 = getelementptr inbounds i8, ptr %654, i64 640
  %656 = load ptr, ptr %655, align 8, !tbaa !63
  %657 = getelementptr inbounds i8, ptr %654, i64 224
  %658 = load ptr, ptr %657, align 8, !tbaa !62
  %659 = icmp eq ptr %656, %658
  br i1 %659, label %980, label %660

660:                                              ; preds = %651
  %661 = load i32, ptr %287, align 4, !tbaa !5
  %662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %663 = call i32 @s2n_print_stacktrace(ptr noundef %662) #11
  %664 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %665 = trunc nuw i8 %664 to i1
  br i1 %665, label %666, label %670

666:                                              ; preds = %660
  %667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %668 = call i32 @fileno(ptr noundef %667) #11
  %669 = call i32 @isatty(i32 noundef %668) #11
  %.not174 = icmp eq i32 %669, 0
  br i1 %.not174, label %670, label %671

670:                                              ; preds = %666, %660
  br label %671

671:                                              ; preds = %666, %670
  %.str.59.sink409 = phi ptr [ @.str.59, %670 ], [ @.str.56, %666 ]
  store i32 %661, ptr %287, align 4, !tbaa !5
  %672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %673 = load i32, ptr @test_count, align 4, !tbaa !5
  %674 = load i32, ptr %233, align 4, !tbaa !5
  %675 = call ptr @s2n_strerror(i32 noundef %674, ptr noundef nonnull @.str.58) #11
  %676 = load i32, ptr %233, align 4, !tbaa !5
  %677 = call ptr @s2n_strerror_debug(i32 noundef %676, ptr noundef nonnull @.str.58) #11
  %678 = load i32, ptr %287, align 4, !tbaa !5
  %679 = call ptr @strerror(i32 noundef %678) #11
  %680 = load i32, ptr %287, align 4, !tbaa !5
  %681 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %672, ptr noundef nonnull %.str.59.sink409, i32 noundef %673, ptr noundef nonnull @.str.76, ptr noundef nonnull @.str.55, i32 noundef 224, ptr noundef %675, ptr noundef %677, ptr noundef %679, i32 noundef %680) #13
  call void @exit(i32 noundef 1) #14
  unreachable

682:                                              ; preds = %617
  %683 = load i32, ptr @test_count, align 4, !tbaa !5
  %684 = add nsw i32 %683, 1
  store i32 %684, ptr @test_count, align 4, !tbaa !5
  %685 = load ptr, ptr %9, align 8, !tbaa !9
  %686 = getelementptr inbounds i8, ptr %685, i64 632
  %687 = load ptr, ptr %686, align 8, !tbaa !61
  %688 = getelementptr inbounds i8, ptr %685, i64 232
  %689 = load ptr, ptr %688, align 8, !tbaa !53
  %690 = icmp eq ptr %687, %689
  br i1 %690, label %713, label %691

691:                                              ; preds = %682
  %692 = load i32, ptr %287, align 4, !tbaa !5
  %693 = load ptr, ptr @stderr, align 8, !tbaa !9
  %694 = call i32 @s2n_print_stacktrace(ptr noundef %693) #11
  %695 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %696 = trunc nuw i8 %695 to i1
  br i1 %696, label %697, label %701

697:                                              ; preds = %691
  %698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %699 = call i32 @fileno(ptr noundef %698) #11
  %700 = call i32 @isatty(i32 noundef %699) #11
  %.not171 = icmp eq i32 %700, 0
  br i1 %.not171, label %701, label %702

701:                                              ; preds = %697, %691
  br label %702

702:                                              ; preds = %697, %701
  %.str.59.sink418 = phi ptr [ @.str.59, %701 ], [ @.str.56, %697 ]
  store i32 %692, ptr %287, align 4, !tbaa !5
  %703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %704 = load i32, ptr @test_count, align 4, !tbaa !5
  %705 = load i32, ptr %233, align 4, !tbaa !5
  %706 = call ptr @s2n_strerror(i32 noundef %705, ptr noundef nonnull @.str.58) #11
  %707 = load i32, ptr %233, align 4, !tbaa !5
  %708 = call ptr @s2n_strerror_debug(i32 noundef %707, ptr noundef nonnull @.str.58) #11
  %709 = load i32, ptr %287, align 4, !tbaa !5
  %710 = call ptr @strerror(i32 noundef %709) #11
  %711 = load i32, ptr %287, align 4, !tbaa !5
  %712 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %703, ptr noundef nonnull %.str.59.sink418, i32 noundef %704, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.55, i32 noundef 228, ptr noundef %706, ptr noundef %708, ptr noundef %710, i32 noundef %711) #13
  call void @exit(i32 noundef 1) #14
  unreachable

713:                                              ; preds = %682
  %714 = add nsw i32 %683, 2
  store i32 %714, ptr @test_count, align 4, !tbaa !5
  %715 = load i32, ptr %510, align 8, !tbaa !64
  %.not172 = icmp eq i32 %715, 0
  br i1 %.not172, label %716, label %980

716:                                              ; preds = %713
  %717 = load i32, ptr %287, align 4, !tbaa !5
  %718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %719 = call i32 @s2n_print_stacktrace(ptr noundef %718) #11
  %720 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %721 = trunc nuw i8 %720 to i1
  br i1 %721, label %722, label %726

722:                                              ; preds = %716
  %723 = load ptr, ptr @stderr, align 8, !tbaa !9
  %724 = call i32 @fileno(ptr noundef %723) #11
  %725 = call i32 @isatty(i32 noundef %724) #11
  %.not173 = icmp eq i32 %725, 0
  br i1 %.not173, label %726, label %727

726:                                              ; preds = %722, %716
  br label %727

727:                                              ; preds = %722, %726
  %.str.59.sink427 = phi ptr [ @.str.59, %726 ], [ @.str.56, %722 ]
  store i32 %717, ptr %287, align 4, !tbaa !5
  %728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %729 = load i32, ptr @test_count, align 4, !tbaa !5
  %730 = load i32, ptr %233, align 4, !tbaa !5
  %731 = call ptr @s2n_strerror(i32 noundef %730, ptr noundef nonnull @.str.58) #11
  %732 = load i32, ptr %233, align 4, !tbaa !5
  %733 = call ptr @s2n_strerror_debug(i32 noundef %732, ptr noundef nonnull @.str.58) #11
  %734 = load i32, ptr %287, align 4, !tbaa !5
  %735 = call ptr @strerror(i32 noundef %734) #11
  %736 = load i32, ptr %287, align 4, !tbaa !5
  %737 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %728, ptr noundef nonnull %.str.59.sink427, i32 noundef %729, ptr noundef nonnull @.str.78, ptr noundef nonnull @.str.55, i32 noundef 230, ptr noundef %731, ptr noundef %733, ptr noundef %735, i32 noundef %736) #13
  call void @exit(i32 noundef 1) #14
  unreachable

738:                                              ; preds = %617, %617, %617, %617, %617
  %739 = load i32, ptr @test_count, align 4, !tbaa !5
  %740 = add nsw i32 %739, 1
  store i32 %740, ptr @test_count, align 4, !tbaa !5
  %741 = load ptr, ptr %9, align 8, !tbaa !9
  %742 = getelementptr inbounds i8, ptr %741, i64 640
  %743 = load ptr, ptr %742, align 8, !tbaa !63
  %744 = getelementptr inbounds i8, ptr %741, i64 232
  %745 = load ptr, ptr %744, align 8, !tbaa !53
  %746 = icmp eq ptr %743, %745
  br i1 %746, label %769, label %747

747:                                              ; preds = %738
  %748 = load i32, ptr %287, align 4, !tbaa !5
  %749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %750 = call i32 @s2n_print_stacktrace(ptr noundef %749) #11
  %751 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %752 = trunc nuw i8 %751 to i1
  br i1 %752, label %753, label %757

753:                                              ; preds = %747
  %754 = load ptr, ptr @stderr, align 8, !tbaa !9
  %755 = call i32 @fileno(ptr noundef %754) #11
  %756 = call i32 @isatty(i32 noundef %755) #11
  %.not168 = icmp eq i32 %756, 0
  br i1 %.not168, label %757, label %758

757:                                              ; preds = %753, %747
  br label %758

758:                                              ; preds = %753, %757
  %.str.59.sink436 = phi ptr [ @.str.59, %757 ], [ @.str.56, %753 ]
  store i32 %748, ptr %287, align 4, !tbaa !5
  %759 = load ptr, ptr @stderr, align 8, !tbaa !9
  %760 = load i32, ptr @test_count, align 4, !tbaa !5
  %761 = load i32, ptr %233, align 4, !tbaa !5
  %762 = call ptr @s2n_strerror(i32 noundef %761, ptr noundef nonnull @.str.58) #11
  %763 = load i32, ptr %233, align 4, !tbaa !5
  %764 = call ptr @s2n_strerror_debug(i32 noundef %763, ptr noundef nonnull @.str.58) #11
  %765 = load i32, ptr %287, align 4, !tbaa !5
  %766 = call ptr @strerror(i32 noundef %765) #11
  %767 = load i32, ptr %287, align 4, !tbaa !5
  %768 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %759, ptr noundef nonnull %.str.59.sink436, i32 noundef %760, ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.55, i32 noundef 238, ptr noundef %762, ptr noundef %764, ptr noundef %766, i32 noundef %767) #13
  call void @exit(i32 noundef 1) #14
  unreachable

769:                                              ; preds = %738
  %770 = add nsw i32 %739, 2
  store i32 %770, ptr @test_count, align 4, !tbaa !5
  %771 = load i32, ptr %509, align 8, !tbaa !64
  %.not169 = icmp eq i32 %771, 0
  br i1 %.not169, label %772, label %980

772:                                              ; preds = %769
  %773 = load i32, ptr %287, align 4, !tbaa !5
  %774 = load ptr, ptr @stderr, align 8, !tbaa !9
  %775 = call i32 @s2n_print_stacktrace(ptr noundef %774) #11
  %776 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %777 = trunc nuw i8 %776 to i1
  br i1 %777, label %778, label %782

778:                                              ; preds = %772
  %779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %780 = call i32 @fileno(ptr noundef %779) #11
  %781 = call i32 @isatty(i32 noundef %780) #11
  %.not170 = icmp eq i32 %781, 0
  br i1 %.not170, label %782, label %783

782:                                              ; preds = %778, %772
  br label %783

783:                                              ; preds = %778, %782
  %.str.59.sink445 = phi ptr [ @.str.59, %782 ], [ @.str.56, %778 ]
  store i32 %773, ptr %287, align 4, !tbaa !5
  %784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %785 = load i32, ptr @test_count, align 4, !tbaa !5
  %786 = load i32, ptr %233, align 4, !tbaa !5
  %787 = call ptr @s2n_strerror(i32 noundef %786, ptr noundef nonnull @.str.58) #11
  %788 = load i32, ptr %233, align 4, !tbaa !5
  %789 = call ptr @s2n_strerror_debug(i32 noundef %788, ptr noundef nonnull @.str.58) #11
  %790 = load i32, ptr %287, align 4, !tbaa !5
  %791 = call ptr @strerror(i32 noundef %790) #11
  %792 = load i32, ptr %287, align 4, !tbaa !5
  %793 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %784, ptr noundef nonnull %.str.59.sink445, i32 noundef %785, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.55, i32 noundef 240, ptr noundef %787, ptr noundef %789, ptr noundef %791, i32 noundef %792) #13
  call void @exit(i32 noundef 1) #14
  unreachable

794:                                              ; preds = %617, %617, %617
  %795 = load i32, ptr @test_count, align 4, !tbaa !5
  %796 = add nsw i32 %795, 1
  store i32 %796, ptr @test_count, align 4, !tbaa !5
  %797 = load ptr, ptr %9, align 8, !tbaa !9
  %798 = getelementptr inbounds i8, ptr %797, i64 632
  %799 = load ptr, ptr %798, align 8, !tbaa !61
  %800 = getelementptr inbounds i8, ptr %797, i64 232
  %801 = load ptr, ptr %800, align 8, !tbaa !53
  %802 = icmp eq ptr %799, %801
  br i1 %802, label %825, label %803

803:                                              ; preds = %794
  %804 = load i32, ptr %287, align 4, !tbaa !5
  %805 = load ptr, ptr @stderr, align 8, !tbaa !9
  %806 = call i32 @s2n_print_stacktrace(ptr noundef %805) #11
  %807 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %808 = trunc nuw i8 %807 to i1
  br i1 %808, label %809, label %813

809:                                              ; preds = %803
  %810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %811 = call i32 @fileno(ptr noundef %810) #11
  %812 = call i32 @isatty(i32 noundef %811) #11
  %.not165 = icmp eq i32 %812, 0
  br i1 %.not165, label %813, label %814

813:                                              ; preds = %809, %803
  br label %814

814:                                              ; preds = %809, %813
  %.str.59.sink454 = phi ptr [ @.str.59, %813 ], [ @.str.56, %809 ]
  store i32 %804, ptr %287, align 4, !tbaa !5
  %815 = load ptr, ptr @stderr, align 8, !tbaa !9
  %816 = load i32, ptr @test_count, align 4, !tbaa !5
  %817 = load i32, ptr %233, align 4, !tbaa !5
  %818 = call ptr @s2n_strerror(i32 noundef %817, ptr noundef nonnull @.str.58) #11
  %819 = load i32, ptr %233, align 4, !tbaa !5
  %820 = call ptr @s2n_strerror_debug(i32 noundef %819, ptr noundef nonnull @.str.58) #11
  %821 = load i32, ptr %287, align 4, !tbaa !5
  %822 = call ptr @strerror(i32 noundef %821) #11
  %823 = load i32, ptr %287, align 4, !tbaa !5
  %824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %815, ptr noundef nonnull %.str.59.sink454, i32 noundef %816, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.55, i32 noundef 246, ptr noundef %818, ptr noundef %820, ptr noundef %822, i32 noundef %823) #13
  call void @exit(i32 noundef 1) #14
  unreachable

825:                                              ; preds = %794
  %826 = add nsw i32 %795, 2
  store i32 %826, ptr @test_count, align 4, !tbaa !5
  %827 = load i32, ptr %508, align 8, !tbaa !64
  %.not166 = icmp eq i32 %827, 0
  br i1 %.not166, label %828, label %980

828:                                              ; preds = %825
  %829 = load i32, ptr %287, align 4, !tbaa !5
  %830 = load ptr, ptr @stderr, align 8, !tbaa !9
  %831 = call i32 @s2n_print_stacktrace(ptr noundef %830) #11
  %832 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %833 = trunc nuw i8 %832 to i1
  br i1 %833, label %834, label %838

834:                                              ; preds = %828
  %835 = load ptr, ptr @stderr, align 8, !tbaa !9
  %836 = call i32 @fileno(ptr noundef %835) #11
  %837 = call i32 @isatty(i32 noundef %836) #11
  %.not167 = icmp eq i32 %837, 0
  br i1 %.not167, label %838, label %839

838:                                              ; preds = %834, %828
  br label %839

839:                                              ; preds = %834, %838
  %.str.59.sink463 = phi ptr [ @.str.59, %838 ], [ @.str.56, %834 ]
  store i32 %829, ptr %287, align 4, !tbaa !5
  %840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %841 = load i32, ptr @test_count, align 4, !tbaa !5
  %842 = load i32, ptr %233, align 4, !tbaa !5
  %843 = call ptr @s2n_strerror(i32 noundef %842, ptr noundef nonnull @.str.58) #11
  %844 = load i32, ptr %233, align 4, !tbaa !5
  %845 = call ptr @s2n_strerror_debug(i32 noundef %844, ptr noundef nonnull @.str.58) #11
  %846 = load i32, ptr %287, align 4, !tbaa !5
  %847 = call ptr @strerror(i32 noundef %846) #11
  %848 = load i32, ptr %287, align 4, !tbaa !5
  %849 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %840, ptr noundef nonnull %.str.59.sink463, i32 noundef %841, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.55, i32 noundef 248, ptr noundef %843, ptr noundef %845, ptr noundef %847, i32 noundef %848) #13
  call void @exit(i32 noundef 1) #14
  unreachable

850:                                              ; preds = %617
  %851 = load i32, ptr @test_count, align 4, !tbaa !5
  %852 = add nsw i32 %851, 1
  store i32 %852, ptr @test_count, align 4, !tbaa !5
  %853 = load ptr, ptr %9, align 8, !tbaa !9
  %854 = getelementptr inbounds i8, ptr %853, i64 632
  %855 = load ptr, ptr %854, align 8, !tbaa !61
  %856 = getelementptr inbounds i8, ptr %853, i64 232
  %857 = load ptr, ptr %856, align 8, !tbaa !53
  %858 = icmp eq ptr %855, %857
  br i1 %858, label %881, label %859

859:                                              ; preds = %850
  %860 = load i32, ptr %287, align 4, !tbaa !5
  %861 = load ptr, ptr @stderr, align 8, !tbaa !9
  %862 = call i32 @s2n_print_stacktrace(ptr noundef %861) #11
  %863 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %864 = trunc nuw i8 %863 to i1
  br i1 %864, label %865, label %869

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

869:                                              ; preds = %865, %859
  br label %870

870:                                              ; preds = %865, %869
  %.str.59.sink472 = phi ptr [ @.str.59, %869 ], [ @.str.56, %865 ]
  store i32 %860, ptr %287, align 4, !tbaa !5
  %871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %872 = load i32, ptr @test_count, align 4, !tbaa !5
  %873 = load i32, ptr %233, align 4, !tbaa !5
  %874 = call ptr @s2n_strerror(i32 noundef %873, ptr noundef nonnull @.str.58) #11
  %875 = load i32, ptr %233, align 4, !tbaa !5
  %876 = call ptr @s2n_strerror_debug(i32 noundef %875, ptr noundef nonnull @.str.58) #11
  %877 = load i32, ptr %287, align 4, !tbaa !5
  %878 = call ptr @strerror(i32 noundef %877) #11
  %879 = load i32, ptr %287, align 4, !tbaa !5
  %880 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %871, ptr noundef nonnull %.str.59.sink472, i32 noundef %872, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.55, i32 noundef 252, ptr noundef %874, ptr noundef %876, ptr noundef %878, i32 noundef %879) #13
  call void @exit(i32 noundef 1) #14
  unreachable

881:                                              ; preds = %850
  %882 = add nsw i32 %851, 2
  store i32 %882, ptr @test_count, align 4, !tbaa !5
  %883 = getelementptr inbounds i8, ptr %853, i64 640
  %884 = load ptr, ptr %883, align 8, !tbaa !63
  %885 = icmp eq ptr %884, %855
  br i1 %885, label %908, label %886

886:                                              ; preds = %881
  %887 = load i32, ptr %287, align 4, !tbaa !5
  %888 = load ptr, ptr @stderr, align 8, !tbaa !9
  %889 = call i32 @s2n_print_stacktrace(ptr noundef %888) #11
  %890 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %891 = trunc nuw i8 %890 to i1
  br i1 %891, label %892, label %896

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

896:                                              ; preds = %892, %886
  br label %897

897:                                              ; preds = %892, %896
  %.str.59.sink481 = phi ptr [ @.str.59, %896 ], [ @.str.56, %892 ]
  store i32 %887, ptr %287, align 4, !tbaa !5
  %898 = load ptr, ptr @stderr, align 8, !tbaa !9
  %899 = load i32, ptr @test_count, align 4, !tbaa !5
  %900 = load i32, ptr %233, align 4, !tbaa !5
  %901 = call ptr @s2n_strerror(i32 noundef %900, ptr noundef nonnull @.str.58) #11
  %902 = load i32, ptr %233, align 4, !tbaa !5
  %903 = call ptr @s2n_strerror_debug(i32 noundef %902, ptr noundef nonnull @.str.58) #11
  %904 = load i32, ptr %287, align 4, !tbaa !5
  %905 = call ptr @strerror(i32 noundef %904) #11
  %906 = load i32, ptr %287, align 4, !tbaa !5
  %907 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %898, ptr noundef nonnull %.str.59.sink481, i32 noundef %899, ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.55, i32 noundef 253, ptr noundef %901, ptr noundef %903, ptr noundef %905, i32 noundef %906) #13
  call void @exit(i32 noundef 1) #14
  unreachable

908:                                              ; preds = %881
  %909 = add nsw i32 %851, 3
  store i32 %909, ptr @test_count, align 4, !tbaa !5
  %910 = load i32, ptr %506, align 8, !tbaa !64
  %.not161 = icmp eq i32 %910, 0
  br i1 %.not161, label %911, label %933

911:                                              ; preds = %908
  %912 = load i32, ptr %287, align 4, !tbaa !5
  %913 = load ptr, ptr @stderr, align 8, !tbaa !9
  %914 = call i32 @s2n_print_stacktrace(ptr noundef %913) #11
  %915 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %916 = trunc nuw i8 %915 to i1
  br i1 %916, label %917, label %921

917:                                              ; preds = %911
  %918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %919 = call i32 @fileno(ptr noundef %918) #11
  %920 = call i32 @isatty(i32 noundef %919) #11
  %.not162 = icmp eq i32 %920, 0
  br i1 %.not162, label %921, label %922

921:                                              ; preds = %917, %911
  br label %922

922:                                              ; preds = %917, %921
  %.str.59.sink490 = phi ptr [ @.str.59, %921 ], [ @.str.56, %917 ]
  store i32 %912, ptr %287, align 4, !tbaa !5
  %923 = load ptr, ptr @stderr, align 8, !tbaa !9
  %924 = load i32, ptr @test_count, align 4, !tbaa !5
  %925 = load i32, ptr %233, align 4, !tbaa !5
  %926 = call ptr @s2n_strerror(i32 noundef %925, ptr noundef nonnull @.str.58) #11
  %927 = load i32, ptr %233, align 4, !tbaa !5
  %928 = call ptr @s2n_strerror_debug(i32 noundef %927, ptr noundef nonnull @.str.58) #11
  %929 = load i32, ptr %287, align 4, !tbaa !5
  %930 = call ptr @strerror(i32 noundef %929) #11
  %931 = load i32, ptr %287, align 4, !tbaa !5
  %932 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %923, ptr noundef nonnull %.str.59.sink490, i32 noundef %924, ptr noundef nonnull @.str.82, ptr noundef nonnull @.str.55, i32 noundef 255, ptr noundef %926, ptr noundef %928, ptr noundef %930, i32 noundef %931) #13
  call void @exit(i32 noundef 1) #14
  unreachable

933:                                              ; preds = %908
  %934 = add nsw i32 %851, 4
  store i32 %934, ptr @test_count, align 4, !tbaa !5
  %935 = load i32, ptr %507, align 8, !tbaa !64
  %.not163 = icmp eq i32 %935, 0
  br i1 %.not163, label %936, label %980

936:                                              ; preds = %933
  %937 = load i32, ptr %287, align 4, !tbaa !5
  %938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %939 = call i32 @s2n_print_stacktrace(ptr noundef %938) #11
  %940 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %941 = trunc nuw i8 %940 to i1
  br i1 %941, label %942, label %946

942:                                              ; preds = %936
  %943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %944 = call i32 @fileno(ptr noundef %943) #11
  %945 = call i32 @isatty(i32 noundef %944) #11
  %.not164 = icmp eq i32 %945, 0
  br i1 %.not164, label %946, label %947

946:                                              ; preds = %942, %936
  br label %947

947:                                              ; preds = %942, %946
  %.str.59.sink499 = phi ptr [ @.str.59, %946 ], [ @.str.56, %942 ]
  store i32 %937, ptr %287, align 4, !tbaa !5
  %948 = load ptr, ptr @stderr, align 8, !tbaa !9
  %949 = load i32, ptr @test_count, align 4, !tbaa !5
  %950 = load i32, ptr %233, align 4, !tbaa !5
  %951 = call ptr @s2n_strerror(i32 noundef %950, ptr noundef nonnull @.str.58) #11
  %952 = load i32, ptr %233, align 4, !tbaa !5
  %953 = call ptr @s2n_strerror_debug(i32 noundef %952, ptr noundef nonnull @.str.58) #11
  %954 = load i32, ptr %287, align 4, !tbaa !5
  %955 = call ptr @strerror(i32 noundef %954) #11
  %956 = load i32, ptr %287, align 4, !tbaa !5
  %957 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %948, ptr noundef nonnull %.str.59.sink499, i32 noundef %949, ptr noundef nonnull @.str.83, ptr noundef nonnull @.str.55, i32 noundef 256, ptr noundef %951, ptr noundef %953, ptr noundef %955, i32 noundef %956) #13
  call void @exit(i32 noundef 1) #14
  unreachable

958:                                              ; preds = %617, %617, %617, %617, %617, %617
  %959 = load i32, ptr %287, align 4, !tbaa !5
  %960 = load ptr, ptr @stderr, align 8, !tbaa !9
  %961 = call i32 @s2n_print_stacktrace(ptr noundef %960) #11
  %962 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %963 = trunc nuw i8 %962 to i1
  br i1 %963, label %964, label %968

964:                                              ; preds = %958
  %965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %966 = call i32 @fileno(ptr noundef %965) #11
  %967 = call i32 @isatty(i32 noundef %966) #11
  %.not158 = icmp eq i32 %967, 0
  br i1 %.not158, label %968, label %969

968:                                              ; preds = %964, %958
  br label %969

969:                                              ; preds = %964, %968
  %.str.59.sink508 = phi ptr [ @.str.59, %968 ], [ @.str.56, %964 ]
  store i32 %959, ptr %287, align 4, !tbaa !5
  %970 = load ptr, ptr @stderr, align 8, !tbaa !9
  %971 = load i32, ptr @test_count, align 4, !tbaa !5
  %972 = load i32, ptr %233, align 4, !tbaa !5
  %973 = call ptr @s2n_strerror(i32 noundef %972, ptr noundef nonnull @.str.58) #11
  %974 = load i32, ptr %233, align 4, !tbaa !5
  %975 = call ptr @s2n_strerror_debug(i32 noundef %974, ptr noundef nonnull @.str.58) #11
  %976 = load i32, ptr %287, align 4, !tbaa !5
  %977 = call ptr @strerror(i32 noundef %976) #11
  %978 = load i32, ptr %287, align 4, !tbaa !5
  %979 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %970, ptr noundef nonnull %.str.59.sink508, i32 noundef %971, ptr noundef nonnull @.str.84, ptr noundef nonnull @.str.55, i32 noundef 271, ptr noundef %973, ptr noundef %975, ptr noundef %977, i32 noundef %978) #13
  call void @exit(i32 noundef 1) #14
  unreachable

980:                                              ; preds = %._crit_edge217, %620, %651, %713, %769, %825, %933
  %981 = phi ptr [ %.pre219, %._crit_edge217 ], [ %623, %620 ], [ %654, %651 ], [ %685, %713 ], [ %741, %769 ], [ %797, %825 ], [ %853, %933 ]
  %982 = phi i32 [ %.pre218, %._crit_edge217 ], [ %622, %620 ], [ %653, %651 ], [ %714, %713 ], [ %770, %769 ], [ %826, %825 ], [ %934, %933 ]
  %983 = add nsw i32 %982, 1
  store i32 %983, ptr @test_count, align 4, !tbaa !5
  %984 = call i32 @s2n_tls13_secrets_update(ptr noundef %981)
  %985 = call zeroext i1 @s2n_result_is_ok(i32 %984)
  br i1 %985, label %1008, label %986

986:                                              ; preds = %980
  %987 = load i32, ptr %287, align 4, !tbaa !5
  %988 = load ptr, ptr @stderr, align 8, !tbaa !9
  %989 = call i32 @s2n_print_stacktrace(ptr noundef %988) #11
  %990 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %991 = trunc nuw i8 %990 to i1
  br i1 %991, label %992, label %996

992:                                              ; preds = %986
  %993 = load ptr, ptr @stderr, align 8, !tbaa !9
  %994 = call i32 @fileno(ptr noundef %993) #11
  %995 = call i32 @isatty(i32 noundef %994) #11
  %.not176 = icmp eq i32 %995, 0
  br i1 %.not176, label %996, label %997

996:                                              ; preds = %992, %986
  br label %997

997:                                              ; preds = %992, %996
  %.str.59.sink517 = phi ptr [ @.str.59, %996 ], [ @.str.56, %992 ]
  store i32 %987, ptr %287, align 4, !tbaa !5
  %998 = load ptr, ptr @stderr, align 8, !tbaa !9
  %999 = load i32, ptr @test_count, align 4, !tbaa !5
  %1000 = load i32, ptr %233, align 4, !tbaa !5
  %1001 = call ptr @s2n_strerror(i32 noundef %1000, ptr noundef nonnull @.str.58) #11
  %1002 = load i32, ptr %233, align 4, !tbaa !5
  %1003 = call ptr @s2n_strerror_debug(i32 noundef %1002, ptr noundef nonnull @.str.58) #11
  %1004 = load i32, ptr %287, align 4, !tbaa !5
  %1005 = call ptr @strerror(i32 noundef %1004) #11
  %1006 = load i32, ptr %287, align 4, !tbaa !5
  %1007 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %998, ptr noundef nonnull %.str.59.sink517, i32 noundef %999, ptr noundef nonnull @.str.85, ptr noundef nonnull @.str.55, i32 noundef 275, ptr noundef %1001, ptr noundef %1003, ptr noundef %1005, i32 noundef %1006) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1008:                                             ; preds = %980
  %1009 = load i32, ptr @test_count, align 4, !tbaa !5
  %1010 = add nsw i32 %1009, 1
  store i32 %1010, ptr @test_count, align 4, !tbaa !5
  %1011 = load ptr, ptr %9, align 8, !tbaa !9
  %1012 = call i32 @s2n_tls13_key_schedule_update(ptr noundef %1011) #11
  %1013 = call zeroext i1 @s2n_result_is_ok(i32 %1012)
  br i1 %1013, label %1036, label %1014

1014:                                             ; preds = %1008
  %1015 = load i32, ptr %287, align 4, !tbaa !5
  %1016 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1017 = call i32 @s2n_print_stacktrace(ptr noundef %1016) #11
  %1018 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1019 = trunc nuw i8 %1018 to i1
  br i1 %1019, label %1020, label %1024

1020:                                             ; preds = %1014
  %1021 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1022 = call i32 @fileno(ptr noundef %1021) #11
  %1023 = call i32 @isatty(i32 noundef %1022) #11
  %.not177 = icmp eq i32 %1023, 0
  br i1 %.not177, label %1024, label %1025

1024:                                             ; preds = %1020, %1014
  br label %1025

1025:                                             ; preds = %1020, %1024
  %.str.59.sink526 = phi ptr [ @.str.59, %1024 ], [ @.str.56, %1020 ]
  store i32 %1015, ptr %287, align 4, !tbaa !5
  %1026 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1027 = load i32, ptr @test_count, align 4, !tbaa !5
  %1028 = load i32, ptr %233, align 4, !tbaa !5
  %1029 = call ptr @s2n_strerror(i32 noundef %1028, ptr noundef nonnull @.str.58) #11
  %1030 = load i32, ptr %233, align 4, !tbaa !5
  %1031 = call ptr @s2n_strerror_debug(i32 noundef %1030, ptr noundef nonnull @.str.58) #11
  %1032 = load i32, ptr %287, align 4, !tbaa !5
  %1033 = call ptr @strerror(i32 noundef %1032) #11
  %1034 = load i32, ptr %287, align 4, !tbaa !5
  %1035 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1026, ptr noundef nonnull %.str.59.sink526, i32 noundef %1027, ptr noundef nonnull @.str.86, ptr noundef nonnull @.str.55, i32 noundef 276, ptr noundef %1029, ptr noundef %1031, ptr noundef %1033, i32 noundef %1034) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1036:                                             ; preds = %1008
  %1037 = load ptr, ptr %9, align 8, !tbaa !9
  %1038 = getelementptr inbounds i8, ptr %1037, i64 2176
  %1039 = load i32, ptr %1038, align 8, !tbaa !65
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr %1038, align 8, !tbaa !65
  %1041 = call i32 @s2n_conn_get_current_message_type(ptr noundef %1037) #11
  %.not155 = icmp eq i32 %1041, 20
  br i1 %.not155, label %._crit_edge, label %.lr.ph, !llvm.loop !66

._crit_edge:                                      ; preds = %1036, %.preheader
  %1042 = load i32, ptr @test_count, align 4, !tbaa !5
  %1043 = add nsw i32 %1042, 1
  store i32 %1043, ptr @test_count, align 4, !tbaa !5
  %1044 = load ptr, ptr %9, align 8, !tbaa !9
  %1045 = call i32 @s2n_connection_verify_secrets(ptr noundef %1044, ptr noundef nonnull %10, i1 noundef zeroext %553)
  %1046 = call zeroext i1 @s2n_result_is_ok(i32 %1045)
  br i1 %1046, label %1069, label %1047

1047:                                             ; preds = %._crit_edge
  %1048 = load i32, ptr %287, align 4, !tbaa !5
  %1049 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1050 = call i32 @s2n_print_stacktrace(ptr noundef %1049) #11
  %1051 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1052 = trunc nuw i8 %1051 to i1
  br i1 %1052, label %1053, label %1057

1053:                                             ; preds = %1047
  %1054 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1055 = call i32 @fileno(ptr noundef %1054) #11
  %1056 = call i32 @isatty(i32 noundef %1055) #11
  %.not156 = icmp eq i32 %1056, 0
  br i1 %.not156, label %1057, label %1058

1057:                                             ; preds = %1053, %1047
  br label %1058

1058:                                             ; preds = %1053, %1057
  %.str.59.sink535 = phi ptr [ @.str.59, %1057 ], [ @.str.56, %1053 ]
  store i32 %1048, ptr %287, align 4, !tbaa !5
  %1059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1060 = load i32, ptr @test_count, align 4, !tbaa !5
  %1061 = load i32, ptr %233, align 4, !tbaa !5
  %1062 = call ptr @s2n_strerror(i32 noundef %1061, ptr noundef nonnull @.str.58) #11
  %1063 = load i32, ptr %233, align 4, !tbaa !5
  %1064 = call ptr @s2n_strerror_debug(i32 noundef %1063, ptr noundef nonnull @.str.58) #11
  %1065 = load i32, ptr %287, align 4, !tbaa !5
  %1066 = call ptr @strerror(i32 noundef %1065) #11
  %1067 = load i32, ptr %287, align 4, !tbaa !5
  %1068 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1059, ptr noundef nonnull %.str.59.sink535, i32 noundef %1060, ptr noundef nonnull @.str.87, ptr noundef nonnull @.str.55, i32 noundef 280, ptr noundef %1062, ptr noundef %1064, ptr noundef %1066, i32 noundef %1067) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1069:                                             ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 432, ptr nonnull %10) #11
  %1070 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  %1071 = add nuw i64 %.0137206, 1
  %exitcond216.not = icmp eq i64 %1071, %.4.us.us.1.1
  br i1 %exitcond216.not, label %1072, label %511, !llvm.loop !67

1072:                                             ; preds = %1069
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) @derive_methods, ptr noundef nonnull align 16 dereferenceable(64) %7, i64 64, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) @extract_methods, ptr noundef nonnull align 16 dereferenceable(32) %8, i64 32, i1 false)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7)
  %1073 = call i32 @s2n_cleanup() #11
  %1074 = icmp eq i32 %1073, -1
  br i1 %1074, label %1075, label %1097

1075:                                             ; preds = %1072
  %1076 = load i32, ptr %287, align 4, !tbaa !5
  %1077 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1078 = call i32 @s2n_print_stacktrace(ptr noundef %1077) #11
  %1079 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1080 = trunc nuw i8 %1079 to i1
  br i1 %1080, label %1081, label %1085

1081:                                             ; preds = %1075
  %1082 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1083 = call i32 @fileno(ptr noundef %1082) #11
  %1084 = call i32 @isatty(i32 noundef %1083) #11
  %.not153 = icmp eq i32 %1084, 0
  br i1 %.not153, label %1085, label %1086

1085:                                             ; preds = %1081, %1075
  br label %1086

1086:                                             ; preds = %1081, %1085
  %.str.59.sink544 = phi ptr [ @.str.59, %1085 ], [ @.str.56, %1081 ]
  store i32 %1076, ptr %287, align 4, !tbaa !5
  %1087 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1088 = load i32, ptr @test_count, align 4, !tbaa !5
  %1089 = load i32, ptr %233, align 4, !tbaa !5
  %1090 = call ptr @s2n_strerror(i32 noundef %1089, ptr noundef nonnull @.str.58) #11
  %1091 = load i32, ptr %233, align 4, !tbaa !5
  %1092 = call ptr @s2n_strerror_debug(i32 noundef %1091, ptr noundef nonnull @.str.58) #11
  %1093 = load i32, ptr %287, align 4, !tbaa !5
  %1094 = call ptr @strerror(i32 noundef %1093) #11
  %1095 = load i32, ptr %287, align 4, !tbaa !5
  %1096 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1087, ptr noundef nonnull %.str.59.sink544, i32 noundef %1088, ptr noundef nonnull @.str.90, ptr noundef nonnull @.str.55, i32 noundef 289, ptr noundef %1090, ptr noundef %1092, ptr noundef %1094, i32 noundef %1095) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1097:                                             ; preds = %1072
  %1098 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #11
  %1099 = icmp eq i32 %1098, -1
  br i1 %1099, label %1100, label %1122

1100:                                             ; preds = %1097
  %1101 = load i32, ptr %287, align 4, !tbaa !5
  %1102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1103 = call i32 @s2n_print_stacktrace(ptr noundef %1102) #11
  %1104 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1105 = trunc nuw i8 %1104 to i1
  br i1 %1105, label %1106, label %1110

1106:                                             ; preds = %1100
  %1107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1108 = call i32 @fileno(ptr noundef %1107) #11
  %1109 = call i32 @isatty(i32 noundef %1108) #11
  %.not152 = icmp eq i32 %1109, 0
  br i1 %.not152, label %1110, label %1111

1110:                                             ; preds = %1106, %1100
  br label %1111

1111:                                             ; preds = %1106, %1110
  %.str.59.sink553 = phi ptr [ @.str.59, %1110 ], [ @.str.56, %1106 ]
  store i32 %1101, ptr %287, align 4, !tbaa !5
  %1112 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1113 = load i32, ptr @test_count, align 4, !tbaa !5
  %1114 = load i32, ptr %233, align 4, !tbaa !5
  %1115 = call ptr @s2n_strerror(i32 noundef %1114, ptr noundef nonnull @.str.58) #11
  %1116 = load i32, ptr %233, align 4, !tbaa !5
  %1117 = call ptr @s2n_strerror_debug(i32 noundef %1116, ptr noundef nonnull @.str.58) #11
  %1118 = load i32, ptr %287, align 4, !tbaa !5
  %1119 = call ptr @strerror(i32 noundef %1118) #11
  %1120 = load i32, ptr %287, align 4, !tbaa !5
  %1121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1112, ptr noundef nonnull %.str.59.sink553, i32 noundef %1113, ptr noundef nonnull @.str.91, ptr noundef nonnull @.str.55, i32 noundef 289, ptr noundef %1115, ptr noundef %1117, ptr noundef %1119, i32 noundef %1120) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1122:                                             ; preds = %1097
  %1123 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1124 = trunc nuw i8 %1123 to i1
  br i1 %1124, label %1125, label %1136

1125:                                             ; preds = %1122
  %1126 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1127 = call i32 @fileno(ptr noundef %1126) #11
  %1128 = call i32 @isatty(i32 noundef %1127) #11
  %.not149 = icmp eq i32 %1128, 0
  br i1 %.not149, label %1136, label %1129

1129:                                             ; preds = %1125
  %1130 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not151 = icmp eq i32 %1130, 0
  %1131 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not151, label %1134, label %1132

1132:                                             ; preds = %1129
  %1133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1131, ptr noundef nonnull @.str.92, i32 noundef %1130) #11
  br label %1143

1134:                                             ; preds = %1129
  %1135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1131, ptr noundef nonnull @.str.93) #11
  br label %1143

1136:                                             ; preds = %1125, %1122
  %1137 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not150 = icmp eq i32 %1137, 0
  %1138 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not150, label %1141, label %1139

1139:                                             ; preds = %1136
  %1140 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1138, ptr noundef nonnull @.str.94, i32 noundef %1137) #11
  br label %1143

1141:                                             ; preds = %1136
  %1142 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1138, ptr noundef nonnull @.str.95) #11
  br label %1143

1143:                                             ; preds = %1139, %1141, %1132, %1134
  call void @llvm.lifetime.end.p0(i64 4184, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 48000, ptr nonnull %3) #11
  ret i32 0
}

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #5

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #5

declare i32 @s2n_init() local_unnamed_addr #5

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

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

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

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

declare i32 @s2n_tls13_key_schedule_update(ptr noundef) local_unnamed_addr #5

declare void @s2n_debug_info_reset() local_unnamed_addr #5

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

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_mock_extract_method(ptr noundef) #4

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #5

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #5

declare i32 @s2n_conn_choose_state_machine(ptr noundef, i8 noundef zeroext) local_unnamed_addr #5

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

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

declare i32 @s2n_tls13_key_schedule_reset(ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_connection_verify_secrets(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #4

declare i32 @s2n_cleanup() local_unnamed_addr #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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, !17, i64 0}
!16 = !{!"s2n_cipher_preferences", !17, i64 0, !10, i64 8, !12, i64 16}
!17 = !{!"short", !7, i64 0}
!18 = !{!19, !6, i64 2172}
!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, !34, i64 1776, !34, i64 1816, !34, i64 1856, !34, i64 1896, !6, i64 1936, !21, i64 1944, !7, i64 1952, !34, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !35, i64 2004, !35, i64 2008, !36, i64 2016, !17, i64 2208, !6, i64 2212, !17, i64 2216, !21, i64 2224, !7, i64 2232, !21, i64 2240, !21, i64 2248, !21, i64 2256, !35, i64 2264, !35, 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, !38, i64 2896, !40, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !28, i64 3784, !6, i64 3808, !42, i64 3816, !7, i64 3848, !34, i64 3992, !28, i64 4032, !28, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !17, i64 4084, !17, i64 4086, !6, i64 4088, !6, i64 4092, !28, i64 4096, !6, i64 4120, !43, i64 4128, !35, 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, !17, i64 40, !17, i64 42, !10, i64 48, !6, i64 56}
!33 = !{!"s2n_array", !28, i64 0, !6, i64 24, !6, i64 28}
!34 = !{!"s2n_stuffer", !28, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!35 = !{!"", !6, i64 0}
!36 = !{!"s2n_handshake", !34, 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, !37, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!37 = !{!"s2n_offered_early_data", !10, i64 0}
!38 = !{!"s2n_client_hello", !28, i64 0, !39, 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}
!39 = !{!"", !7, i64 0, !28, i64 672, !17, i64 696}
!40 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !17, i64 18, !10, i64 24, !6, i64 32, !10, i64 40, !41, i64 48, !12, i64 52}
!41 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!42 = !{!"s2n_ticket_fields", !28, i64 0, !6, i64 24}
!43 = !{!"s2n_post_handshake", !34, i64 0, !7, i64 40}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = distinct !{!46, !45}
!47 = !{!19, !7, i64 218}
!48 = !{!19, !7, i64 220}
!49 = !{!50, !6, i64 0}
!50 = !{!"s2n_tls13_key_schedule_test_case", !6, i64 0, !6, i64 4, !10, i64 8, !12, i64 16}
!51 = !{!50, !6, i64 4}
!52 = !{!50, !10, i64 8}
!53 = !{!19, !10, i64 232}
!54 = !{!55, !10, i64 0}
!55 = !{!"s2n_crypto_parameters", !10, i64 0, !56, i64 8, !56, i64 16, !57, i64 24, !57, i64 456, !7, i64 888, !7, i64 904, !7, i64 920, !7, i64 928}
!56 = !{!"s2n_session_key", !10, i64 0}
!57 = !{!"s2n_hmac_state", !6, i64 0, !17, i64 4, !6, i64 8, !17, i64 12, !7, i64 14, !58, i64 16, !58, i64 72, !58, i64 128, !58, i64 184, !7, i64 240, !7, i64 368}
!58 = !{!"s2n_hash_state", !10, i64 0, !6, i64 8, !7, i64 12, !21, i64 16, !7, i64 24}
!59 = !{!50, !12, i64 16}
!60 = !{!19, !6, i64 4088}
!61 = !{!19, !10, i64 632}
!62 = !{!19, !10, i64 224}
!63 = !{!19, !10, i64 640}
!64 = !{!28, !6, i64 8}
!65 = !{!19, !6, i64 2176}
!66 = distinct !{!66, !45}
!67 = distinct !{!67, !45}


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