; LLVM IR from aws/s2n-tls :: tests/unit (s2n_client_hello_get_supported_groups_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_extension_type = type { i16, i8, i16, ptr, ptr, ptr, 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_blob = type { ptr, i32, i32, i8 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_result = type { i32 }
%struct.s2n_client_hello_context = type { ptr, i32 }
%struct.s2n_test_io_pair = type { i32, i32 }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon, i32 }
%union.anon = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_sig_scheme_list = type { [128 x i16], i8 }
%struct.s2n_psk_parameters = type { i32, %struct.s2n_array, i16, i16, ptr, i32 }
%struct.s2n_array = type { %struct.s2n_blob, i32, i32 }
%struct.s2n_handshake = type { %struct.s2n_stuffer, ptr, [8 x i8], [48 x i8], [48 x i8], i8, i32, i32, i32, i32, %struct.s2n_offered_early_data, i8, i32 }
%struct.s2n_offered_early_data = type { ptr }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }

@s2n_use_color_in_output = external dso_local global i8, align 1
@test_count = external dso_local global i32, align 4
@stderr = external global ptr, align 8
@.str = external hidden unnamed_addr constant [101 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [47 x i8], align 1
@stdout = external global ptr, align 8
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [200 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [171 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [141 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [182 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [45 x i8], align 1
@__const.main.policies = external hidden unnamed_addr constant [7 x ptr], align 16
@.str.64 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [124 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [177 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [106 x i8], align 1
@s2n_client_supported_groups_extension = external constant %struct.s2n_extension_type, align 8
@.str.82 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #3

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

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

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

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

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

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

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

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

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

declare ptr @s2n_connection_get_client_hello(ptr noundef) #3

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

declare i32 @s2n_client_hello_get_supported_groups(ptr noundef, ptr noundef, i16 noundef zeroext, ptr noundef) #3

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

declare i32 @s2n_stuffer_read_uint16(ptr noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i8, align 1
  %12 = alloca i32, align 4
  %13 = alloca %struct.s2n_client_hello, align 8
  %14 = alloca [16 x i16], align 16
  %15 = alloca i16, align 2
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %struct.s2n_client_hello, align 8
  %30 = alloca [34 x i8], align 16
  %31 = alloca %struct.s2n_blob, align 8
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca %struct.s2n_stuffer, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca [16 x i16], align 16
  %38 = alloca i16, align 2
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %struct.s2n_client_hello, align 8
  %48 = alloca [16 x i16], align 16
  %49 = alloca i16, align 2
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca i32, align 4
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca i32, align 4
  %68 = alloca i8, align 1
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca [16 x i16], align 16
  %72 = alloca i16, align 2
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca %struct.s2n_result, align 4
  %81 = alloca %struct.s2n_result, align 4
  %82 = alloca %struct.s2n_result, align 4
  %83 = alloca %struct.s2n_client_hello, align 8
  %84 = alloca ptr, align 8
  %85 = alloca [34 x i8], align 16
  %86 = alloca %struct.s2n_blob, align 8
  %87 = alloca i32, align 4
  %88 = alloca %struct.s2n_stuffer, align 8
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca [16 x i16], align 16
  %92 = alloca i16, align 2
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca [34 x i8], align 16
  %96 = alloca %struct.s2n_blob, align 8
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca %struct.s2n_stuffer, align 8
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca [16 x i16], align 16
  %103 = alloca i16, align 2
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca i32, align 4
  %109 = alloca [34 x i8], align 16
  %110 = alloca %struct.s2n_blob, align 8
  %111 = alloca i32, align 4
  %112 = alloca %struct.s2n_stuffer, align 8
  %113 = alloca i32, align 4
  %114 = alloca i16, align 2
  %115 = alloca i32, align 4
  %116 = alloca [16 x i16], align 16
  %117 = alloca i16, align 2
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca %struct.s2n_client_hello, align 8
  %124 = alloca ptr, align 8
  %125 = alloca i16, align 2
  %126 = alloca i32, align 4
  %127 = alloca i16, align 2
  %128 = alloca [32 x i8], align 16
  %129 = alloca %struct.s2n_blob, align 8
  %130 = alloca i32, align 4
  %131 = alloca %struct.s2n_result, align 4
  %132 = alloca i32, align 4
  %133 = alloca [34 x i8], align 16
  %134 = alloca %struct.s2n_blob, align 8
  %135 = alloca i32, align 4
  %136 = alloca %struct.s2n_stuffer, align 8
  %137 = alloca i32, align 4
  %138 = alloca i32, align 4
  %139 = alloca i32, align 4
  %140 = alloca [16 x i16], align 16
  %141 = alloca i16, align 2
  %142 = alloca i32, align 4
  %143 = alloca i32, align 4
  %144 = alloca %struct.s2n_stuffer, align 8
  %145 = alloca i32, align 4
  %146 = alloca i64, align 8
  %147 = alloca i16, align 2
  %148 = alloca i32, align 4
  %149 = alloca i16, align 2
  %150 = alloca i32, align 4
  %151 = alloca [7 x ptr], align 16
  %152 = alloca i32, align 4
  %153 = alloca ptr, align 8
  %154 = alloca ptr, align 8
  %155 = alloca i32, align 4
  %156 = alloca i32, align 4
  %157 = alloca i32, align 4
  %158 = alloca ptr, align 8
  %159 = alloca i32, align 4
  %160 = alloca i32, align 4
  %161 = alloca i32, align 4
  %162 = alloca i32, align 4
  %163 = alloca %struct.s2n_client_hello_context, align 8
  %164 = alloca i32, align 4
  %165 = alloca ptr, align 8
  %166 = alloca i32, align 4
  %167 = alloca i32, align 4
  %168 = alloca ptr, align 8
  %169 = alloca i32, align 4
  %170 = alloca i32, align 4
  %171 = alloca %struct.s2n_test_io_pair, align 4
  %172 = alloca i32, align 4
  %173 = alloca i32, align 4
  %174 = alloca i32, align 4
  %175 = alloca i32, align 4
  %176 = alloca %struct.s2n_result, align 4
  %177 = alloca i32, align 4
  %178 = alloca [34 x i8], align 16
  %179 = alloca %struct.s2n_blob, align 8
  %180 = alloca i32, align 4
  %181 = alloca %struct.s2n_stuffer, align 8
  %182 = alloca i32, align 4
  %183 = alloca i32, align 4
  %184 = alloca i32, align 4
  %185 = alloca i32, align 4
  %186 = alloca %struct.s2n_result, align 4
  %187 = alloca %struct.s2n_result, align 4
  %188 = alloca %struct.s2n_result, align 4
  %189 = alloca %struct.s2n_result, align 4
  %190 = alloca i32, align 4
  %191 = alloca i32, align 4
  %192 = alloca %struct.s2n_result, 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 %193

193:                                              ; preds = %2
  br label %194

194:                                              ; preds = %193
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %195 = load ptr, ptr @stdout, align 8, !tbaa !9
  %196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %195, ptr noundef @.str.12, ptr noundef @.str.2) #10
  %197 = load ptr, ptr @stdout, align 8, !tbaa !9
  %198 = call i32 @fflush(ptr noundef %197)
  br label %199

199:                                              ; preds = %194
  %200 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %201 = icmp eq i32 %200, -1
  br i1 %201, label %202, label %253

202:                                              ; preds = %199
  br label %203

203:                                              ; preds = %202
  br label %204

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

211:                                              ; preds = %204
  %212 = load ptr, ptr @stderr, align 8, !tbaa !9
  %213 = call i32 @fileno(ptr noundef %212) #10
  %214 = call i32 @isatty(i32 noundef %213) #10
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %233

216:                                              ; preds = %211
  %217 = load i32, ptr %6, align 4, !tbaa !5
  %218 = call ptr @__errno_location() #11
  store i32 %217, ptr %218, 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 @.str.3)
  %224 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %225 = load i32, ptr %224, align 4, !tbaa !5
  %226 = call ptr @s2n_strerror_debug(i32 noundef %225, ptr noundef @.str.3)
  %227 = call ptr @__errno_location() #11
  %228 = load i32, ptr %227, align 4, !tbaa !5
  %229 = call ptr @strerror(i32 noundef %228) #10
  %230 = call ptr @__errno_location() #11
  %231 = load i32, ptr %230, align 4, !tbaa !5
  %232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %219, ptr noundef @.str, i32 noundef %220, ptr noundef @.str.13, ptr noundef @.str.2, i32 noundef 75, ptr noundef %223, ptr noundef %226, ptr noundef %229, i32 noundef %231) #10
  br label %250

233:                                              ; preds = %211, %204
  %234 = load i32, ptr %6, align 4, !tbaa !5
  %235 = call ptr @__errno_location() #11
  store i32 %234, ptr %235, align 4, !tbaa !5
  %236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %237 = load i32, ptr @test_count, align 4, !tbaa !5
  %238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = call ptr @s2n_strerror(i32 noundef %239, ptr noundef @.str.3)
  %241 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %242 = load i32, ptr %241, align 4, !tbaa !5
  %243 = call ptr @s2n_strerror_debug(i32 noundef %242, ptr noundef @.str.3)
  %244 = call ptr @__errno_location() #11
  %245 = load i32, ptr %244, align 4, !tbaa !5
  %246 = call ptr @strerror(i32 noundef %245) #10
  %247 = call ptr @__errno_location() #11
  %248 = load i32, ptr %247, align 4, !tbaa !5
  %249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %236, ptr noundef @.str.4, i32 noundef %237, ptr noundef @.str.13, ptr noundef @.str.2, i32 noundef 75, ptr noundef %240, ptr noundef %243, ptr noundef %246, i32 noundef %248) #10
  br label %250

250:                                              ; preds = %233, %216
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %251

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

252:                                              ; No predecessors!
  br label %253

253:                                              ; preds = %252, %199
  br label %254

254:                                              ; preds = %253
  br label %255

255:                                              ; preds = %254
  %256 = load i32, ptr @test_count, align 4, !tbaa !5
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr @test_count, align 4, !tbaa !5
  %258 = call i32 @s2n_enable_atexit()
  %259 = icmp eq i32 %258, -1
  br i1 %259, label %260, label %311

260:                                              ; preds = %255
  br label %261

261:                                              ; preds = %260
  br label %262

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

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

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

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

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

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

310:                                              ; No predecessors!
  br label %311

311:                                              ; preds = %310, %255
  br label %312

312:                                              ; preds = %311
  br label %313

313:                                              ; preds = %312
  br label %314

314:                                              ; preds = %313
  %315 = call i32 @s2n_init()
  %316 = icmp eq i32 %315, -1
  br i1 %316, label %317, label %368

317:                                              ; preds = %314
  br label %318

318:                                              ; preds = %317
  br label %319

319:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  %320 = call ptr @__errno_location() #11
  %321 = load i32, ptr %320, align 4, !tbaa !5
  store i32 %321, ptr %8, align 4, !tbaa !5
  %322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %323 = call i32 @s2n_print_stacktrace(ptr noundef %322)
  %324 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %325 = trunc i8 %324 to i1
  br i1 %325, label %326, label %348

326:                                              ; preds = %319
  %327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %328 = call i32 @fileno(ptr noundef %327) #10
  %329 = call i32 @isatty(i32 noundef %328) #10
  %330 = icmp ne i32 %329, 0
  br i1 %330, label %331, label %348

331:                                              ; preds = %326
  %332 = load i32, ptr %8, align 4, !tbaa !5
  %333 = call ptr @__errno_location() #11
  store i32 %332, ptr %333, align 4, !tbaa !5
  %334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %335 = load i32, ptr @test_count, align 4, !tbaa !5
  %336 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %337 = load i32, ptr %336, align 4, !tbaa !5
  %338 = call ptr @s2n_strerror(i32 noundef %337, ptr noundef @.str.3)
  %339 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %340 = load i32, ptr %339, align 4, !tbaa !5
  %341 = call ptr @s2n_strerror_debug(i32 noundef %340, ptr noundef @.str.3)
  %342 = call ptr @__errno_location() #11
  %343 = load i32, ptr %342, align 4, !tbaa !5
  %344 = call ptr @strerror(i32 noundef %343) #10
  %345 = call ptr @__errno_location() #11
  %346 = load i32, ptr %345, align 4, !tbaa !5
  %347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %334, ptr noundef @.str, i32 noundef %335, ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 75, ptr noundef %338, ptr noundef %341, ptr noundef %344, i32 noundef %346) #10
  br label %365

348:                                              ; preds = %326, %319
  %349 = load i32, ptr %8, align 4, !tbaa !5
  %350 = call ptr @__errno_location() #11
  store i32 %349, ptr %350, align 4, !tbaa !5
  %351 = load ptr, ptr @stderr, align 8, !tbaa !9
  %352 = load i32, ptr @test_count, align 4, !tbaa !5
  %353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %354 = load i32, ptr %353, align 4, !tbaa !5
  %355 = call ptr @s2n_strerror(i32 noundef %354, ptr noundef @.str.3)
  %356 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %357 = load i32, ptr %356, align 4, !tbaa !5
  %358 = call ptr @s2n_strerror_debug(i32 noundef %357, ptr noundef @.str.3)
  %359 = call ptr @__errno_location() #11
  %360 = load i32, ptr %359, align 4, !tbaa !5
  %361 = call ptr @strerror(i32 noundef %360) #10
  %362 = call ptr @__errno_location() #11
  %363 = load i32, ptr %362, align 4, !tbaa !5
  %364 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %351, ptr noundef @.str.4, i32 noundef %352, ptr noundef @.str.15, ptr noundef @.str.2, i32 noundef 75, ptr noundef %355, ptr noundef %358, ptr noundef %361, i32 noundef %363) #10
  br label %365

365:                                              ; preds = %348, %331
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %366

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

367:                                              ; No predecessors!
  br label %368

368:                                              ; preds = %367, %314
  br label %369

369:                                              ; preds = %368
  br label %370

370:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  store ptr null, ptr %9, align 8, !tbaa !9
  br label %371

371:                                              ; preds = %370
  %372 = load i32, ptr @test_count, align 4, !tbaa !5
  %373 = add nsw i32 %372, 1
  store i32 %373, ptr @test_count, align 4, !tbaa !5
  %374 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %9, ptr noundef @.str.16, ptr noundef @.str.17)
  %375 = icmp eq i32 %374, -1
  br i1 %375, label %376, label %429

376:                                              ; preds = %371
  br label %377

377:                                              ; preds = %376
  br label %378

378:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #10
  %379 = call ptr @__errno_location() #11
  %380 = load i32, ptr %379, align 4, !tbaa !5
  store i32 %380, ptr %10, align 4, !tbaa !5
  %381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %382 = call i32 @s2n_print_stacktrace(ptr noundef %381)
  %383 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %384 = trunc i8 %383 to i1
  br i1 %384, label %385, label %407

385:                                              ; preds = %378
  %386 = load ptr, ptr @stderr, align 8, !tbaa !9
  %387 = call i32 @fileno(ptr noundef %386) #10
  %388 = call i32 @isatty(i32 noundef %387) #10
  %389 = icmp ne i32 %388, 0
  br i1 %389, label %390, label %407

390:                                              ; preds = %385
  %391 = load i32, ptr %10, align 4, !tbaa !5
  %392 = call ptr @__errno_location() #11
  store i32 %391, ptr %392, align 4, !tbaa !5
  %393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %394 = load i32, ptr @test_count, align 4, !tbaa !5
  %395 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %396 = load i32, ptr %395, align 4, !tbaa !5
  %397 = call ptr @s2n_strerror(i32 noundef %396, ptr noundef @.str.3)
  %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_debug(i32 noundef %399, ptr noundef @.str.3)
  %401 = call ptr @__errno_location() #11
  %402 = load i32, ptr %401, align 4, !tbaa !5
  %403 = call ptr @strerror(i32 noundef %402) #10
  %404 = call ptr @__errno_location() #11
  %405 = load i32, ptr %404, align 4, !tbaa !5
  %406 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %393, ptr noundef @.str, i32 noundef %394, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 79, ptr noundef %397, ptr noundef %400, ptr noundef %403, i32 noundef %405) #10
  br label %424

407:                                              ; preds = %385, %378
  %408 = load i32, ptr %10, align 4, !tbaa !5
  %409 = call ptr @__errno_location() #11
  store i32 %408, ptr %409, align 4, !tbaa !5
  %410 = load ptr, ptr @stderr, align 8, !tbaa !9
  %411 = load i32, ptr @test_count, align 4, !tbaa !5
  %412 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %413 = load i32, ptr %412, align 4, !tbaa !5
  %414 = call ptr @s2n_strerror(i32 noundef %413, ptr noundef @.str.3)
  %415 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %416 = load i32, ptr %415, align 4, !tbaa !5
  %417 = call ptr @s2n_strerror_debug(i32 noundef %416, ptr noundef @.str.3)
  %418 = call ptr @__errno_location() #11
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = call ptr @strerror(i32 noundef %419) #10
  %421 = call ptr @__errno_location() #11
  %422 = load i32, ptr %421, align 4, !tbaa !5
  %423 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %410, ptr noundef @.str.4, i32 noundef %411, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 79, ptr noundef %414, ptr noundef %417, ptr noundef %420, i32 noundef %422) #10
  br label %424

424:                                              ; preds = %407, %390
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  br label %425

425:                                              ; preds = %424
  br label %426

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

427:                                              ; No predecessors!
  br label %428

428:                                              ; preds = %427
  br label %429

429:                                              ; preds = %428, %371
  br label %430

430:                                              ; preds = %429
  br label %431

431:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #10
  store i8 0, ptr %11, align 1, !tbaa !15
  br label %432

432:                                              ; preds = %431
  %433 = load i32, ptr @test_count, align 4, !tbaa !5
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr @test_count, align 4, !tbaa !5
  %435 = call i32 @s2n_extension_supported_iana_value_to_id(i16 noundef zeroext 10, ptr noundef %11)
  %436 = icmp eq i32 %435, -1
  br i1 %436, label %437, label %490

437:                                              ; preds = %432
  br label %438

438:                                              ; preds = %437
  br label %439

439:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  %440 = call ptr @__errno_location() #11
  %441 = load i32, ptr %440, align 4, !tbaa !5
  store i32 %441, ptr %12, align 4, !tbaa !5
  %442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %443 = call i32 @s2n_print_stacktrace(ptr noundef %442)
  %444 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %445 = trunc i8 %444 to i1
  br i1 %445, label %446, label %468

446:                                              ; preds = %439
  %447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %448 = call i32 @fileno(ptr noundef %447) #10
  %449 = call i32 @isatty(i32 noundef %448) #10
  %450 = icmp ne i32 %449, 0
  br i1 %450, label %451, label %468

451:                                              ; preds = %446
  %452 = load i32, ptr %12, align 4, !tbaa !5
  %453 = call ptr @__errno_location() #11
  store i32 %452, ptr %453, align 4, !tbaa !5
  %454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %455 = load i32, ptr @test_count, align 4, !tbaa !5
  %456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %457 = load i32, ptr %456, align 4, !tbaa !5
  %458 = call ptr @s2n_strerror(i32 noundef %457, ptr noundef @.str.3)
  %459 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %460 = load i32, ptr %459, align 4, !tbaa !5
  %461 = call ptr @s2n_strerror_debug(i32 noundef %460, ptr noundef @.str.3)
  %462 = call ptr @__errno_location() #11
  %463 = load i32, ptr %462, align 4, !tbaa !5
  %464 = call ptr @strerror(i32 noundef %463) #10
  %465 = call ptr @__errno_location() #11
  %466 = load i32, ptr %465, align 4, !tbaa !5
  %467 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %454, ptr noundef @.str, i32 noundef %455, ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 82, ptr noundef %458, ptr noundef %461, ptr noundef %464, i32 noundef %466) #10
  br label %485

468:                                              ; preds = %446, %439
  %469 = load i32, ptr %12, align 4, !tbaa !5
  %470 = call ptr @__errno_location() #11
  store i32 %469, ptr %470, align 4, !tbaa !5
  %471 = load ptr, ptr @stderr, align 8, !tbaa !9
  %472 = load i32, ptr @test_count, align 4, !tbaa !5
  %473 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %474 = load i32, ptr %473, align 4, !tbaa !5
  %475 = call ptr @s2n_strerror(i32 noundef %474, ptr noundef @.str.3)
  %476 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %477 = load i32, ptr %476, align 4, !tbaa !5
  %478 = call ptr @s2n_strerror_debug(i32 noundef %477, ptr noundef @.str.3)
  %479 = call ptr @__errno_location() #11
  %480 = load i32, ptr %479, align 4, !tbaa !5
  %481 = call ptr @strerror(i32 noundef %480) #10
  %482 = call ptr @__errno_location() #11
  %483 = load i32, ptr %482, align 4, !tbaa !5
  %484 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %471, ptr noundef @.str.4, i32 noundef %472, ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 82, ptr noundef %475, ptr noundef %478, ptr noundef %481, i32 noundef %483) #10
  br label %485

485:                                              ; preds = %468, %451
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  br label %486

486:                                              ; preds = %485
  br label %487

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

488:                                              ; No predecessors!
  br label %489

489:                                              ; preds = %488
  br label %490

490:                                              ; preds = %489, %432
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 808, ptr %13) #10
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 808, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #10
  call void @llvm.memset.p0.i64(ptr align 16 %14, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %15) #10
  store i16 0, ptr %15, align 2, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  %493 = getelementptr inbounds [16 x i16], ptr %14, i64 0, i64 0
  %494 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef null, ptr noundef %493, i16 noundef zeroext 16, ptr noundef %15)
  store i32 %494, ptr %16, align 4, !tbaa !5
  br label %495

495:                                              ; preds = %492
  br label %496

496:                                              ; preds = %495
  br label %497

497:                                              ; preds = %496
  %498 = load i32, ptr @test_count, align 4, !tbaa !5
  %499 = add nsw i32 %498, 1
  store i32 %499, ptr @test_count, align 4, !tbaa !5
  %500 = load i32, ptr %16, align 4, !tbaa !5
  %501 = icmp eq i32 %500, -1
  br i1 %501, label %555, label %502

502:                                              ; preds = %497
  br label %503

503:                                              ; preds = %502
  br label %504

504:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  %505 = call ptr @__errno_location() #11
  %506 = load i32, ptr %505, align 4, !tbaa !5
  store i32 %506, ptr %17, align 4, !tbaa !5
  %507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %508 = call i32 @s2n_print_stacktrace(ptr noundef %507)
  %509 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %510 = trunc i8 %509 to i1
  br i1 %510, label %511, label %533

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

516:                                              ; preds = %511
  %517 = load i32, ptr %17, align 4, !tbaa !5
  %518 = call ptr @__errno_location() #11
  store i32 %517, ptr %518, align 4, !tbaa !5
  %519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %520 = load i32, ptr @test_count, align 4, !tbaa !5
  %521 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %522 = load i32, ptr %521, align 4, !tbaa !5
  %523 = call ptr @s2n_strerror(i32 noundef %522, ptr noundef @.str.3)
  %524 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %525 = load i32, ptr %524, align 4, !tbaa !5
  %526 = call ptr @s2n_strerror_debug(i32 noundef %525, ptr noundef @.str.3)
  %527 = call ptr @__errno_location() #11
  %528 = load i32, ptr %527, align 4, !tbaa !5
  %529 = call ptr @strerror(i32 noundef %528) #10
  %530 = call ptr @__errno_location() #11
  %531 = load i32, ptr %530, align 4, !tbaa !5
  %532 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %519, ptr noundef @.str, i32 noundef %520, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 92, ptr noundef %523, ptr noundef %526, ptr noundef %529, i32 noundef %531) #10
  br label %550

533:                                              ; preds = %511, %504
  %534 = load i32, ptr %17, align 4, !tbaa !5
  %535 = call ptr @__errno_location() #11
  store i32 %534, ptr %535, align 4, !tbaa !5
  %536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %537 = load i32, ptr @test_count, align 4, !tbaa !5
  %538 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %539 = load i32, ptr %538, align 4, !tbaa !5
  %540 = call ptr @s2n_strerror(i32 noundef %539, ptr noundef @.str.3)
  %541 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %542 = load i32, ptr %541, align 4, !tbaa !5
  %543 = call ptr @s2n_strerror_debug(i32 noundef %542, ptr noundef @.str.3)
  %544 = call ptr @__errno_location() #11
  %545 = load i32, ptr %544, align 4, !tbaa !5
  %546 = call ptr @strerror(i32 noundef %545) #10
  %547 = call ptr @__errno_location() #11
  %548 = load i32, ptr %547, align 4, !tbaa !5
  %549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %536, ptr noundef @.str.4, i32 noundef %537, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 92, ptr noundef %540, ptr noundef %543, ptr noundef %546, i32 noundef %548) #10
  br label %550

550:                                              ; preds = %533, %516
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %551

551:                                              ; preds = %550
  br label %552

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

553:                                              ; No predecessors!
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554, %497
  br label %556

556:                                              ; preds = %555
  br label %557

557:                                              ; preds = %556
  br label %558

558:                                              ; preds = %557
  %559 = load i32, ptr @test_count, align 4, !tbaa !5
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr @test_count, align 4, !tbaa !5
  %561 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %562 = load i32, ptr %561, align 4, !tbaa !5
  %563 = icmp eq i32 %562, 402653193
  br i1 %563, label %617, label %564

564:                                              ; preds = %558
  br label %565

565:                                              ; preds = %564
  br label %566

566:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  %567 = call ptr @__errno_location() #11
  %568 = load i32, ptr %567, align 4, !tbaa !5
  store i32 %568, ptr %18, align 4, !tbaa !5
  %569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %570 = call i32 @s2n_print_stacktrace(ptr noundef %569)
  %571 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %572 = trunc i8 %571 to i1
  br i1 %572, label %573, label %595

573:                                              ; preds = %566
  %574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %575 = call i32 @fileno(ptr noundef %574) #10
  %576 = call i32 @isatty(i32 noundef %575) #10
  %577 = icmp ne i32 %576, 0
  br i1 %577, label %578, label %595

578:                                              ; preds = %573
  %579 = load i32, ptr %18, align 4, !tbaa !5
  %580 = call ptr @__errno_location() #11
  store i32 %579, ptr %580, align 4, !tbaa !5
  %581 = load ptr, ptr @stderr, align 8, !tbaa !9
  %582 = load i32, ptr @test_count, align 4, !tbaa !5
  %583 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %584 = load i32, ptr %583, align 4, !tbaa !5
  %585 = call ptr @s2n_strerror(i32 noundef %584, ptr noundef @.str.3)
  %586 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %587 = load i32, ptr %586, align 4, !tbaa !5
  %588 = call ptr @s2n_strerror_debug(i32 noundef %587, ptr noundef @.str.3)
  %589 = call ptr @__errno_location() #11
  %590 = load i32, ptr %589, align 4, !tbaa !5
  %591 = call ptr @strerror(i32 noundef %590) #10
  %592 = call ptr @__errno_location() #11
  %593 = load i32, ptr %592, align 4, !tbaa !5
  %594 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %581, ptr noundef @.str, i32 noundef %582, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 92, ptr noundef %585, ptr noundef %588, ptr noundef %591, i32 noundef %593) #10
  br label %612

595:                                              ; preds = %573, %566
  %596 = load i32, ptr %18, align 4, !tbaa !5
  %597 = call ptr @__errno_location() #11
  store i32 %596, ptr %597, align 4, !tbaa !5
  %598 = load ptr, ptr @stderr, align 8, !tbaa !9
  %599 = load i32, ptr @test_count, align 4, !tbaa !5
  %600 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %601 = load i32, ptr %600, align 4, !tbaa !5
  %602 = call ptr @s2n_strerror(i32 noundef %601, ptr noundef @.str.3)
  %603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %604 = load i32, ptr %603, align 4, !tbaa !5
  %605 = call ptr @s2n_strerror_debug(i32 noundef %604, ptr noundef @.str.3)
  %606 = call ptr @__errno_location() #11
  %607 = load i32, ptr %606, align 4, !tbaa !5
  %608 = call ptr @strerror(i32 noundef %607) #10
  %609 = call ptr @__errno_location() #11
  %610 = load i32, ptr %609, align 4, !tbaa !5
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %598, ptr noundef @.str.4, i32 noundef %599, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 92, ptr noundef %602, ptr noundef %605, ptr noundef %608, i32 noundef %610) #10
  br label %612

612:                                              ; preds = %595, %578
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  br label %613

613:                                              ; preds = %612
  br label %614

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

615:                                              ; No predecessors!
  br label %616

616:                                              ; preds = %615
  br label %617

617:                                              ; preds = %616, %558
  br label %618

618:                                              ; preds = %617
  br label %619

619:                                              ; preds = %618
  br label %620

620:                                              ; preds = %619
  %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 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %624 = load i32, ptr %623, align 4, !tbaa !5
  %625 = call ptr @s2n_strerror_debug(i32 noundef %624, ptr noundef @.str.3)
  %626 = icmp eq ptr %625, null
  br i1 %626, label %627, label %680

627:                                              ; preds = %620
  br label %628

628:                                              ; preds = %627
  br label %629

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

636:                                              ; preds = %629
  %637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %638 = call i32 @fileno(ptr noundef %637) #10
  %639 = call i32 @isatty(i32 noundef %638) #10
  %640 = icmp ne i32 %639, 0
  br i1 %640, label %641, label %658

641:                                              ; preds = %636
  %642 = load i32, ptr %19, align 4, !tbaa !5
  %643 = call ptr @__errno_location() #11
  store i32 %642, ptr %643, align 4, !tbaa !5
  %644 = load ptr, ptr @stderr, align 8, !tbaa !9
  %645 = load i32, ptr @test_count, align 4, !tbaa !5
  %646 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %647 = load i32, ptr %646, align 4, !tbaa !5
  %648 = call ptr @s2n_strerror(i32 noundef %647, ptr noundef @.str.3)
  %649 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %650 = load i32, ptr %649, align 4, !tbaa !5
  %651 = call ptr @s2n_strerror_debug(i32 noundef %650, ptr noundef @.str.3)
  %652 = call ptr @__errno_location() #11
  %653 = load i32, ptr %652, align 4, !tbaa !5
  %654 = call ptr @strerror(i32 noundef %653) #10
  %655 = call ptr @__errno_location() #11
  %656 = load i32, ptr %655, align 4, !tbaa !5
  %657 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %644, ptr noundef @.str, i32 noundef %645, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 92, ptr noundef %648, ptr noundef %651, ptr noundef %654, i32 noundef %656) #10
  br label %675

658:                                              ; preds = %636, %629
  %659 = load i32, ptr %19, align 4, !tbaa !5
  %660 = call ptr @__errno_location() #11
  store i32 %659, ptr %660, align 4, !tbaa !5
  %661 = load ptr, ptr @stderr, align 8, !tbaa !9
  %662 = load i32, ptr @test_count, align 4, !tbaa !5
  %663 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %664 = load i32, ptr %663, align 4, !tbaa !5
  %665 = call ptr @s2n_strerror(i32 noundef %664, ptr noundef @.str.3)
  %666 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %667 = load i32, ptr %666, align 4, !tbaa !5
  %668 = call ptr @s2n_strerror_debug(i32 noundef %667, ptr noundef @.str.3)
  %669 = call ptr @__errno_location() #11
  %670 = load i32, ptr %669, align 4, !tbaa !5
  %671 = call ptr @strerror(i32 noundef %670) #10
  %672 = call ptr @__errno_location() #11
  %673 = load i32, ptr %672, align 4, !tbaa !5
  %674 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %661, ptr noundef @.str.4, i32 noundef %662, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 92, ptr noundef %665, ptr noundef %668, ptr noundef %671, i32 noundef %673) #10
  br label %675

675:                                              ; preds = %658, %641
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %676

676:                                              ; preds = %675
  br label %677

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

678:                                              ; No predecessors!
  br label %679

679:                                              ; preds = %678
  br label %680

680:                                              ; preds = %679, %620
  br label %681

681:                                              ; preds = %680
  br label %682

682:                                              ; preds = %681
  br label %683

683:                                              ; preds = %682
  br label %684

684:                                              ; preds = %683
  br label %685

685:                                              ; preds = %684
  %686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %686, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %687 = call ptr @__errno_location() #11
  store i32 0, ptr %687, align 4, !tbaa !5
  br label %688

688:                                              ; preds = %685
  br label %689

689:                                              ; preds = %688
  br label %690

690:                                              ; preds = %689
  br label %691

691:                                              ; preds = %690
  br label %692

692:                                              ; preds = %691
  %693 = load i32, ptr @test_count, align 4, !tbaa !5
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr @test_count, align 4, !tbaa !5
  %695 = load i16, ptr %15, align 2, !tbaa !16
  %696 = zext i16 %695 to i32
  %697 = icmp eq i32 %696, 0
  br i1 %697, label %751, label %698

698:                                              ; preds = %692
  br label %699

699:                                              ; preds = %698
  br label %700

700:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  %701 = call ptr @__errno_location() #11
  %702 = load i32, ptr %701, align 4, !tbaa !5
  store i32 %702, ptr %20, align 4, !tbaa !5
  %703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %704 = call i32 @s2n_print_stacktrace(ptr noundef %703)
  %705 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %706 = trunc i8 %705 to i1
  br i1 %706, label %707, label %729

707:                                              ; preds = %700
  %708 = load ptr, ptr @stderr, align 8, !tbaa !9
  %709 = call i32 @fileno(ptr noundef %708) #10
  %710 = call i32 @isatty(i32 noundef %709) #10
  %711 = icmp ne i32 %710, 0
  br i1 %711, label %712, label %729

712:                                              ; preds = %707
  %713 = load i32, ptr %20, align 4, !tbaa !5
  %714 = call ptr @__errno_location() #11
  store i32 %713, ptr %714, align 4, !tbaa !5
  %715 = load ptr, ptr @stderr, align 8, !tbaa !9
  %716 = load i32, ptr @test_count, align 4, !tbaa !5
  %717 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %718 = load i32, ptr %717, align 4, !tbaa !5
  %719 = call ptr @s2n_strerror(i32 noundef %718, ptr noundef @.str.3)
  %720 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %721 = load i32, ptr %720, align 4, !tbaa !5
  %722 = call ptr @s2n_strerror_debug(i32 noundef %721, ptr noundef @.str.3)
  %723 = call ptr @__errno_location() #11
  %724 = load i32, ptr %723, align 4, !tbaa !5
  %725 = call ptr @strerror(i32 noundef %724) #10
  %726 = call ptr @__errno_location() #11
  %727 = load i32, ptr %726, align 4, !tbaa !5
  %728 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %715, ptr noundef @.str, i32 noundef %716, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 93, ptr noundef %719, ptr noundef %722, ptr noundef %725, i32 noundef %727) #10
  br label %746

729:                                              ; preds = %707, %700
  %730 = load i32, ptr %20, align 4, !tbaa !5
  %731 = call ptr @__errno_location() #11
  store i32 %730, ptr %731, align 4, !tbaa !5
  %732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %733 = load i32, ptr @test_count, align 4, !tbaa !5
  %734 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %735 = load i32, ptr %734, align 4, !tbaa !5
  %736 = call ptr @s2n_strerror(i32 noundef %735, ptr noundef @.str.3)
  %737 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %738 = load i32, ptr %737, align 4, !tbaa !5
  %739 = call ptr @s2n_strerror_debug(i32 noundef %738, ptr noundef @.str.3)
  %740 = call ptr @__errno_location() #11
  %741 = load i32, ptr %740, align 4, !tbaa !5
  %742 = call ptr @strerror(i32 noundef %741) #10
  %743 = call ptr @__errno_location() #11
  %744 = load i32, ptr %743, align 4, !tbaa !5
  %745 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %732, ptr noundef @.str.4, i32 noundef %733, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 93, ptr noundef %736, ptr noundef %739, ptr noundef %742, i32 noundef %744) #10
  br label %746

746:                                              ; preds = %729, %712
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  br label %747

747:                                              ; preds = %746
  br label %748

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

749:                                              ; No predecessors!
  br label %750

750:                                              ; preds = %749
  br label %751

751:                                              ; preds = %750, %692
  br label %752

752:                                              ; preds = %751
  br label %753

753:                                              ; preds = %752
  %754 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %13, ptr noundef null, i16 noundef zeroext 16, ptr noundef %15)
  store i32 %754, ptr %16, align 4, !tbaa !5
  br label %755

755:                                              ; preds = %753
  br label %756

756:                                              ; preds = %755
  br label %757

757:                                              ; preds = %756
  %758 = load i32, ptr @test_count, align 4, !tbaa !5
  %759 = add nsw i32 %758, 1
  store i32 %759, ptr @test_count, align 4, !tbaa !5
  %760 = load i32, ptr %16, align 4, !tbaa !5
  %761 = icmp eq i32 %760, -1
  br i1 %761, label %815, label %762

762:                                              ; preds = %757
  br label %763

763:                                              ; preds = %762
  br label %764

764:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  %765 = call ptr @__errno_location() #11
  %766 = load i32, ptr %765, align 4, !tbaa !5
  store i32 %766, ptr %21, align 4, !tbaa !5
  %767 = load ptr, ptr @stderr, align 8, !tbaa !9
  %768 = call i32 @s2n_print_stacktrace(ptr noundef %767)
  %769 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %770 = trunc i8 %769 to i1
  br i1 %770, label %771, label %793

771:                                              ; preds = %764
  %772 = load ptr, ptr @stderr, align 8, !tbaa !9
  %773 = call i32 @fileno(ptr noundef %772) #10
  %774 = call i32 @isatty(i32 noundef %773) #10
  %775 = icmp ne i32 %774, 0
  br i1 %775, label %776, label %793

776:                                              ; preds = %771
  %777 = load i32, ptr %21, align 4, !tbaa !5
  %778 = call ptr @__errno_location() #11
  store i32 %777, ptr %778, align 4, !tbaa !5
  %779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %780 = load i32, ptr @test_count, align 4, !tbaa !5
  %781 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %782 = load i32, ptr %781, align 4, !tbaa !5
  %783 = call ptr @s2n_strerror(i32 noundef %782, ptr noundef @.str.3)
  %784 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %785 = load i32, ptr %784, align 4, !tbaa !5
  %786 = call ptr @s2n_strerror_debug(i32 noundef %785, ptr noundef @.str.3)
  %787 = call ptr @__errno_location() #11
  %788 = load i32, ptr %787, align 4, !tbaa !5
  %789 = call ptr @strerror(i32 noundef %788) #10
  %790 = call ptr @__errno_location() #11
  %791 = load i32, ptr %790, align 4, !tbaa !5
  %792 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %779, ptr noundef @.str, i32 noundef %780, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 97, ptr noundef %783, ptr noundef %786, ptr noundef %789, i32 noundef %791) #10
  br label %810

793:                                              ; preds = %771, %764
  %794 = load i32, ptr %21, align 4, !tbaa !5
  %795 = call ptr @__errno_location() #11
  store i32 %794, ptr %795, align 4, !tbaa !5
  %796 = load ptr, ptr @stderr, align 8, !tbaa !9
  %797 = load i32, ptr @test_count, align 4, !tbaa !5
  %798 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %799 = load i32, ptr %798, align 4, !tbaa !5
  %800 = call ptr @s2n_strerror(i32 noundef %799, ptr noundef @.str.3)
  %801 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %802 = load i32, ptr %801, align 4, !tbaa !5
  %803 = call ptr @s2n_strerror_debug(i32 noundef %802, ptr noundef @.str.3)
  %804 = call ptr @__errno_location() #11
  %805 = load i32, ptr %804, align 4, !tbaa !5
  %806 = call ptr @strerror(i32 noundef %805) #10
  %807 = call ptr @__errno_location() #11
  %808 = load i32, ptr %807, align 4, !tbaa !5
  %809 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %796, ptr noundef @.str.4, i32 noundef %797, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 97, ptr noundef %800, ptr noundef %803, ptr noundef %806, i32 noundef %808) #10
  br label %810

810:                                              ; preds = %793, %776
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %811

811:                                              ; preds = %810
  br label %812

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

813:                                              ; No predecessors!
  br label %814

814:                                              ; preds = %813
  br label %815

815:                                              ; preds = %814, %757
  br label %816

816:                                              ; preds = %815
  br label %817

817:                                              ; preds = %816
  br label %818

818:                                              ; preds = %817
  %819 = load i32, ptr @test_count, align 4, !tbaa !5
  %820 = add nsw i32 %819, 1
  store i32 %820, ptr @test_count, align 4, !tbaa !5
  %821 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %822 = load i32, ptr %821, align 4, !tbaa !5
  %823 = icmp eq i32 %822, 402653193
  br i1 %823, label %877, label %824

824:                                              ; preds = %818
  br label %825

825:                                              ; preds = %824
  br label %826

826:                                              ; preds = %825
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  %827 = call ptr @__errno_location() #11
  %828 = load i32, ptr %827, align 4, !tbaa !5
  store i32 %828, ptr %22, align 4, !tbaa !5
  %829 = load ptr, ptr @stderr, align 8, !tbaa !9
  %830 = call i32 @s2n_print_stacktrace(ptr noundef %829)
  %831 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %832 = trunc i8 %831 to i1
  br i1 %832, label %833, label %855

833:                                              ; preds = %826
  %834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %835 = call i32 @fileno(ptr noundef %834) #10
  %836 = call i32 @isatty(i32 noundef %835) #10
  %837 = icmp ne i32 %836, 0
  br i1 %837, label %838, label %855

838:                                              ; preds = %833
  %839 = load i32, ptr %22, align 4, !tbaa !5
  %840 = call ptr @__errno_location() #11
  store i32 %839, ptr %840, align 4, !tbaa !5
  %841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %842 = load i32, ptr @test_count, align 4, !tbaa !5
  %843 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %844 = load i32, ptr %843, align 4, !tbaa !5
  %845 = call ptr @s2n_strerror(i32 noundef %844, ptr noundef @.str.3)
  %846 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %847 = load i32, ptr %846, align 4, !tbaa !5
  %848 = call ptr @s2n_strerror_debug(i32 noundef %847, ptr noundef @.str.3)
  %849 = call ptr @__errno_location() #11
  %850 = load i32, ptr %849, align 4, !tbaa !5
  %851 = call ptr @strerror(i32 noundef %850) #10
  %852 = call ptr @__errno_location() #11
  %853 = load i32, ptr %852, align 4, !tbaa !5
  %854 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %841, ptr noundef @.str, i32 noundef %842, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 97, ptr noundef %845, ptr noundef %848, ptr noundef %851, i32 noundef %853) #10
  br label %872

855:                                              ; preds = %833, %826
  %856 = load i32, ptr %22, align 4, !tbaa !5
  %857 = call ptr @__errno_location() #11
  store i32 %856, ptr %857, align 4, !tbaa !5
  %858 = load ptr, ptr @stderr, align 8, !tbaa !9
  %859 = load i32, ptr @test_count, align 4, !tbaa !5
  %860 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %861 = load i32, ptr %860, align 4, !tbaa !5
  %862 = call ptr @s2n_strerror(i32 noundef %861, ptr noundef @.str.3)
  %863 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %864 = load i32, ptr %863, align 4, !tbaa !5
  %865 = call ptr @s2n_strerror_debug(i32 noundef %864, ptr noundef @.str.3)
  %866 = call ptr @__errno_location() #11
  %867 = load i32, ptr %866, align 4, !tbaa !5
  %868 = call ptr @strerror(i32 noundef %867) #10
  %869 = call ptr @__errno_location() #11
  %870 = load i32, ptr %869, align 4, !tbaa !5
  %871 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %858, ptr noundef @.str.4, i32 noundef %859, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 97, ptr noundef %862, ptr noundef %865, ptr noundef %868, i32 noundef %870) #10
  br label %872

872:                                              ; preds = %855, %838
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %873

873:                                              ; preds = %872
  br label %874

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

875:                                              ; No predecessors!
  br label %876

876:                                              ; preds = %875
  br label %877

877:                                              ; preds = %876, %818
  br label %878

878:                                              ; preds = %877
  br label %879

879:                                              ; preds = %878
  br label %880

880:                                              ; preds = %879
  %881 = load i32, ptr @test_count, align 4, !tbaa !5
  %882 = add nsw i32 %881, 1
  store i32 %882, ptr @test_count, align 4, !tbaa !5
  %883 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %884 = load i32, ptr %883, align 4, !tbaa !5
  %885 = call ptr @s2n_strerror_debug(i32 noundef %884, ptr noundef @.str.3)
  %886 = icmp eq ptr %885, null
  br i1 %886, label %887, label %940

887:                                              ; preds = %880
  br label %888

888:                                              ; preds = %887
  br label %889

889:                                              ; preds = %888
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  %890 = call ptr @__errno_location() #11
  %891 = load i32, ptr %890, align 4, !tbaa !5
  store i32 %891, ptr %23, align 4, !tbaa !5
  %892 = load ptr, ptr @stderr, align 8, !tbaa !9
  %893 = call i32 @s2n_print_stacktrace(ptr noundef %892)
  %894 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %895 = trunc i8 %894 to i1
  br i1 %895, label %896, label %918

896:                                              ; preds = %889
  %897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %898 = call i32 @fileno(ptr noundef %897) #10
  %899 = call i32 @isatty(i32 noundef %898) #10
  %900 = icmp ne i32 %899, 0
  br i1 %900, label %901, label %918

901:                                              ; preds = %896
  %902 = load i32, ptr %23, align 4, !tbaa !5
  %903 = call ptr @__errno_location() #11
  store i32 %902, ptr %903, align 4, !tbaa !5
  %904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %905 = load i32, ptr @test_count, align 4, !tbaa !5
  %906 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %907 = load i32, ptr %906, align 4, !tbaa !5
  %908 = call ptr @s2n_strerror(i32 noundef %907, ptr noundef @.str.3)
  %909 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %910 = load i32, ptr %909, align 4, !tbaa !5
  %911 = call ptr @s2n_strerror_debug(i32 noundef %910, ptr noundef @.str.3)
  %912 = call ptr @__errno_location() #11
  %913 = load i32, ptr %912, align 4, !tbaa !5
  %914 = call ptr @strerror(i32 noundef %913) #10
  %915 = call ptr @__errno_location() #11
  %916 = load i32, ptr %915, align 4, !tbaa !5
  %917 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %904, ptr noundef @.str, i32 noundef %905, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 97, ptr noundef %908, ptr noundef %911, ptr noundef %914, i32 noundef %916) #10
  br label %935

918:                                              ; preds = %896, %889
  %919 = load i32, ptr %23, align 4, !tbaa !5
  %920 = call ptr @__errno_location() #11
  store i32 %919, ptr %920, align 4, !tbaa !5
  %921 = load ptr, ptr @stderr, align 8, !tbaa !9
  %922 = load i32, ptr @test_count, align 4, !tbaa !5
  %923 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %924 = load i32, ptr %923, align 4, !tbaa !5
  %925 = call ptr @s2n_strerror(i32 noundef %924, ptr noundef @.str.3)
  %926 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %927 = load i32, ptr %926, align 4, !tbaa !5
  %928 = call ptr @s2n_strerror_debug(i32 noundef %927, ptr noundef @.str.3)
  %929 = call ptr @__errno_location() #11
  %930 = load i32, ptr %929, align 4, !tbaa !5
  %931 = call ptr @strerror(i32 noundef %930) #10
  %932 = call ptr @__errno_location() #11
  %933 = load i32, ptr %932, align 4, !tbaa !5
  %934 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %921, ptr noundef @.str.4, i32 noundef %922, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 97, ptr noundef %925, ptr noundef %928, ptr noundef %931, i32 noundef %933) #10
  br label %935

935:                                              ; preds = %918, %901
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  br label %936

936:                                              ; preds = %935
  br label %937

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

938:                                              ; No predecessors!
  br label %939

939:                                              ; preds = %938
  br label %940

940:                                              ; preds = %939, %880
  br label %941

941:                                              ; preds = %940
  br label %942

942:                                              ; preds = %941
  br label %943

943:                                              ; preds = %942
  br label %944

944:                                              ; preds = %943
  br label %945

945:                                              ; preds = %944
  %946 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %946, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %947 = call ptr @__errno_location() #11
  store i32 0, ptr %947, align 4, !tbaa !5
  br label %948

948:                                              ; preds = %945
  br label %949

949:                                              ; preds = %948
  br label %950

950:                                              ; preds = %949
  br label %951

951:                                              ; preds = %950
  br label %952

952:                                              ; preds = %951
  %953 = load i32, ptr @test_count, align 4, !tbaa !5
  %954 = add nsw i32 %953, 1
  store i32 %954, ptr @test_count, align 4, !tbaa !5
  %955 = load i16, ptr %15, align 2, !tbaa !16
  %956 = zext i16 %955 to i32
  %957 = icmp eq i32 %956, 0
  br i1 %957, label %1011, label %958

958:                                              ; preds = %952
  br label %959

959:                                              ; preds = %958
  br label %960

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

967:                                              ; preds = %960
  %968 = load ptr, ptr @stderr, align 8, !tbaa !9
  %969 = call i32 @fileno(ptr noundef %968) #10
  %970 = call i32 @isatty(i32 noundef %969) #10
  %971 = icmp ne i32 %970, 0
  br i1 %971, label %972, label %989

972:                                              ; preds = %967
  %973 = load i32, ptr %24, align 4, !tbaa !5
  %974 = call ptr @__errno_location() #11
  store i32 %973, ptr %974, align 4, !tbaa !5
  %975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %976 = load i32, ptr @test_count, align 4, !tbaa !5
  %977 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %978 = load i32, ptr %977, align 4, !tbaa !5
  %979 = call ptr @s2n_strerror(i32 noundef %978, ptr noundef @.str.3)
  %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_debug(i32 noundef %981, ptr noundef @.str.3)
  %983 = call ptr @__errno_location() #11
  %984 = load i32, ptr %983, align 4, !tbaa !5
  %985 = call ptr @strerror(i32 noundef %984) #10
  %986 = call ptr @__errno_location() #11
  %987 = load i32, ptr %986, align 4, !tbaa !5
  %988 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %975, ptr noundef @.str, i32 noundef %976, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 98, ptr noundef %979, ptr noundef %982, ptr noundef %985, i32 noundef %987) #10
  br label %1006

989:                                              ; preds = %967, %960
  %990 = load i32, ptr %24, align 4, !tbaa !5
  %991 = call ptr @__errno_location() #11
  store i32 %990, ptr %991, align 4, !tbaa !5
  %992 = load ptr, ptr @stderr, align 8, !tbaa !9
  %993 = load i32, ptr @test_count, align 4, !tbaa !5
  %994 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %995 = load i32, ptr %994, align 4, !tbaa !5
  %996 = call ptr @s2n_strerror(i32 noundef %995, ptr noundef @.str.3)
  %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_debug(i32 noundef %998, ptr noundef @.str.3)
  %1000 = call ptr @__errno_location() #11
  %1001 = load i32, ptr %1000, align 4, !tbaa !5
  %1002 = call ptr @strerror(i32 noundef %1001) #10
  %1003 = call ptr @__errno_location() #11
  %1004 = load i32, ptr %1003, align 4, !tbaa !5
  %1005 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %992, ptr noundef @.str.4, i32 noundef %993, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 98, ptr noundef %996, ptr noundef %999, ptr noundef %1002, i32 noundef %1004) #10
  br label %1006

1006:                                             ; preds = %989, %972
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %1007

1007:                                             ; preds = %1006
  br label %1008

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

1009:                                             ; No predecessors!
  br label %1010

1010:                                             ; preds = %1009
  br label %1011

1011:                                             ; preds = %1010, %952
  br label %1012

1012:                                             ; preds = %1011
  br label %1013

1013:                                             ; preds = %1012
  %1014 = getelementptr inbounds [16 x i16], ptr %14, i64 0, i64 0
  %1015 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %13, ptr noundef %1014, i16 noundef zeroext 16, ptr noundef null)
  store i32 %1015, ptr %16, align 4, !tbaa !5
  br label %1016

1016:                                             ; preds = %1013
  br label %1017

1017:                                             ; preds = %1016
  br label %1018

1018:                                             ; preds = %1017
  %1019 = load i32, ptr @test_count, align 4, !tbaa !5
  %1020 = add nsw i32 %1019, 1
  store i32 %1020, ptr @test_count, align 4, !tbaa !5
  %1021 = load i32, ptr %16, align 4, !tbaa !5
  %1022 = icmp eq i32 %1021, -1
  br i1 %1022, label %1076, label %1023

1023:                                             ; preds = %1018
  br label %1024

1024:                                             ; preds = %1023
  br label %1025

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

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

1037:                                             ; preds = %1032
  %1038 = load i32, ptr %25, align 4, !tbaa !5
  %1039 = call ptr @__errno_location() #11
  store i32 %1038, ptr %1039, align 4, !tbaa !5
  %1040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1041 = load i32, ptr @test_count, align 4, !tbaa !5
  %1042 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1043 = load i32, ptr %1042, align 4, !tbaa !5
  %1044 = call ptr @s2n_strerror(i32 noundef %1043, ptr noundef @.str.3)
  %1045 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1046 = load i32, ptr %1045, align 4, !tbaa !5
  %1047 = call ptr @s2n_strerror_debug(i32 noundef %1046, ptr noundef @.str.3)
  %1048 = call ptr @__errno_location() #11
  %1049 = load i32, ptr %1048, align 4, !tbaa !5
  %1050 = call ptr @strerror(i32 noundef %1049) #10
  %1051 = call ptr @__errno_location() #11
  %1052 = load i32, ptr %1051, align 4, !tbaa !5
  %1053 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1040, ptr noundef @.str, i32 noundef %1041, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 101, ptr noundef %1044, ptr noundef %1047, ptr noundef %1050, i32 noundef %1052) #10
  br label %1071

1054:                                             ; preds = %1032, %1025
  %1055 = load i32, ptr %25, align 4, !tbaa !5
  %1056 = call ptr @__errno_location() #11
  store i32 %1055, ptr %1056, align 4, !tbaa !5
  %1057 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1058 = load i32, ptr @test_count, align 4, !tbaa !5
  %1059 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1060 = load i32, ptr %1059, align 4, !tbaa !5
  %1061 = call ptr @s2n_strerror(i32 noundef %1060, ptr noundef @.str.3)
  %1062 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1063 = load i32, ptr %1062, align 4, !tbaa !5
  %1064 = call ptr @s2n_strerror_debug(i32 noundef %1063, ptr noundef @.str.3)
  %1065 = call ptr @__errno_location() #11
  %1066 = load i32, ptr %1065, align 4, !tbaa !5
  %1067 = call ptr @strerror(i32 noundef %1066) #10
  %1068 = call ptr @__errno_location() #11
  %1069 = load i32, ptr %1068, align 4, !tbaa !5
  %1070 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1057, ptr noundef @.str.4, i32 noundef %1058, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 101, ptr noundef %1061, ptr noundef %1064, ptr noundef %1067, i32 noundef %1069) #10
  br label %1071

1071:                                             ; preds = %1054, %1037
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %1072

1072:                                             ; preds = %1071
  br label %1073

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

1074:                                             ; No predecessors!
  br label %1075

1075:                                             ; preds = %1074
  br label %1076

1076:                                             ; preds = %1075, %1018
  br label %1077

1077:                                             ; preds = %1076
  br label %1078

1078:                                             ; preds = %1077
  br label %1079

1079:                                             ; preds = %1078
  %1080 = load i32, ptr @test_count, align 4, !tbaa !5
  %1081 = add nsw i32 %1080, 1
  store i32 %1081, ptr @test_count, align 4, !tbaa !5
  %1082 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1083 = load i32, ptr %1082, align 4, !tbaa !5
  %1084 = icmp eq i32 %1083, 402653193
  br i1 %1084, label %1138, label %1085

1085:                                             ; preds = %1079
  br label %1086

1086:                                             ; preds = %1085
  br label %1087

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

1094:                                             ; preds = %1087
  %1095 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1096 = call i32 @fileno(ptr noundef %1095) #10
  %1097 = call i32 @isatty(i32 noundef %1096) #10
  %1098 = icmp ne i32 %1097, 0
  br i1 %1098, label %1099, label %1116

1099:                                             ; preds = %1094
  %1100 = load i32, ptr %26, align 4, !tbaa !5
  %1101 = call ptr @__errno_location() #11
  store i32 %1100, ptr %1101, align 4, !tbaa !5
  %1102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1103 = load i32, ptr @test_count, align 4, !tbaa !5
  %1104 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1105 = load i32, ptr %1104, align 4, !tbaa !5
  %1106 = call ptr @s2n_strerror(i32 noundef %1105, ptr noundef @.str.3)
  %1107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1108 = load i32, ptr %1107, align 4, !tbaa !5
  %1109 = call ptr @s2n_strerror_debug(i32 noundef %1108, ptr noundef @.str.3)
  %1110 = call ptr @__errno_location() #11
  %1111 = load i32, ptr %1110, align 4, !tbaa !5
  %1112 = call ptr @strerror(i32 noundef %1111) #10
  %1113 = call ptr @__errno_location() #11
  %1114 = load i32, ptr %1113, align 4, !tbaa !5
  %1115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1102, ptr noundef @.str, i32 noundef %1103, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 101, ptr noundef %1106, ptr noundef %1109, ptr noundef %1112, i32 noundef %1114) #10
  br label %1133

1116:                                             ; preds = %1094, %1087
  %1117 = load i32, ptr %26, align 4, !tbaa !5
  %1118 = call ptr @__errno_location() #11
  store i32 %1117, ptr %1118, align 4, !tbaa !5
  %1119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1120 = load i32, ptr @test_count, align 4, !tbaa !5
  %1121 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1122 = load i32, ptr %1121, align 4, !tbaa !5
  %1123 = call ptr @s2n_strerror(i32 noundef %1122, ptr noundef @.str.3)
  %1124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1125 = load i32, ptr %1124, align 4, !tbaa !5
  %1126 = call ptr @s2n_strerror_debug(i32 noundef %1125, ptr noundef @.str.3)
  %1127 = call ptr @__errno_location() #11
  %1128 = load i32, ptr %1127, align 4, !tbaa !5
  %1129 = call ptr @strerror(i32 noundef %1128) #10
  %1130 = call ptr @__errno_location() #11
  %1131 = load i32, ptr %1130, align 4, !tbaa !5
  %1132 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1119, ptr noundef @.str.4, i32 noundef %1120, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 101, ptr noundef %1123, ptr noundef %1126, ptr noundef %1129, i32 noundef %1131) #10
  br label %1133

1133:                                             ; preds = %1116, %1099
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %1134

1134:                                             ; preds = %1133
  br label %1135

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

1136:                                             ; No predecessors!
  br label %1137

1137:                                             ; preds = %1136
  br label %1138

1138:                                             ; preds = %1137, %1079
  br label %1139

1139:                                             ; preds = %1138
  br label %1140

1140:                                             ; preds = %1139
  br label %1141

1141:                                             ; preds = %1140
  %1142 = load i32, ptr @test_count, align 4, !tbaa !5
  %1143 = add nsw i32 %1142, 1
  store i32 %1143, ptr @test_count, align 4, !tbaa !5
  %1144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1145 = load i32, ptr %1144, align 4, !tbaa !5
  %1146 = call ptr @s2n_strerror_debug(i32 noundef %1145, ptr noundef @.str.3)
  %1147 = icmp eq ptr %1146, null
  br i1 %1147, label %1148, label %1201

1148:                                             ; preds = %1141
  br label %1149

1149:                                             ; preds = %1148
  br label %1150

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

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

1162:                                             ; preds = %1157
  %1163 = load i32, ptr %27, align 4, !tbaa !5
  %1164 = call ptr @__errno_location() #11
  store i32 %1163, ptr %1164, align 4, !tbaa !5
  %1165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1166 = load i32, ptr @test_count, align 4, !tbaa !5
  %1167 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1168 = load i32, ptr %1167, align 4, !tbaa !5
  %1169 = call ptr @s2n_strerror(i32 noundef %1168, ptr noundef @.str.3)
  %1170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1171 = load i32, ptr %1170, align 4, !tbaa !5
  %1172 = call ptr @s2n_strerror_debug(i32 noundef %1171, ptr noundef @.str.3)
  %1173 = call ptr @__errno_location() #11
  %1174 = load i32, ptr %1173, align 4, !tbaa !5
  %1175 = call ptr @strerror(i32 noundef %1174) #10
  %1176 = call ptr @__errno_location() #11
  %1177 = load i32, ptr %1176, align 4, !tbaa !5
  %1178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1165, ptr noundef @.str, i32 noundef %1166, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 101, ptr noundef %1169, ptr noundef %1172, ptr noundef %1175, i32 noundef %1177) #10
  br label %1196

1179:                                             ; preds = %1157, %1150
  %1180 = load i32, ptr %27, align 4, !tbaa !5
  %1181 = call ptr @__errno_location() #11
  store i32 %1180, ptr %1181, align 4, !tbaa !5
  %1182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1183 = load i32, ptr @test_count, align 4, !tbaa !5
  %1184 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1185 = load i32, ptr %1184, align 4, !tbaa !5
  %1186 = call ptr @s2n_strerror(i32 noundef %1185, ptr noundef @.str.3)
  %1187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1188 = load i32, ptr %1187, align 4, !tbaa !5
  %1189 = call ptr @s2n_strerror_debug(i32 noundef %1188, ptr noundef @.str.3)
  %1190 = call ptr @__errno_location() #11
  %1191 = load i32, ptr %1190, align 4, !tbaa !5
  %1192 = call ptr @strerror(i32 noundef %1191) #10
  %1193 = call ptr @__errno_location() #11
  %1194 = load i32, ptr %1193, align 4, !tbaa !5
  %1195 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1182, ptr noundef @.str.4, i32 noundef %1183, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 101, ptr noundef %1186, ptr noundef %1189, ptr noundef %1192, i32 noundef %1194) #10
  br label %1196

1196:                                             ; preds = %1179, %1162
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %1197

1197:                                             ; preds = %1196
  br label %1198

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

1199:                                             ; No predecessors!
  br label %1200

1200:                                             ; preds = %1199
  br label %1201

1201:                                             ; preds = %1200, %1141
  br label %1202

1202:                                             ; preds = %1201
  br label %1203

1203:                                             ; preds = %1202
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204
  br label %1206

1206:                                             ; preds = %1205
  %1207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1207, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1208 = call ptr @__errno_location() #11
  store i32 0, ptr %1208, align 4, !tbaa !5
  br label %1209

1209:                                             ; preds = %1206
  br label %1210

1210:                                             ; preds = %1209
  br label %1211

1211:                                             ; preds = %1210
  br label %1212

1212:                                             ; preds = %1211
  br label %1213

1213:                                             ; preds = %1212
  %1214 = load i32, ptr @test_count, align 4, !tbaa !5
  %1215 = add nsw i32 %1214, 1
  store i32 %1215, ptr @test_count, align 4, !tbaa !5
  %1216 = load i16, ptr %15, align 2, !tbaa !16
  %1217 = zext i16 %1216 to i32
  %1218 = icmp eq i32 %1217, 0
  br i1 %1218, label %1272, label %1219

1219:                                             ; preds = %1213
  br label %1220

1220:                                             ; preds = %1219
  br label %1221

1221:                                             ; preds = %1220
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  %1222 = call ptr @__errno_location() #11
  %1223 = load i32, ptr %1222, align 4, !tbaa !5
  store i32 %1223, ptr %28, align 4, !tbaa !5
  %1224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1225 = call i32 @s2n_print_stacktrace(ptr noundef %1224)
  %1226 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1227 = trunc i8 %1226 to i1
  br i1 %1227, label %1228, label %1250

1228:                                             ; preds = %1221
  %1229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1230 = call i32 @fileno(ptr noundef %1229) #10
  %1231 = call i32 @isatty(i32 noundef %1230) #10
  %1232 = icmp ne i32 %1231, 0
  br i1 %1232, label %1233, label %1250

1233:                                             ; preds = %1228
  %1234 = load i32, ptr %28, align 4, !tbaa !5
  %1235 = call ptr @__errno_location() #11
  store i32 %1234, ptr %1235, align 4, !tbaa !5
  %1236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1237 = load i32, ptr @test_count, align 4, !tbaa !5
  %1238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1239 = load i32, ptr %1238, align 4, !tbaa !5
  %1240 = call ptr @s2n_strerror(i32 noundef %1239, ptr noundef @.str.3)
  %1241 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1242 = load i32, ptr %1241, align 4, !tbaa !5
  %1243 = call ptr @s2n_strerror_debug(i32 noundef %1242, ptr noundef @.str.3)
  %1244 = call ptr @__errno_location() #11
  %1245 = load i32, ptr %1244, align 4, !tbaa !5
  %1246 = call ptr @strerror(i32 noundef %1245) #10
  %1247 = call ptr @__errno_location() #11
  %1248 = load i32, ptr %1247, align 4, !tbaa !5
  %1249 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1236, ptr noundef @.str, i32 noundef %1237, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 102, ptr noundef %1240, ptr noundef %1243, ptr noundef %1246, i32 noundef %1248) #10
  br label %1267

1250:                                             ; preds = %1228, %1221
  %1251 = load i32, ptr %28, align 4, !tbaa !5
  %1252 = call ptr @__errno_location() #11
  store i32 %1251, ptr %1252, align 4, !tbaa !5
  %1253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1254 = load i32, ptr @test_count, align 4, !tbaa !5
  %1255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1256 = load i32, ptr %1255, align 4, !tbaa !5
  %1257 = call ptr @s2n_strerror(i32 noundef %1256, ptr noundef @.str.3)
  %1258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1259 = load i32, ptr %1258, align 4, !tbaa !5
  %1260 = call ptr @s2n_strerror_debug(i32 noundef %1259, ptr noundef @.str.3)
  %1261 = call ptr @__errno_location() #11
  %1262 = load i32, ptr %1261, align 4, !tbaa !5
  %1263 = call ptr @strerror(i32 noundef %1262) #10
  %1264 = call ptr @__errno_location() #11
  %1265 = load i32, ptr %1264, align 4, !tbaa !5
  %1266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1253, ptr noundef @.str.4, i32 noundef %1254, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 102, ptr noundef %1257, ptr noundef %1260, ptr noundef %1263, i32 noundef %1265) #10
  br label %1267

1267:                                             ; preds = %1250, %1233
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %1268

1268:                                             ; preds = %1267
  br label %1269

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

1270:                                             ; No predecessors!
  br label %1271

1271:                                             ; preds = %1270
  br label %1272

1272:                                             ; preds = %1271, %1213
  br label %1273

1273:                                             ; preds = %1272
  br label %1274

1274:                                             ; preds = %1273
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 808, ptr %13) #10
  call void @llvm.lifetime.start.p0(i64 808, ptr %29) #10
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 808, i1 false)
  call void @llvm.lifetime.start.p0(i64 34, ptr %30) #10
  call void @llvm.memset.p0.i64(ptr align 16 %30, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #10
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 24, i1 false)
  br label %1275

1275:                                             ; preds = %1274
  %1276 = load i32, ptr @test_count, align 4, !tbaa !5
  %1277 = add nsw i32 %1276, 1
  store i32 %1277, ptr @test_count, align 4, !tbaa !5
  %1278 = getelementptr inbounds [34 x i8], ptr %30, i64 0, i64 0
  %1279 = call i32 @s2n_blob_init(ptr noundef %31, ptr noundef %1278, i32 noundef 34)
  %1280 = icmp eq i32 %1279, -1
  br i1 %1280, label %1281, label %1334

1281:                                             ; preds = %1275
  br label %1282

1282:                                             ; preds = %1281
  br label %1283

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

1290:                                             ; preds = %1283
  %1291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1292 = call i32 @fileno(ptr noundef %1291) #10
  %1293 = call i32 @isatty(i32 noundef %1292) #10
  %1294 = icmp ne i32 %1293, 0
  br i1 %1294, label %1295, label %1312

1295:                                             ; preds = %1290
  %1296 = load i32, ptr %32, align 4, !tbaa !5
  %1297 = call ptr @__errno_location() #11
  store i32 %1296, ptr %1297, align 4, !tbaa !5
  %1298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1299 = load i32, ptr @test_count, align 4, !tbaa !5
  %1300 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1301 = load i32, ptr %1300, align 4, !tbaa !5
  %1302 = call ptr @s2n_strerror(i32 noundef %1301, ptr noundef @.str.3)
  %1303 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1304 = load i32, ptr %1303, align 4, !tbaa !5
  %1305 = call ptr @s2n_strerror_debug(i32 noundef %1304, ptr noundef @.str.3)
  %1306 = call ptr @__errno_location() #11
  %1307 = load i32, ptr %1306, align 4, !tbaa !5
  %1308 = call ptr @strerror(i32 noundef %1307) #10
  %1309 = call ptr @__errno_location() #11
  %1310 = load i32, ptr %1309, align 4, !tbaa !5
  %1311 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1298, ptr noundef @.str, i32 noundef %1299, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 111, ptr noundef %1302, ptr noundef %1305, ptr noundef %1308, i32 noundef %1310) #10
  br label %1329

1312:                                             ; preds = %1290, %1283
  %1313 = load i32, ptr %32, align 4, !tbaa !5
  %1314 = call ptr @__errno_location() #11
  store i32 %1313, ptr %1314, align 4, !tbaa !5
  %1315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1316 = load i32, ptr @test_count, align 4, !tbaa !5
  %1317 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1318 = load i32, ptr %1317, align 4, !tbaa !5
  %1319 = call ptr @s2n_strerror(i32 noundef %1318, ptr noundef @.str.3)
  %1320 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1321 = load i32, ptr %1320, align 4, !tbaa !5
  %1322 = call ptr @s2n_strerror_debug(i32 noundef %1321, ptr noundef @.str.3)
  %1323 = call ptr @__errno_location() #11
  %1324 = load i32, ptr %1323, align 4, !tbaa !5
  %1325 = call ptr @strerror(i32 noundef %1324) #10
  %1326 = call ptr @__errno_location() #11
  %1327 = load i32, ptr %1326, align 4, !tbaa !5
  %1328 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1315, ptr noundef @.str.4, i32 noundef %1316, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 111, ptr noundef %1319, ptr noundef %1322, ptr noundef %1325, i32 noundef %1327) #10
  br label %1329

1329:                                             ; preds = %1312, %1295
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %1330

1330:                                             ; preds = %1329
  br label %1331

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

1332:                                             ; No predecessors!
  br label %1333

1333:                                             ; preds = %1332
  br label %1334

1334:                                             ; preds = %1333, %1275
  br label %1335

1335:                                             ; preds = %1334
  br label %1336

1336:                                             ; preds = %1335
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %1337 = getelementptr inbounds %struct.s2n_client_hello, ptr %29, i32 0, i32 1
  %1338 = getelementptr inbounds %struct.s2n_parsed_extensions_list, ptr %1337, i32 0, i32 0
  %1339 = load i8, ptr %11, align 1, !tbaa !15
  %1340 = zext i8 %1339 to i64
  %1341 = getelementptr inbounds [21 x %struct.s2n_parsed_extension], ptr %1338, i64 0, i64 %1340
  store ptr %1341, ptr %33, align 8, !tbaa !9
  %1342 = load ptr, ptr %33, align 8, !tbaa !9
  %1343 = getelementptr inbounds %struct.s2n_parsed_extension, ptr %1342, i32 0, i32 1
  store i16 10, ptr %1343, align 8, !tbaa !18
  %1344 = load ptr, ptr %33, align 8, !tbaa !9
  %1345 = getelementptr inbounds %struct.s2n_parsed_extension, ptr %1344, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1345, ptr align 8 %31, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr %34) #10
  call void @llvm.memset.p0.i64(ptr align 8 %34, i8 0, i64 40, i1 false)
  br label %1346

1346:                                             ; preds = %1336
  %1347 = load i32, ptr @test_count, align 4, !tbaa !5
  %1348 = add nsw i32 %1347, 1
  store i32 %1348, ptr @test_count, align 4, !tbaa !5
  %1349 = call i32 @s2n_stuffer_init(ptr noundef %34, ptr noundef %31)
  %1350 = icmp eq i32 %1349, -1
  br i1 %1350, label %1351, label %1404

1351:                                             ; preds = %1346
  br label %1352

1352:                                             ; preds = %1351
  br label %1353

1353:                                             ; preds = %1352
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  %1354 = call ptr @__errno_location() #11
  %1355 = load i32, ptr %1354, align 4, !tbaa !5
  store i32 %1355, ptr %35, align 4, !tbaa !5
  %1356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1357 = call i32 @s2n_print_stacktrace(ptr noundef %1356)
  %1358 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1359 = trunc i8 %1358 to i1
  br i1 %1359, label %1360, label %1382

1360:                                             ; preds = %1353
  %1361 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1362 = call i32 @fileno(ptr noundef %1361) #10
  %1363 = call i32 @isatty(i32 noundef %1362) #10
  %1364 = icmp ne i32 %1363, 0
  br i1 %1364, label %1365, label %1382

1365:                                             ; preds = %1360
  %1366 = load i32, ptr %35, align 4, !tbaa !5
  %1367 = call ptr @__errno_location() #11
  store i32 %1366, ptr %1367, align 4, !tbaa !5
  %1368 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1369 = load i32, ptr @test_count, align 4, !tbaa !5
  %1370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1371 = load i32, ptr %1370, align 4, !tbaa !5
  %1372 = call ptr @s2n_strerror(i32 noundef %1371, ptr noundef @.str.3)
  %1373 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1374 = load i32, ptr %1373, align 4, !tbaa !5
  %1375 = call ptr @s2n_strerror_debug(i32 noundef %1374, ptr noundef @.str.3)
  %1376 = call ptr @__errno_location() #11
  %1377 = load i32, ptr %1376, align 4, !tbaa !5
  %1378 = call ptr @strerror(i32 noundef %1377) #10
  %1379 = call ptr @__errno_location() #11
  %1380 = load i32, ptr %1379, align 4, !tbaa !5
  %1381 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1368, ptr noundef @.str, i32 noundef %1369, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 118, ptr noundef %1372, ptr noundef %1375, ptr noundef %1378, i32 noundef %1380) #10
  br label %1399

1382:                                             ; preds = %1360, %1353
  %1383 = load i32, ptr %35, align 4, !tbaa !5
  %1384 = call ptr @__errno_location() #11
  store i32 %1383, ptr %1384, align 4, !tbaa !5
  %1385 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1386 = load i32, ptr @test_count, align 4, !tbaa !5
  %1387 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1388 = load i32, ptr %1387, align 4, !tbaa !5
  %1389 = call ptr @s2n_strerror(i32 noundef %1388, ptr noundef @.str.3)
  %1390 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1391 = load i32, ptr %1390, align 4, !tbaa !5
  %1392 = call ptr @s2n_strerror_debug(i32 noundef %1391, ptr noundef @.str.3)
  %1393 = call ptr @__errno_location() #11
  %1394 = load i32, ptr %1393, align 4, !tbaa !5
  %1395 = call ptr @strerror(i32 noundef %1394) #10
  %1396 = call ptr @__errno_location() #11
  %1397 = load i32, ptr %1396, align 4, !tbaa !5
  %1398 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1385, ptr noundef @.str.4, i32 noundef %1386, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 118, ptr noundef %1389, ptr noundef %1392, ptr noundef %1395, i32 noundef %1397) #10
  br label %1399

1399:                                             ; preds = %1382, %1365
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

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

1402:                                             ; No predecessors!
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

1404:                                             ; preds = %1403, %1346
  br label %1405

1405:                                             ; preds = %1404
  br label %1406

1406:                                             ; preds = %1405
  br label %1407

1407:                                             ; preds = %1406
  %1408 = load i32, ptr @test_count, align 4, !tbaa !5
  %1409 = add nsw i32 %1408, 1
  store i32 %1409, ptr @test_count, align 4, !tbaa !5
  %1410 = call i32 @s2n_stuffer_write_uint16(ptr noundef %34, i16 noundef zeroext 32)
  %1411 = icmp eq i32 %1410, -1
  br i1 %1411, label %1412, label %1465

1412:                                             ; preds = %1407
  br label %1413

1413:                                             ; preds = %1412
  br label %1414

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

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

1426:                                             ; preds = %1421
  %1427 = load i32, ptr %36, align 4, !tbaa !5
  %1428 = call ptr @__errno_location() #11
  store i32 %1427, ptr %1428, align 4, !tbaa !5
  %1429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1430 = load i32, ptr @test_count, align 4, !tbaa !5
  %1431 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1432 = load i32, ptr %1431, align 4, !tbaa !5
  %1433 = call ptr @s2n_strerror(i32 noundef %1432, ptr noundef @.str.3)
  %1434 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1435 = load i32, ptr %1434, align 4, !tbaa !5
  %1436 = call ptr @s2n_strerror_debug(i32 noundef %1435, ptr noundef @.str.3)
  %1437 = call ptr @__errno_location() #11
  %1438 = load i32, ptr %1437, align 4, !tbaa !5
  %1439 = call ptr @strerror(i32 noundef %1438) #10
  %1440 = call ptr @__errno_location() #11
  %1441 = load i32, ptr %1440, align 4, !tbaa !5
  %1442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1429, ptr noundef @.str, i32 noundef %1430, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 119, ptr noundef %1433, ptr noundef %1436, ptr noundef %1439, i32 noundef %1441) #10
  br label %1460

1443:                                             ; preds = %1421, %1414
  %1444 = load i32, ptr %36, align 4, !tbaa !5
  %1445 = call ptr @__errno_location() #11
  store i32 %1444, ptr %1445, align 4, !tbaa !5
  %1446 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1447 = load i32, ptr @test_count, align 4, !tbaa !5
  %1448 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1449 = load i32, ptr %1448, align 4, !tbaa !5
  %1450 = call ptr @s2n_strerror(i32 noundef %1449, ptr noundef @.str.3)
  %1451 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1452 = load i32, ptr %1451, align 4, !tbaa !5
  %1453 = call ptr @s2n_strerror_debug(i32 noundef %1452, ptr noundef @.str.3)
  %1454 = call ptr @__errno_location() #11
  %1455 = load i32, ptr %1454, align 4, !tbaa !5
  %1456 = call ptr @strerror(i32 noundef %1455) #10
  %1457 = call ptr @__errno_location() #11
  %1458 = load i32, ptr %1457, align 4, !tbaa !5
  %1459 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1446, ptr noundef @.str.4, i32 noundef %1447, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 119, ptr noundef %1450, ptr noundef %1453, ptr noundef %1456, i32 noundef %1458) #10
  br label %1460

1460:                                             ; preds = %1443, %1426
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %1461

1461:                                             ; preds = %1460
  br label %1462

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

1463:                                             ; No predecessors!
  br label %1464

1464:                                             ; preds = %1463
  br label %1465

1465:                                             ; preds = %1464, %1407
  br label %1466

1466:                                             ; preds = %1465
  br label %1467

1467:                                             ; preds = %1466
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #10
  call void @llvm.memset.p0.i64(ptr align 16 %37, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %38) #10
  store i16 0, ptr %38, align 2, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %1468 = getelementptr inbounds [16 x i16], ptr %37, i64 0, i64 0
  %1469 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %29, ptr noundef %1468, i16 noundef zeroext 15, ptr noundef %38)
  store i32 %1469, ptr %39, align 4, !tbaa !5
  br label %1470

1470:                                             ; preds = %1467
  br label %1471

1471:                                             ; preds = %1470
  br label %1472

1472:                                             ; preds = %1471
  %1473 = load i32, ptr @test_count, align 4, !tbaa !5
  %1474 = add nsw i32 %1473, 1
  store i32 %1474, ptr @test_count, align 4, !tbaa !5
  %1475 = load i32, ptr %39, align 4, !tbaa !5
  %1476 = icmp eq i32 %1475, -1
  br i1 %1476, label %1530, label %1477

1477:                                             ; preds = %1472
  br label %1478

1478:                                             ; preds = %1477
  br label %1479

1479:                                             ; preds = %1478
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  %1480 = call ptr @__errno_location() #11
  %1481 = load i32, ptr %1480, align 4, !tbaa !5
  store i32 %1481, ptr %40, align 4, !tbaa !5
  %1482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1483 = call i32 @s2n_print_stacktrace(ptr noundef %1482)
  %1484 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1485 = trunc i8 %1484 to i1
  br i1 %1485, label %1486, label %1508

1486:                                             ; preds = %1479
  %1487 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1488 = call i32 @fileno(ptr noundef %1487) #10
  %1489 = call i32 @isatty(i32 noundef %1488) #10
  %1490 = icmp ne i32 %1489, 0
  br i1 %1490, label %1491, label %1508

1491:                                             ; preds = %1486
  %1492 = load i32, ptr %40, align 4, !tbaa !5
  %1493 = call ptr @__errno_location() #11
  store i32 %1492, ptr %1493, align 4, !tbaa !5
  %1494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1495 = load i32, ptr @test_count, align 4, !tbaa !5
  %1496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1497 = load i32, ptr %1496, align 4, !tbaa !5
  %1498 = call ptr @s2n_strerror(i32 noundef %1497, ptr noundef @.str.3)
  %1499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1500 = load i32, ptr %1499, align 4, !tbaa !5
  %1501 = call ptr @s2n_strerror_debug(i32 noundef %1500, ptr noundef @.str.3)
  %1502 = call ptr @__errno_location() #11
  %1503 = load i32, ptr %1502, align 4, !tbaa !5
  %1504 = call ptr @strerror(i32 noundef %1503) #10
  %1505 = call ptr @__errno_location() #11
  %1506 = load i32, ptr %1505, align 4, !tbaa !5
  %1507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1494, ptr noundef @.str, i32 noundef %1495, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 127, ptr noundef %1498, ptr noundef %1501, ptr noundef %1504, i32 noundef %1506) #10
  br label %1525

1508:                                             ; preds = %1486, %1479
  %1509 = load i32, ptr %40, align 4, !tbaa !5
  %1510 = call ptr @__errno_location() #11
  store i32 %1509, ptr %1510, align 4, !tbaa !5
  %1511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1512 = load i32, ptr @test_count, align 4, !tbaa !5
  %1513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1514 = load i32, ptr %1513, align 4, !tbaa !5
  %1515 = call ptr @s2n_strerror(i32 noundef %1514, ptr noundef @.str.3)
  %1516 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1517 = load i32, ptr %1516, align 4, !tbaa !5
  %1518 = call ptr @s2n_strerror_debug(i32 noundef %1517, ptr noundef @.str.3)
  %1519 = call ptr @__errno_location() #11
  %1520 = load i32, ptr %1519, align 4, !tbaa !5
  %1521 = call ptr @strerror(i32 noundef %1520) #10
  %1522 = call ptr @__errno_location() #11
  %1523 = load i32, ptr %1522, align 4, !tbaa !5
  %1524 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1511, ptr noundef @.str.4, i32 noundef %1512, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 127, ptr noundef %1515, ptr noundef %1518, ptr noundef %1521, i32 noundef %1523) #10
  br label %1525

1525:                                             ; preds = %1508, %1491
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %1526

1526:                                             ; preds = %1525
  br label %1527

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

1528:                                             ; No predecessors!
  br label %1529

1529:                                             ; preds = %1528
  br label %1530

1530:                                             ; preds = %1529, %1472
  br label %1531

1531:                                             ; preds = %1530
  br label %1532

1532:                                             ; preds = %1531
  br label %1533

1533:                                             ; preds = %1532
  %1534 = load i32, ptr @test_count, align 4, !tbaa !5
  %1535 = add nsw i32 %1534, 1
  store i32 %1535, ptr @test_count, align 4, !tbaa !5
  %1536 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1537 = load i32, ptr %1536, align 4, !tbaa !5
  %1538 = icmp eq i32 %1537, 469762120
  br i1 %1538, label %1592, label %1539

1539:                                             ; preds = %1533
  br label %1540

1540:                                             ; preds = %1539
  br label %1541

1541:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  %1542 = call ptr @__errno_location() #11
  %1543 = load i32, ptr %1542, align 4, !tbaa !5
  store i32 %1543, ptr %41, align 4, !tbaa !5
  %1544 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1545 = call i32 @s2n_print_stacktrace(ptr noundef %1544)
  %1546 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1547 = trunc i8 %1546 to i1
  br i1 %1547, label %1548, label %1570

1548:                                             ; preds = %1541
  %1549 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1550 = call i32 @fileno(ptr noundef %1549) #10
  %1551 = call i32 @isatty(i32 noundef %1550) #10
  %1552 = icmp ne i32 %1551, 0
  br i1 %1552, label %1553, label %1570

1553:                                             ; preds = %1548
  %1554 = load i32, ptr %41, align 4, !tbaa !5
  %1555 = call ptr @__errno_location() #11
  store i32 %1554, ptr %1555, align 4, !tbaa !5
  %1556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1557 = load i32, ptr @test_count, align 4, !tbaa !5
  %1558 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1559 = load i32, ptr %1558, align 4, !tbaa !5
  %1560 = call ptr @s2n_strerror(i32 noundef %1559, ptr noundef @.str.3)
  %1561 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1562 = load i32, ptr %1561, align 4, !tbaa !5
  %1563 = call ptr @s2n_strerror_debug(i32 noundef %1562, ptr noundef @.str.3)
  %1564 = call ptr @__errno_location() #11
  %1565 = load i32, ptr %1564, align 4, !tbaa !5
  %1566 = call ptr @strerror(i32 noundef %1565) #10
  %1567 = call ptr @__errno_location() #11
  %1568 = load i32, ptr %1567, align 4, !tbaa !5
  %1569 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1556, ptr noundef @.str, i32 noundef %1557, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 127, ptr noundef %1560, ptr noundef %1563, ptr noundef %1566, i32 noundef %1568) #10
  br label %1587

1570:                                             ; preds = %1548, %1541
  %1571 = load i32, ptr %41, align 4, !tbaa !5
  %1572 = call ptr @__errno_location() #11
  store i32 %1571, ptr %1572, align 4, !tbaa !5
  %1573 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1574 = load i32, ptr @test_count, align 4, !tbaa !5
  %1575 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1576 = load i32, ptr %1575, align 4, !tbaa !5
  %1577 = call ptr @s2n_strerror(i32 noundef %1576, ptr noundef @.str.3)
  %1578 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1579 = load i32, ptr %1578, align 4, !tbaa !5
  %1580 = call ptr @s2n_strerror_debug(i32 noundef %1579, ptr noundef @.str.3)
  %1581 = call ptr @__errno_location() #11
  %1582 = load i32, ptr %1581, align 4, !tbaa !5
  %1583 = call ptr @strerror(i32 noundef %1582) #10
  %1584 = call ptr @__errno_location() #11
  %1585 = load i32, ptr %1584, align 4, !tbaa !5
  %1586 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1573, ptr noundef @.str.4, i32 noundef %1574, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 127, ptr noundef %1577, ptr noundef %1580, ptr noundef %1583, i32 noundef %1585) #10
  br label %1587

1587:                                             ; preds = %1570, %1553
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %1588

1588:                                             ; preds = %1587
  br label %1589

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

1590:                                             ; No predecessors!
  br label %1591

1591:                                             ; preds = %1590
  br label %1592

1592:                                             ; preds = %1591, %1533
  br label %1593

1593:                                             ; preds = %1592
  br label %1594

1594:                                             ; preds = %1593
  br label %1595

1595:                                             ; preds = %1594
  %1596 = load i32, ptr @test_count, align 4, !tbaa !5
  %1597 = add nsw i32 %1596, 1
  store i32 %1597, 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_debug(i32 noundef %1599, ptr noundef @.str.3)
  %1601 = icmp eq ptr %1600, null
  br i1 %1601, label %1602, label %1655

1602:                                             ; preds = %1595
  br label %1603

1603:                                             ; preds = %1602
  br label %1604

1604:                                             ; preds = %1603
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  %1605 = call ptr @__errno_location() #11
  %1606 = load i32, ptr %1605, align 4, !tbaa !5
  store i32 %1606, ptr %42, align 4, !tbaa !5
  %1607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1608 = call i32 @s2n_print_stacktrace(ptr noundef %1607)
  %1609 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1610 = trunc i8 %1609 to i1
  br i1 %1610, label %1611, label %1633

1611:                                             ; preds = %1604
  %1612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1613 = call i32 @fileno(ptr noundef %1612) #10
  %1614 = call i32 @isatty(i32 noundef %1613) #10
  %1615 = icmp ne i32 %1614, 0
  br i1 %1615, label %1616, label %1633

1616:                                             ; preds = %1611
  %1617 = load i32, ptr %42, align 4, !tbaa !5
  %1618 = call ptr @__errno_location() #11
  store i32 %1617, ptr %1618, align 4, !tbaa !5
  %1619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1620 = load i32, ptr @test_count, align 4, !tbaa !5
  %1621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1622 = load i32, ptr %1621, align 4, !tbaa !5
  %1623 = call ptr @s2n_strerror(i32 noundef %1622, ptr noundef @.str.3)
  %1624 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1625 = load i32, ptr %1624, align 4, !tbaa !5
  %1626 = call ptr @s2n_strerror_debug(i32 noundef %1625, ptr noundef @.str.3)
  %1627 = call ptr @__errno_location() #11
  %1628 = load i32, ptr %1627, align 4, !tbaa !5
  %1629 = call ptr @strerror(i32 noundef %1628) #10
  %1630 = call ptr @__errno_location() #11
  %1631 = load i32, ptr %1630, align 4, !tbaa !5
  %1632 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1619, ptr noundef @.str, i32 noundef %1620, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 127, ptr noundef %1623, ptr noundef %1626, ptr noundef %1629, i32 noundef %1631) #10
  br label %1650

1633:                                             ; preds = %1611, %1604
  %1634 = load i32, ptr %42, align 4, !tbaa !5
  %1635 = call ptr @__errno_location() #11
  store i32 %1634, ptr %1635, align 4, !tbaa !5
  %1636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1637 = load i32, ptr @test_count, align 4, !tbaa !5
  %1638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1639 = load i32, ptr %1638, align 4, !tbaa !5
  %1640 = call ptr @s2n_strerror(i32 noundef %1639, ptr noundef @.str.3)
  %1641 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1642 = load i32, ptr %1641, align 4, !tbaa !5
  %1643 = call ptr @s2n_strerror_debug(i32 noundef %1642, ptr noundef @.str.3)
  %1644 = call ptr @__errno_location() #11
  %1645 = load i32, ptr %1644, align 4, !tbaa !5
  %1646 = call ptr @strerror(i32 noundef %1645) #10
  %1647 = call ptr @__errno_location() #11
  %1648 = load i32, ptr %1647, align 4, !tbaa !5
  %1649 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1636, ptr noundef @.str.4, i32 noundef %1637, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 127, ptr noundef %1640, ptr noundef %1643, ptr noundef %1646, i32 noundef %1648) #10
  br label %1650

1650:                                             ; preds = %1633, %1616
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %1651

1651:                                             ; preds = %1650
  br label %1652

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

1653:                                             ; No predecessors!
  br label %1654

1654:                                             ; preds = %1653
  br label %1655

1655:                                             ; preds = %1654, %1595
  br label %1656

1656:                                             ; preds = %1655
  br label %1657

1657:                                             ; preds = %1656
  br label %1658

1658:                                             ; preds = %1657
  br label %1659

1659:                                             ; preds = %1658
  br label %1660

1660:                                             ; preds = %1659
  %1661 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %1661, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %1662 = call ptr @__errno_location() #11
  store i32 0, ptr %1662, align 4, !tbaa !5
  br label %1663

1663:                                             ; preds = %1660
  br label %1664

1664:                                             ; preds = %1663
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

1666:                                             ; preds = %1665
  br label %1667

1667:                                             ; preds = %1666
  %1668 = load i32, ptr @test_count, align 4, !tbaa !5
  %1669 = add nsw i32 %1668, 1
  store i32 %1669, ptr @test_count, align 4, !tbaa !5
  %1670 = load i16, ptr %38, align 2, !tbaa !16
  %1671 = zext i16 %1670 to i32
  %1672 = icmp eq i32 %1671, 0
  br i1 %1672, label %1726, label %1673

1673:                                             ; preds = %1667
  br label %1674

1674:                                             ; preds = %1673
  br label %1675

1675:                                             ; preds = %1674
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %1676 = call ptr @__errno_location() #11
  %1677 = load i32, ptr %1676, align 4, !tbaa !5
  store i32 %1677, ptr %43, align 4, !tbaa !5
  %1678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1679 = call i32 @s2n_print_stacktrace(ptr noundef %1678)
  %1680 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1681 = trunc i8 %1680 to i1
  br i1 %1681, label %1682, label %1704

1682:                                             ; preds = %1675
  %1683 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1684 = call i32 @fileno(ptr noundef %1683) #10
  %1685 = call i32 @isatty(i32 noundef %1684) #10
  %1686 = icmp ne i32 %1685, 0
  br i1 %1686, label %1687, label %1704

1687:                                             ; preds = %1682
  %1688 = load i32, ptr %43, align 4, !tbaa !5
  %1689 = call ptr @__errno_location() #11
  store i32 %1688, ptr %1689, align 4, !tbaa !5
  %1690 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1691 = load i32, ptr @test_count, align 4, !tbaa !5
  %1692 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1693 = load i32, ptr %1692, align 4, !tbaa !5
  %1694 = call ptr @s2n_strerror(i32 noundef %1693, ptr noundef @.str.3)
  %1695 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1696 = load i32, ptr %1695, align 4, !tbaa !5
  %1697 = call ptr @s2n_strerror_debug(i32 noundef %1696, ptr noundef @.str.3)
  %1698 = call ptr @__errno_location() #11
  %1699 = load i32, ptr %1698, align 4, !tbaa !5
  %1700 = call ptr @strerror(i32 noundef %1699) #10
  %1701 = call ptr @__errno_location() #11
  %1702 = load i32, ptr %1701, align 4, !tbaa !5
  %1703 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1690, ptr noundef @.str, i32 noundef %1691, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 128, ptr noundef %1694, ptr noundef %1697, ptr noundef %1700, i32 noundef %1702) #10
  br label %1721

1704:                                             ; preds = %1682, %1675
  %1705 = load i32, ptr %43, align 4, !tbaa !5
  %1706 = call ptr @__errno_location() #11
  store i32 %1705, ptr %1706, align 4, !tbaa !5
  %1707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1708 = load i32, ptr @test_count, align 4, !tbaa !5
  %1709 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1710 = load i32, ptr %1709, align 4, !tbaa !5
  %1711 = call ptr @s2n_strerror(i32 noundef %1710, ptr noundef @.str.3)
  %1712 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1713 = load i32, ptr %1712, align 4, !tbaa !5
  %1714 = call ptr @s2n_strerror_debug(i32 noundef %1713, ptr noundef @.str.3)
  %1715 = call ptr @__errno_location() #11
  %1716 = load i32, ptr %1715, align 4, !tbaa !5
  %1717 = call ptr @strerror(i32 noundef %1716) #10
  %1718 = call ptr @__errno_location() #11
  %1719 = load i32, ptr %1718, align 4, !tbaa !5
  %1720 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1707, ptr noundef @.str.4, i32 noundef %1708, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 128, ptr noundef %1711, ptr noundef %1714, ptr noundef %1717, i32 noundef %1719) #10
  br label %1721

1721:                                             ; preds = %1704, %1687
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %1722

1722:                                             ; preds = %1721
  br label %1723

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

1724:                                             ; No predecessors!
  br label %1725

1725:                                             ; preds = %1724
  br label %1726

1726:                                             ; preds = %1725, %1667
  br label %1727

1727:                                             ; preds = %1726
  br label %1728

1728:                                             ; preds = %1727
  br label %1729

1729:                                             ; preds = %1728
  %1730 = load i32, ptr @test_count, align 4, !tbaa !5
  %1731 = add nsw i32 %1730, 1
  store i32 %1731, ptr @test_count, align 4, !tbaa !5
  %1732 = call i32 @s2n_stuffer_reread(ptr noundef %34)
  %1733 = icmp eq i32 %1732, -1
  br i1 %1733, label %1734, label %1787

1734:                                             ; preds = %1729
  br label %1735

1735:                                             ; preds = %1734
  br label %1736

1736:                                             ; preds = %1735
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  %1737 = call ptr @__errno_location() #11
  %1738 = load i32, ptr %1737, align 4, !tbaa !5
  store i32 %1738, ptr %44, align 4, !tbaa !5
  %1739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1740 = call i32 @s2n_print_stacktrace(ptr noundef %1739)
  %1741 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1742 = trunc i8 %1741 to i1
  br i1 %1742, label %1743, label %1765

1743:                                             ; preds = %1736
  %1744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1745 = call i32 @fileno(ptr noundef %1744) #10
  %1746 = call i32 @isatty(i32 noundef %1745) #10
  %1747 = icmp ne i32 %1746, 0
  br i1 %1747, label %1748, label %1765

1748:                                             ; preds = %1743
  %1749 = load i32, ptr %44, align 4, !tbaa !5
  %1750 = call ptr @__errno_location() #11
  store i32 %1749, ptr %1750, align 4, !tbaa !5
  %1751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1752 = load i32, ptr @test_count, align 4, !tbaa !5
  %1753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1754 = load i32, ptr %1753, align 4, !tbaa !5
  %1755 = call ptr @s2n_strerror(i32 noundef %1754, ptr noundef @.str.3)
  %1756 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1757 = load i32, ptr %1756, align 4, !tbaa !5
  %1758 = call ptr @s2n_strerror_debug(i32 noundef %1757, ptr noundef @.str.3)
  %1759 = call ptr @__errno_location() #11
  %1760 = load i32, ptr %1759, align 4, !tbaa !5
  %1761 = call ptr @strerror(i32 noundef %1760) #10
  %1762 = call ptr @__errno_location() #11
  %1763 = load i32, ptr %1762, align 4, !tbaa !5
  %1764 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1751, ptr noundef @.str, i32 noundef %1752, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 130, ptr noundef %1755, ptr noundef %1758, ptr noundef %1761, i32 noundef %1763) #10
  br label %1782

1765:                                             ; preds = %1743, %1736
  %1766 = load i32, ptr %44, align 4, !tbaa !5
  %1767 = call ptr @__errno_location() #11
  store i32 %1766, ptr %1767, align 4, !tbaa !5
  %1768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1769 = load i32, ptr @test_count, align 4, !tbaa !5
  %1770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1771 = load i32, ptr %1770, align 4, !tbaa !5
  %1772 = call ptr @s2n_strerror(i32 noundef %1771, ptr noundef @.str.3)
  %1773 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1774 = load i32, ptr %1773, align 4, !tbaa !5
  %1775 = call ptr @s2n_strerror_debug(i32 noundef %1774, ptr noundef @.str.3)
  %1776 = call ptr @__errno_location() #11
  %1777 = load i32, ptr %1776, align 4, !tbaa !5
  %1778 = call ptr @strerror(i32 noundef %1777) #10
  %1779 = call ptr @__errno_location() #11
  %1780 = load i32, ptr %1779, align 4, !tbaa !5
  %1781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1768, ptr noundef @.str.4, i32 noundef %1769, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 130, ptr noundef %1772, ptr noundef %1775, ptr noundef %1778, i32 noundef %1780) #10
  br label %1782

1782:                                             ; preds = %1765, %1748
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %1783

1783:                                             ; preds = %1782
  br label %1784

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

1785:                                             ; No predecessors!
  br label %1786

1786:                                             ; preds = %1785
  br label %1787

1787:                                             ; preds = %1786, %1729
  br label %1788

1788:                                             ; preds = %1787
  br label %1789

1789:                                             ; preds = %1788
  br label %1790

1790:                                             ; preds = %1789
  %1791 = load i32, ptr @test_count, align 4, !tbaa !5
  %1792 = add nsw i32 %1791, 1
  store i32 %1792, ptr @test_count, align 4, !tbaa !5
  %1793 = getelementptr inbounds [16 x i16], ptr %37, i64 0, i64 0
  %1794 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %29, ptr noundef %1793, i16 noundef zeroext 16, ptr noundef %38)
  %1795 = icmp eq i32 %1794, -1
  br i1 %1795, label %1796, label %1849

1796:                                             ; preds = %1790
  br label %1797

1797:                                             ; preds = %1796
  br label %1798

1798:                                             ; preds = %1797
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  %1799 = call ptr @__errno_location() #11
  %1800 = load i32, ptr %1799, align 4, !tbaa !5
  store i32 %1800, ptr %45, align 4, !tbaa !5
  %1801 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1802 = call i32 @s2n_print_stacktrace(ptr noundef %1801)
  %1803 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1804 = trunc i8 %1803 to i1
  br i1 %1804, label %1805, label %1827

1805:                                             ; preds = %1798
  %1806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1807 = call i32 @fileno(ptr noundef %1806) #10
  %1808 = call i32 @isatty(i32 noundef %1807) #10
  %1809 = icmp ne i32 %1808, 0
  br i1 %1809, label %1810, label %1827

1810:                                             ; preds = %1805
  %1811 = load i32, ptr %45, align 4, !tbaa !5
  %1812 = call ptr @__errno_location() #11
  store i32 %1811, ptr %1812, align 4, !tbaa !5
  %1813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1814 = load i32, ptr @test_count, align 4, !tbaa !5
  %1815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1816 = load i32, ptr %1815, align 4, !tbaa !5
  %1817 = call ptr @s2n_strerror(i32 noundef %1816, ptr noundef @.str.3)
  %1818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1819 = load i32, ptr %1818, align 4, !tbaa !5
  %1820 = call ptr @s2n_strerror_debug(i32 noundef %1819, ptr noundef @.str.3)
  %1821 = call ptr @__errno_location() #11
  %1822 = load i32, ptr %1821, align 4, !tbaa !5
  %1823 = call ptr @strerror(i32 noundef %1822) #10
  %1824 = call ptr @__errno_location() #11
  %1825 = load i32, ptr %1824, align 4, !tbaa !5
  %1826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1813, ptr noundef @.str, i32 noundef %1814, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 134, ptr noundef %1817, ptr noundef %1820, ptr noundef %1823, i32 noundef %1825) #10
  br label %1844

1827:                                             ; preds = %1805, %1798
  %1828 = load i32, ptr %45, align 4, !tbaa !5
  %1829 = call ptr @__errno_location() #11
  store i32 %1828, ptr %1829, align 4, !tbaa !5
  %1830 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1831 = load i32, ptr @test_count, align 4, !tbaa !5
  %1832 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1833 = load i32, ptr %1832, align 4, !tbaa !5
  %1834 = call ptr @s2n_strerror(i32 noundef %1833, ptr noundef @.str.3)
  %1835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1836 = load i32, ptr %1835, align 4, !tbaa !5
  %1837 = call ptr @s2n_strerror_debug(i32 noundef %1836, ptr noundef @.str.3)
  %1838 = call ptr @__errno_location() #11
  %1839 = load i32, ptr %1838, align 4, !tbaa !5
  %1840 = call ptr @strerror(i32 noundef %1839) #10
  %1841 = call ptr @__errno_location() #11
  %1842 = load i32, ptr %1841, align 4, !tbaa !5
  %1843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1830, ptr noundef @.str.4, i32 noundef %1831, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 134, ptr noundef %1834, ptr noundef %1837, ptr noundef %1840, i32 noundef %1842) #10
  br label %1844

1844:                                             ; preds = %1827, %1810
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %1845

1845:                                             ; preds = %1844
  br label %1846

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

1847:                                             ; No predecessors!
  br label %1848

1848:                                             ; preds = %1847
  br label %1849

1849:                                             ; preds = %1848, %1790
  br label %1850

1850:                                             ; preds = %1849
  br label %1851

1851:                                             ; preds = %1850
  br label %1852

1852:                                             ; preds = %1851
  %1853 = load i32, ptr @test_count, align 4, !tbaa !5
  %1854 = add nsw i32 %1853, 1
  store i32 %1854, ptr @test_count, align 4, !tbaa !5
  %1855 = load i16, ptr %38, align 2, !tbaa !16
  %1856 = zext i16 %1855 to i32
  %1857 = icmp eq i32 %1856, 16
  br i1 %1857, label %1911, label %1858

1858:                                             ; preds = %1852
  br label %1859

1859:                                             ; preds = %1858
  br label %1860

1860:                                             ; preds = %1859
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %1861 = call ptr @__errno_location() #11
  %1862 = load i32, ptr %1861, align 4, !tbaa !5
  store i32 %1862, ptr %46, align 4, !tbaa !5
  %1863 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1864 = call i32 @s2n_print_stacktrace(ptr noundef %1863)
  %1865 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1866 = trunc i8 %1865 to i1
  br i1 %1866, label %1867, label %1889

1867:                                             ; preds = %1860
  %1868 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1869 = call i32 @fileno(ptr noundef %1868) #10
  %1870 = call i32 @isatty(i32 noundef %1869) #10
  %1871 = icmp ne i32 %1870, 0
  br i1 %1871, label %1872, label %1889

1872:                                             ; preds = %1867
  %1873 = load i32, ptr %46, align 4, !tbaa !5
  %1874 = call ptr @__errno_location() #11
  store i32 %1873, ptr %1874, align 4, !tbaa !5
  %1875 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1876 = load i32, ptr @test_count, align 4, !tbaa !5
  %1877 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1878 = load i32, ptr %1877, align 4, !tbaa !5
  %1879 = call ptr @s2n_strerror(i32 noundef %1878, ptr noundef @.str.3)
  %1880 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1881 = load i32, ptr %1880, align 4, !tbaa !5
  %1882 = call ptr @s2n_strerror_debug(i32 noundef %1881, ptr noundef @.str.3)
  %1883 = call ptr @__errno_location() #11
  %1884 = load i32, ptr %1883, align 4, !tbaa !5
  %1885 = call ptr @strerror(i32 noundef %1884) #10
  %1886 = call ptr @__errno_location() #11
  %1887 = load i32, ptr %1886, align 4, !tbaa !5
  %1888 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1875, ptr noundef @.str, i32 noundef %1876, ptr noundef @.str.30, ptr noundef @.str.2, i32 noundef 135, ptr noundef %1879, ptr noundef %1882, ptr noundef %1885, i32 noundef %1887) #10
  br label %1906

1889:                                             ; preds = %1867, %1860
  %1890 = load i32, ptr %46, align 4, !tbaa !5
  %1891 = call ptr @__errno_location() #11
  store i32 %1890, ptr %1891, align 4, !tbaa !5
  %1892 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1893 = load i32, ptr @test_count, align 4, !tbaa !5
  %1894 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1895 = load i32, ptr %1894, align 4, !tbaa !5
  %1896 = call ptr @s2n_strerror(i32 noundef %1895, ptr noundef @.str.3)
  %1897 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1898 = load i32, ptr %1897, align 4, !tbaa !5
  %1899 = call ptr @s2n_strerror_debug(i32 noundef %1898, ptr noundef @.str.3)
  %1900 = call ptr @__errno_location() #11
  %1901 = load i32, ptr %1900, align 4, !tbaa !5
  %1902 = call ptr @strerror(i32 noundef %1901) #10
  %1903 = call ptr @__errno_location() #11
  %1904 = load i32, ptr %1903, align 4, !tbaa !5
  %1905 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1892, ptr noundef @.str.4, i32 noundef %1893, ptr noundef @.str.30, ptr noundef @.str.2, i32 noundef 135, ptr noundef %1896, ptr noundef %1899, ptr noundef %1902, i32 noundef %1904) #10
  br label %1906

1906:                                             ; preds = %1889, %1872
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %1907

1907:                                             ; preds = %1906
  br label %1908

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

1909:                                             ; No predecessors!
  br label %1910

1910:                                             ; preds = %1909
  br label %1911

1911:                                             ; preds = %1910, %1852
  br label %1912

1912:                                             ; preds = %1911
  br label %1913

1913:                                             ; preds = %1912
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 34, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 808, ptr %29) #10
  call void @llvm.lifetime.start.p0(i64 808, ptr %47) #10
  call void @llvm.memset.p0.i64(ptr align 8 %47, i8 0, i64 808, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #10
  call void @llvm.memset.p0.i64(ptr align 16 %48, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %49) #10
  store i16 0, ptr %49, align 2, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  %1914 = getelementptr inbounds [16 x i16], ptr %48, i64 0, i64 0
  %1915 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %47, ptr noundef %1914, i16 noundef zeroext 16, ptr noundef %49)
  store i32 %1915, ptr %50, align 4, !tbaa !5
  br label %1916

1916:                                             ; preds = %1913
  br label %1917

1917:                                             ; preds = %1916
  br label %1918

1918:                                             ; preds = %1917
  %1919 = load i32, ptr @test_count, align 4, !tbaa !5
  %1920 = add nsw i32 %1919, 1
  store i32 %1920, ptr @test_count, align 4, !tbaa !5
  %1921 = load i32, ptr %50, align 4, !tbaa !5
  %1922 = icmp eq i32 %1921, -1
  br i1 %1922, label %1976, label %1923

1923:                                             ; preds = %1918
  br label %1924

1924:                                             ; preds = %1923
  br label %1925

1925:                                             ; preds = %1924
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %1926 = call ptr @__errno_location() #11
  %1927 = load i32, ptr %1926, align 4, !tbaa !5
  store i32 %1927, ptr %51, align 4, !tbaa !5
  %1928 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1929 = call i32 @s2n_print_stacktrace(ptr noundef %1928)
  %1930 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1931 = trunc i8 %1930 to i1
  br i1 %1931, label %1932, label %1954

1932:                                             ; preds = %1925
  %1933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1934 = call i32 @fileno(ptr noundef %1933) #10
  %1935 = call i32 @isatty(i32 noundef %1934) #10
  %1936 = icmp ne i32 %1935, 0
  br i1 %1936, label %1937, label %1954

1937:                                             ; preds = %1932
  %1938 = load i32, ptr %51, align 4, !tbaa !5
  %1939 = call ptr @__errno_location() #11
  store i32 %1938, ptr %1939, align 4, !tbaa !5
  %1940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1941 = load i32, ptr @test_count, align 4, !tbaa !5
  %1942 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1943 = load i32, ptr %1942, align 4, !tbaa !5
  %1944 = call ptr @s2n_strerror(i32 noundef %1943, ptr noundef @.str.3)
  %1945 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1946 = load i32, ptr %1945, align 4, !tbaa !5
  %1947 = call ptr @s2n_strerror_debug(i32 noundef %1946, ptr noundef @.str.3)
  %1948 = call ptr @__errno_location() #11
  %1949 = load i32, ptr %1948, align 4, !tbaa !5
  %1950 = call ptr @strerror(i32 noundef %1949) #10
  %1951 = call ptr @__errno_location() #11
  %1952 = load i32, ptr %1951, align 4, !tbaa !5
  %1953 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1940, ptr noundef @.str, i32 noundef %1941, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 146, ptr noundef %1944, ptr noundef %1947, ptr noundef %1950, i32 noundef %1952) #10
  br label %1971

1954:                                             ; preds = %1932, %1925
  %1955 = load i32, ptr %51, align 4, !tbaa !5
  %1956 = call ptr @__errno_location() #11
  store i32 %1955, ptr %1956, align 4, !tbaa !5
  %1957 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1958 = load i32, ptr @test_count, align 4, !tbaa !5
  %1959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1960 = load i32, ptr %1959, align 4, !tbaa !5
  %1961 = call ptr @s2n_strerror(i32 noundef %1960, ptr noundef @.str.3)
  %1962 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1963 = load i32, ptr %1962, align 4, !tbaa !5
  %1964 = call ptr @s2n_strerror_debug(i32 noundef %1963, ptr noundef @.str.3)
  %1965 = call ptr @__errno_location() #11
  %1966 = load i32, ptr %1965, align 4, !tbaa !5
  %1967 = call ptr @strerror(i32 noundef %1966) #10
  %1968 = call ptr @__errno_location() #11
  %1969 = load i32, ptr %1968, align 4, !tbaa !5
  %1970 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1957, ptr noundef @.str.4, i32 noundef %1958, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 146, ptr noundef %1961, ptr noundef %1964, ptr noundef %1967, i32 noundef %1969) #10
  br label %1971

1971:                                             ; preds = %1954, %1937
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %1972

1972:                                             ; preds = %1971
  br label %1973

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

1974:                                             ; No predecessors!
  br label %1975

1975:                                             ; preds = %1974
  br label %1976

1976:                                             ; preds = %1975, %1918
  br label %1977

1977:                                             ; preds = %1976
  br label %1978

1978:                                             ; preds = %1977
  br label %1979

1979:                                             ; preds = %1978
  %1980 = load i32, ptr @test_count, align 4, !tbaa !5
  %1981 = add nsw i32 %1980, 1
  store i32 %1981, ptr @test_count, align 4, !tbaa !5
  %1982 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1983 = load i32, ptr %1982, align 4, !tbaa !5
  %1984 = icmp eq i32 %1983, 469762072
  br i1 %1984, label %2038, label %1985

1985:                                             ; preds = %1979
  br label %1986

1986:                                             ; preds = %1985
  br label %1987

1987:                                             ; preds = %1986
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %1988 = call ptr @__errno_location() #11
  %1989 = load i32, ptr %1988, align 4, !tbaa !5
  store i32 %1989, ptr %52, align 4, !tbaa !5
  %1990 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1991 = call i32 @s2n_print_stacktrace(ptr noundef %1990)
  %1992 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1993 = trunc i8 %1992 to i1
  br i1 %1993, label %1994, label %2016

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

1999:                                             ; preds = %1994
  %2000 = load i32, ptr %52, align 4, !tbaa !5
  %2001 = call ptr @__errno_location() #11
  store i32 %2000, ptr %2001, align 4, !tbaa !5
  %2002 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2003 = load i32, ptr @test_count, align 4, !tbaa !5
  %2004 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2005 = load i32, ptr %2004, align 4, !tbaa !5
  %2006 = call ptr @s2n_strerror(i32 noundef %2005, ptr noundef @.str.3)
  %2007 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2008 = load i32, ptr %2007, align 4, !tbaa !5
  %2009 = call ptr @s2n_strerror_debug(i32 noundef %2008, ptr noundef @.str.3)
  %2010 = call ptr @__errno_location() #11
  %2011 = load i32, ptr %2010, align 4, !tbaa !5
  %2012 = call ptr @strerror(i32 noundef %2011) #10
  %2013 = call ptr @__errno_location() #11
  %2014 = load i32, ptr %2013, align 4, !tbaa !5
  %2015 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2002, ptr noundef @.str, i32 noundef %2003, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 146, ptr noundef %2006, ptr noundef %2009, ptr noundef %2012, i32 noundef %2014) #10
  br label %2033

2016:                                             ; preds = %1994, %1987
  %2017 = load i32, ptr %52, align 4, !tbaa !5
  %2018 = call ptr @__errno_location() #11
  store i32 %2017, ptr %2018, align 4, !tbaa !5
  %2019 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2020 = load i32, ptr @test_count, align 4, !tbaa !5
  %2021 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2022 = load i32, ptr %2021, align 4, !tbaa !5
  %2023 = call ptr @s2n_strerror(i32 noundef %2022, ptr noundef @.str.3)
  %2024 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2025 = load i32, ptr %2024, align 4, !tbaa !5
  %2026 = call ptr @s2n_strerror_debug(i32 noundef %2025, ptr noundef @.str.3)
  %2027 = call ptr @__errno_location() #11
  %2028 = load i32, ptr %2027, align 4, !tbaa !5
  %2029 = call ptr @strerror(i32 noundef %2028) #10
  %2030 = call ptr @__errno_location() #11
  %2031 = load i32, ptr %2030, align 4, !tbaa !5
  %2032 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2019, ptr noundef @.str.4, i32 noundef %2020, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 146, ptr noundef %2023, ptr noundef %2026, ptr noundef %2029, i32 noundef %2031) #10
  br label %2033

2033:                                             ; preds = %2016, %1999
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %2034

2034:                                             ; preds = %2033
  br label %2035

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

2036:                                             ; No predecessors!
  br label %2037

2037:                                             ; preds = %2036
  br label %2038

2038:                                             ; preds = %2037, %1979
  br label %2039

2039:                                             ; preds = %2038
  br label %2040

2040:                                             ; preds = %2039
  br label %2041

2041:                                             ; preds = %2040
  %2042 = load i32, ptr @test_count, align 4, !tbaa !5
  %2043 = add nsw i32 %2042, 1
  store i32 %2043, ptr @test_count, align 4, !tbaa !5
  %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.3)
  %2047 = icmp eq ptr %2046, null
  br i1 %2047, label %2048, label %2101

2048:                                             ; preds = %2041
  br label %2049

2049:                                             ; preds = %2048
  br label %2050

2050:                                             ; preds = %2049
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #10
  %2051 = call ptr @__errno_location() #11
  %2052 = load i32, ptr %2051, align 4, !tbaa !5
  store i32 %2052, ptr %53, align 4, !tbaa !5
  %2053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2054 = call i32 @s2n_print_stacktrace(ptr noundef %2053)
  %2055 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2056 = trunc i8 %2055 to i1
  br i1 %2056, label %2057, label %2079

2057:                                             ; preds = %2050
  %2058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2059 = call i32 @fileno(ptr noundef %2058) #10
  %2060 = call i32 @isatty(i32 noundef %2059) #10
  %2061 = icmp ne i32 %2060, 0
  br i1 %2061, label %2062, label %2079

2062:                                             ; preds = %2057
  %2063 = load i32, ptr %53, align 4, !tbaa !5
  %2064 = call ptr @__errno_location() #11
  store i32 %2063, ptr %2064, align 4, !tbaa !5
  %2065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2066 = load i32, ptr @test_count, align 4, !tbaa !5
  %2067 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2068 = load i32, ptr %2067, align 4, !tbaa !5
  %2069 = call ptr @s2n_strerror(i32 noundef %2068, ptr noundef @.str.3)
  %2070 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2071 = load i32, ptr %2070, align 4, !tbaa !5
  %2072 = call ptr @s2n_strerror_debug(i32 noundef %2071, ptr noundef @.str.3)
  %2073 = call ptr @__errno_location() #11
  %2074 = load i32, ptr %2073, align 4, !tbaa !5
  %2075 = call ptr @strerror(i32 noundef %2074) #10
  %2076 = call ptr @__errno_location() #11
  %2077 = load i32, ptr %2076, align 4, !tbaa !5
  %2078 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2065, ptr noundef @.str, i32 noundef %2066, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 146, ptr noundef %2069, ptr noundef %2072, ptr noundef %2075, i32 noundef %2077) #10
  br label %2096

2079:                                             ; preds = %2057, %2050
  %2080 = load i32, ptr %53, align 4, !tbaa !5
  %2081 = call ptr @__errno_location() #11
  store i32 %2080, ptr %2081, align 4, !tbaa !5
  %2082 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2083 = load i32, ptr @test_count, align 4, !tbaa !5
  %2084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2085 = load i32, ptr %2084, align 4, !tbaa !5
  %2086 = call ptr @s2n_strerror(i32 noundef %2085, ptr noundef @.str.3)
  %2087 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2088 = load i32, ptr %2087, align 4, !tbaa !5
  %2089 = call ptr @s2n_strerror_debug(i32 noundef %2088, ptr noundef @.str.3)
  %2090 = call ptr @__errno_location() #11
  %2091 = load i32, ptr %2090, align 4, !tbaa !5
  %2092 = call ptr @strerror(i32 noundef %2091) #10
  %2093 = call ptr @__errno_location() #11
  %2094 = load i32, ptr %2093, align 4, !tbaa !5
  %2095 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2082, ptr noundef @.str.4, i32 noundef %2083, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 146, ptr noundef %2086, ptr noundef %2089, ptr noundef %2092, i32 noundef %2094) #10
  br label %2096

2096:                                             ; preds = %2079, %2062
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #10
  br label %2097

2097:                                             ; preds = %2096
  br label %2098

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

2099:                                             ; No predecessors!
  br label %2100

2100:                                             ; preds = %2099
  br label %2101

2101:                                             ; preds = %2100, %2041
  br label %2102

2102:                                             ; preds = %2101
  br label %2103

2103:                                             ; preds = %2102
  br label %2104

2104:                                             ; preds = %2103
  br label %2105

2105:                                             ; preds = %2104
  br label %2106

2106:                                             ; preds = %2105
  %2107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %2107, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %2108 = call ptr @__errno_location() #11
  store i32 0, ptr %2108, align 4, !tbaa !5
  br label %2109

2109:                                             ; preds = %2106
  br label %2110

2110:                                             ; preds = %2109
  br label %2111

2111:                                             ; preds = %2110
  br label %2112

2112:                                             ; preds = %2111
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 808, ptr %47) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #10
  store i32 0, ptr %54, align 4, !tbaa !5
  br label %2113

2113:                                             ; preds = %3229, %2112
  %2114 = load i32, ptr %54, align 4, !tbaa !5
  %2115 = icmp sle i32 %2114, 1
  br i1 %2115, label %2117, label %2116

2116:                                             ; preds = %2113
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #10
  br label %3232

2117:                                             ; preds = %2113
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %2118 = call ptr @s2n_config_new()
  store ptr %2118, ptr %55, align 8, !tbaa !9
  br label %2119

2119:                                             ; preds = %2117
  %2120 = load i32, ptr @test_count, align 4, !tbaa !5
  %2121 = add nsw i32 %2120, 1
  store i32 %2121, ptr @test_count, align 4, !tbaa !5
  %2122 = load ptr, ptr %55, align 8, !tbaa !9
  %2123 = load ptr, ptr %9, align 8, !tbaa !9
  %2124 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %2122, ptr noundef %2123)
  %2125 = icmp eq i32 %2124, -1
  br i1 %2125, label %2126, label %2179

2126:                                             ; preds = %2119
  br label %2127

2127:                                             ; preds = %2126
  br label %2128

2128:                                             ; preds = %2127
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #10
  %2129 = call ptr @__errno_location() #11
  %2130 = load i32, ptr %2129, align 4, !tbaa !5
  store i32 %2130, ptr %56, align 4, !tbaa !5
  %2131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2132 = call i32 @s2n_print_stacktrace(ptr noundef %2131)
  %2133 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2134 = trunc i8 %2133 to i1
  br i1 %2134, label %2135, label %2157

2135:                                             ; preds = %2128
  %2136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2137 = call i32 @fileno(ptr noundef %2136) #10
  %2138 = call i32 @isatty(i32 noundef %2137) #10
  %2139 = icmp ne i32 %2138, 0
  br i1 %2139, label %2140, label %2157

2140:                                             ; preds = %2135
  %2141 = load i32, ptr %56, align 4, !tbaa !5
  %2142 = call ptr @__errno_location() #11
  store i32 %2141, ptr %2142, align 4, !tbaa !5
  %2143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2144 = load i32, ptr @test_count, align 4, !tbaa !5
  %2145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2146 = load i32, ptr %2145, align 4, !tbaa !5
  %2147 = call ptr @s2n_strerror(i32 noundef %2146, ptr noundef @.str.3)
  %2148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2149 = load i32, ptr %2148, align 4, !tbaa !5
  %2150 = call ptr @s2n_strerror_debug(i32 noundef %2149, ptr noundef @.str.3)
  %2151 = call ptr @__errno_location() #11
  %2152 = load i32, ptr %2151, align 4, !tbaa !5
  %2153 = call ptr @strerror(i32 noundef %2152) #10
  %2154 = call ptr @__errno_location() #11
  %2155 = load i32, ptr %2154, align 4, !tbaa !5
  %2156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2143, ptr noundef @.str, i32 noundef %2144, ptr noundef @.str.32, ptr noundef @.str.2, i32 noundef 152, ptr noundef %2147, ptr noundef %2150, ptr noundef %2153, i32 noundef %2155) #10
  br label %2174

2157:                                             ; preds = %2135, %2128
  %2158 = load i32, ptr %56, align 4, !tbaa !5
  %2159 = call ptr @__errno_location() #11
  store i32 %2158, ptr %2159, align 4, !tbaa !5
  %2160 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2161 = load i32, ptr @test_count, align 4, !tbaa !5
  %2162 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2163 = load i32, ptr %2162, align 4, !tbaa !5
  %2164 = call ptr @s2n_strerror(i32 noundef %2163, ptr noundef @.str.3)
  %2165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2166 = load i32, ptr %2165, align 4, !tbaa !5
  %2167 = call ptr @s2n_strerror_debug(i32 noundef %2166, ptr noundef @.str.3)
  %2168 = call ptr @__errno_location() #11
  %2169 = load i32, ptr %2168, align 4, !tbaa !5
  %2170 = call ptr @strerror(i32 noundef %2169) #10
  %2171 = call ptr @__errno_location() #11
  %2172 = load i32, ptr %2171, align 4, !tbaa !5
  %2173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2160, ptr noundef @.str.4, i32 noundef %2161, ptr noundef @.str.32, ptr noundef @.str.2, i32 noundef 152, ptr noundef %2164, ptr noundef %2167, ptr noundef %2170, i32 noundef %2172) #10
  br label %2174

2174:                                             ; preds = %2157, %2140
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %2175

2175:                                             ; preds = %2174
  br label %2176

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

2177:                                             ; No predecessors!
  br label %2178

2178:                                             ; preds = %2177
  br label %2179

2179:                                             ; preds = %2178, %2119
  br label %2180

2180:                                             ; preds = %2179
  br label %2181

2181:                                             ; preds = %2180
  %2182 = load i32, ptr %54, align 4, !tbaa !5
  %2183 = icmp ne i32 %2182, 0
  br i1 %2183, label %2184, label %2247

2184:                                             ; preds = %2181
  br label %2185

2185:                                             ; preds = %2184
  %2186 = load i32, ptr @test_count, align 4, !tbaa !5
  %2187 = add nsw i32 %2186, 1
  store i32 %2187, ptr @test_count, align 4, !tbaa !5
  %2188 = load ptr, ptr %55, align 8, !tbaa !9
  %2189 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2188, ptr noundef @.str.33)
  %2190 = icmp eq i32 %2189, -1
  br i1 %2190, label %2191, label %2244

2191:                                             ; preds = %2185
  br label %2192

2192:                                             ; preds = %2191
  br label %2193

2193:                                             ; preds = %2192
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  %2194 = call ptr @__errno_location() #11
  %2195 = load i32, ptr %2194, align 4, !tbaa !5
  store i32 %2195, ptr %57, align 4, !tbaa !5
  %2196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2197 = call i32 @s2n_print_stacktrace(ptr noundef %2196)
  %2198 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2199 = trunc i8 %2198 to i1
  br i1 %2199, label %2200, label %2222

2200:                                             ; preds = %2193
  %2201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2202 = call i32 @fileno(ptr noundef %2201) #10
  %2203 = call i32 @isatty(i32 noundef %2202) #10
  %2204 = icmp ne i32 %2203, 0
  br i1 %2204, label %2205, label %2222

2205:                                             ; preds = %2200
  %2206 = load i32, ptr %57, align 4, !tbaa !5
  %2207 = call ptr @__errno_location() #11
  store i32 %2206, ptr %2207, align 4, !tbaa !5
  %2208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2209 = load i32, ptr @test_count, align 4, !tbaa !5
  %2210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2211 = load i32, ptr %2210, align 4, !tbaa !5
  %2212 = call ptr @s2n_strerror(i32 noundef %2211, ptr noundef @.str.3)
  %2213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2214 = load i32, ptr %2213, align 4, !tbaa !5
  %2215 = call ptr @s2n_strerror_debug(i32 noundef %2214, ptr noundef @.str.3)
  %2216 = call ptr @__errno_location() #11
  %2217 = load i32, ptr %2216, align 4, !tbaa !5
  %2218 = call ptr @strerror(i32 noundef %2217) #10
  %2219 = call ptr @__errno_location() #11
  %2220 = load i32, ptr %2219, align 4, !tbaa !5
  %2221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2208, ptr noundef @.str, i32 noundef %2209, ptr noundef @.str.34, ptr noundef @.str.2, i32 noundef 157, ptr noundef %2212, ptr noundef %2215, ptr noundef %2218, i32 noundef %2220) #10
  br label %2239

2222:                                             ; preds = %2200, %2193
  %2223 = load i32, ptr %57, align 4, !tbaa !5
  %2224 = call ptr @__errno_location() #11
  store i32 %2223, ptr %2224, align 4, !tbaa !5
  %2225 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2226 = load i32, ptr @test_count, align 4, !tbaa !5
  %2227 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2228 = load i32, ptr %2227, align 4, !tbaa !5
  %2229 = call ptr @s2n_strerror(i32 noundef %2228, ptr noundef @.str.3)
  %2230 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2231 = load i32, ptr %2230, align 4, !tbaa !5
  %2232 = call ptr @s2n_strerror_debug(i32 noundef %2231, ptr noundef @.str.3)
  %2233 = call ptr @__errno_location() #11
  %2234 = load i32, ptr %2233, align 4, !tbaa !5
  %2235 = call ptr @strerror(i32 noundef %2234) #10
  %2236 = call ptr @__errno_location() #11
  %2237 = load i32, ptr %2236, align 4, !tbaa !5
  %2238 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2225, ptr noundef @.str.4, i32 noundef %2226, ptr noundef @.str.34, ptr noundef @.str.2, i32 noundef 157, ptr noundef %2229, ptr noundef %2232, ptr noundef %2235, i32 noundef %2237) #10
  br label %2239

2239:                                             ; preds = %2222, %2205
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %2240

2240:                                             ; preds = %2239
  br label %2241

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

2242:                                             ; No predecessors!
  br label %2243

2243:                                             ; preds = %2242
  br label %2244

2244:                                             ; preds = %2243, %2185
  br label %2245

2245:                                             ; preds = %2244
  br label %2246

2246:                                             ; preds = %2245
  br label %2310

2247:                                             ; preds = %2181
  br label %2248

2248:                                             ; preds = %2247
  %2249 = load i32, ptr @test_count, align 4, !tbaa !5
  %2250 = add nsw i32 %2249, 1
  store i32 %2250, ptr @test_count, align 4, !tbaa !5
  %2251 = load ptr, ptr %55, align 8, !tbaa !9
  %2252 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2251, ptr noundef @.str.35)
  %2253 = icmp eq i32 %2252, -1
  br i1 %2253, label %2254, label %2307

2254:                                             ; preds = %2248
  br label %2255

2255:                                             ; preds = %2254
  br label %2256

2256:                                             ; preds = %2255
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  %2257 = call ptr @__errno_location() #11
  %2258 = load i32, ptr %2257, align 4, !tbaa !5
  store i32 %2258, ptr %58, align 4, !tbaa !5
  %2259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2260 = call i32 @s2n_print_stacktrace(ptr noundef %2259)
  %2261 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2262 = trunc i8 %2261 to i1
  br i1 %2262, label %2263, label %2285

2263:                                             ; preds = %2256
  %2264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2265 = call i32 @fileno(ptr noundef %2264) #10
  %2266 = call i32 @isatty(i32 noundef %2265) #10
  %2267 = icmp ne i32 %2266, 0
  br i1 %2267, label %2268, label %2285

2268:                                             ; preds = %2263
  %2269 = load i32, ptr %58, align 4, !tbaa !5
  %2270 = call ptr @__errno_location() #11
  store i32 %2269, ptr %2270, align 4, !tbaa !5
  %2271 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2272 = load i32, ptr @test_count, align 4, !tbaa !5
  %2273 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2274 = load i32, ptr %2273, align 4, !tbaa !5
  %2275 = call ptr @s2n_strerror(i32 noundef %2274, ptr noundef @.str.3)
  %2276 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2277 = load i32, ptr %2276, align 4, !tbaa !5
  %2278 = call ptr @s2n_strerror_debug(i32 noundef %2277, ptr noundef @.str.3)
  %2279 = call ptr @__errno_location() #11
  %2280 = load i32, ptr %2279, align 4, !tbaa !5
  %2281 = call ptr @strerror(i32 noundef %2280) #10
  %2282 = call ptr @__errno_location() #11
  %2283 = load i32, ptr %2282, align 4, !tbaa !5
  %2284 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2271, ptr noundef @.str, i32 noundef %2272, ptr noundef @.str.36, ptr noundef @.str.2, i32 noundef 162, ptr noundef %2275, ptr noundef %2278, ptr noundef %2281, i32 noundef %2283) #10
  br label %2302

2285:                                             ; preds = %2263, %2256
  %2286 = load i32, ptr %58, align 4, !tbaa !5
  %2287 = call ptr @__errno_location() #11
  store i32 %2286, ptr %2287, align 4, !tbaa !5
  %2288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2289 = load i32, ptr @test_count, align 4, !tbaa !5
  %2290 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2291 = load i32, ptr %2290, align 4, !tbaa !5
  %2292 = call ptr @s2n_strerror(i32 noundef %2291, ptr noundef @.str.3)
  %2293 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2294 = load i32, ptr %2293, align 4, !tbaa !5
  %2295 = call ptr @s2n_strerror_debug(i32 noundef %2294, ptr noundef @.str.3)
  %2296 = call ptr @__errno_location() #11
  %2297 = load i32, ptr %2296, align 4, !tbaa !5
  %2298 = call ptr @strerror(i32 noundef %2297) #10
  %2299 = call ptr @__errno_location() #11
  %2300 = load i32, ptr %2299, align 4, !tbaa !5
  %2301 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2288, ptr noundef @.str.4, i32 noundef %2289, ptr noundef @.str.36, ptr noundef @.str.2, i32 noundef 162, ptr noundef %2292, ptr noundef %2295, ptr noundef %2298, i32 noundef %2300) #10
  br label %2302

2302:                                             ; preds = %2285, %2268
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %2303

2303:                                             ; preds = %2302
  br label %2304

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

2305:                                             ; No predecessors!
  br label %2306

2306:                                             ; preds = %2305
  br label %2307

2307:                                             ; preds = %2306, %2248
  br label %2308

2308:                                             ; preds = %2307
  br label %2309

2309:                                             ; preds = %2308
  br label %2310

2310:                                             ; preds = %2309, %2246
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %2311 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %2311, ptr %59, align 8, !tbaa !9
  br label %2312

2312:                                             ; preds = %2310
  %2313 = load i32, ptr @test_count, align 4, !tbaa !5
  %2314 = add nsw i32 %2313, 1
  store i32 %2314, ptr @test_count, align 4, !tbaa !5
  %2315 = load ptr, ptr %59, align 8, !tbaa !9
  %2316 = load ptr, ptr %55, align 8, !tbaa !9
  %2317 = call i32 @s2n_connection_set_config(ptr noundef %2315, ptr noundef %2316)
  %2318 = icmp eq i32 %2317, -1
  br i1 %2318, label %2319, label %2372

2319:                                             ; preds = %2312
  br label %2320

2320:                                             ; preds = %2319
  br label %2321

2321:                                             ; preds = %2320
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #10
  %2322 = call ptr @__errno_location() #11
  %2323 = load i32, ptr %2322, align 4, !tbaa !5
  store i32 %2323, ptr %60, align 4, !tbaa !5
  %2324 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2325 = call i32 @s2n_print_stacktrace(ptr noundef %2324)
  %2326 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2327 = trunc i8 %2326 to i1
  br i1 %2327, label %2328, label %2350

2328:                                             ; preds = %2321
  %2329 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2330 = call i32 @fileno(ptr noundef %2329) #10
  %2331 = call i32 @isatty(i32 noundef %2330) #10
  %2332 = icmp ne i32 %2331, 0
  br i1 %2332, label %2333, label %2350

2333:                                             ; preds = %2328
  %2334 = load i32, ptr %60, align 4, !tbaa !5
  %2335 = call ptr @__errno_location() #11
  store i32 %2334, ptr %2335, align 4, !tbaa !5
  %2336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2337 = load i32, ptr @test_count, align 4, !tbaa !5
  %2338 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2339 = load i32, ptr %2338, align 4, !tbaa !5
  %2340 = call ptr @s2n_strerror(i32 noundef %2339, ptr noundef @.str.3)
  %2341 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2342 = load i32, ptr %2341, align 4, !tbaa !5
  %2343 = call ptr @s2n_strerror_debug(i32 noundef %2342, ptr noundef @.str.3)
  %2344 = call ptr @__errno_location() #11
  %2345 = load i32, ptr %2344, align 4, !tbaa !5
  %2346 = call ptr @strerror(i32 noundef %2345) #10
  %2347 = call ptr @__errno_location() #11
  %2348 = load i32, ptr %2347, align 4, !tbaa !5
  %2349 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2336, ptr noundef @.str, i32 noundef %2337, ptr noundef @.str.37, ptr noundef @.str.2, i32 noundef 167, ptr noundef %2340, ptr noundef %2343, ptr noundef %2346, i32 noundef %2348) #10
  br label %2367

2350:                                             ; preds = %2328, %2321
  %2351 = load i32, ptr %60, align 4, !tbaa !5
  %2352 = call ptr @__errno_location() #11
  store i32 %2351, ptr %2352, align 4, !tbaa !5
  %2353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2354 = load i32, ptr @test_count, align 4, !tbaa !5
  %2355 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2356 = load i32, ptr %2355, align 4, !tbaa !5
  %2357 = call ptr @s2n_strerror(i32 noundef %2356, ptr noundef @.str.3)
  %2358 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2359 = load i32, ptr %2358, align 4, !tbaa !5
  %2360 = call ptr @s2n_strerror_debug(i32 noundef %2359, ptr noundef @.str.3)
  %2361 = call ptr @__errno_location() #11
  %2362 = load i32, ptr %2361, align 4, !tbaa !5
  %2363 = call ptr @strerror(i32 noundef %2362) #10
  %2364 = call ptr @__errno_location() #11
  %2365 = load i32, ptr %2364, align 4, !tbaa !5
  %2366 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2353, ptr noundef @.str.4, i32 noundef %2354, ptr noundef @.str.37, ptr noundef @.str.2, i32 noundef 167, ptr noundef %2357, ptr noundef %2360, ptr noundef %2363, i32 noundef %2365) #10
  br label %2367

2367:                                             ; preds = %2350, %2333
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %2368

2368:                                             ; preds = %2367
  br label %2369

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

2370:                                             ; No predecessors!
  br label %2371

2371:                                             ; preds = %2370
  br label %2372

2372:                                             ; preds = %2371, %2312
  br label %2373

2373:                                             ; preds = %2372
  br label %2374

2374:                                             ; preds = %2373
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %2375 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %2375, ptr %61, align 8, !tbaa !9
  br label %2376

2376:                                             ; preds = %2374
  %2377 = load i32, ptr @test_count, align 4, !tbaa !5
  %2378 = add nsw i32 %2377, 1
  store i32 %2378, ptr @test_count, align 4, !tbaa !5
  %2379 = load ptr, ptr %61, align 8, !tbaa !9
  %2380 = load ptr, ptr %55, align 8, !tbaa !9
  %2381 = call i32 @s2n_connection_set_config(ptr noundef %2379, ptr noundef %2380)
  %2382 = icmp eq i32 %2381, -1
  br i1 %2382, label %2383, label %2436

2383:                                             ; preds = %2376
  br label %2384

2384:                                             ; preds = %2383
  br label %2385

2385:                                             ; preds = %2384
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  %2386 = call ptr @__errno_location() #11
  %2387 = load i32, ptr %2386, align 4, !tbaa !5
  store i32 %2387, ptr %62, align 4, !tbaa !5
  %2388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2389 = call i32 @s2n_print_stacktrace(ptr noundef %2388)
  %2390 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2391 = trunc i8 %2390 to i1
  br i1 %2391, label %2392, label %2414

2392:                                             ; preds = %2385
  %2393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2394 = call i32 @fileno(ptr noundef %2393) #10
  %2395 = call i32 @isatty(i32 noundef %2394) #10
  %2396 = icmp ne i32 %2395, 0
  br i1 %2396, label %2397, label %2414

2397:                                             ; preds = %2392
  %2398 = load i32, ptr %62, align 4, !tbaa !5
  %2399 = call ptr @__errno_location() #11
  store i32 %2398, ptr %2399, align 4, !tbaa !5
  %2400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2401 = load i32, ptr @test_count, align 4, !tbaa !5
  %2402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2403 = load i32, ptr %2402, align 4, !tbaa !5
  %2404 = call ptr @s2n_strerror(i32 noundef %2403, ptr noundef @.str.3)
  %2405 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2406 = load i32, ptr %2405, align 4, !tbaa !5
  %2407 = call ptr @s2n_strerror_debug(i32 noundef %2406, ptr noundef @.str.3)
  %2408 = call ptr @__errno_location() #11
  %2409 = load i32, ptr %2408, align 4, !tbaa !5
  %2410 = call ptr @strerror(i32 noundef %2409) #10
  %2411 = call ptr @__errno_location() #11
  %2412 = load i32, ptr %2411, align 4, !tbaa !5
  %2413 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2400, ptr noundef @.str, i32 noundef %2401, ptr noundef @.str.38, ptr noundef @.str.2, i32 noundef 171, ptr noundef %2404, ptr noundef %2407, ptr noundef %2410, i32 noundef %2412) #10
  br label %2431

2414:                                             ; preds = %2392, %2385
  %2415 = load i32, ptr %62, align 4, !tbaa !5
  %2416 = call ptr @__errno_location() #11
  store i32 %2415, ptr %2416, align 4, !tbaa !5
  %2417 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2418 = load i32, ptr @test_count, align 4, !tbaa !5
  %2419 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2420 = load i32, ptr %2419, align 4, !tbaa !5
  %2421 = call ptr @s2n_strerror(i32 noundef %2420, ptr noundef @.str.3)
  %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_debug(i32 noundef %2423, ptr noundef @.str.3)
  %2425 = call ptr @__errno_location() #11
  %2426 = load i32, ptr %2425, align 4, !tbaa !5
  %2427 = call ptr @strerror(i32 noundef %2426) #10
  %2428 = call ptr @__errno_location() #11
  %2429 = load i32, ptr %2428, align 4, !tbaa !5
  %2430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2417, ptr noundef @.str.4, i32 noundef %2418, ptr noundef @.str.38, ptr noundef @.str.2, i32 noundef 171, ptr noundef %2421, ptr noundef %2424, ptr noundef %2427, i32 noundef %2429) #10
  br label %2431

2431:                                             ; preds = %2414, %2397
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  br label %2432

2432:                                             ; preds = %2431
  br label %2433

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

2434:                                             ; No predecessors!
  br label %2435

2435:                                             ; preds = %2434
  br label %2436

2436:                                             ; preds = %2435, %2376
  br label %2437

2437:                                             ; preds = %2436
  br label %2438

2438:                                             ; preds = %2437
  br label %2439

2439:                                             ; preds = %2438
  %2440 = load i32, ptr @test_count, align 4, !tbaa !5
  %2441 = add nsw i32 %2440, 1
  store i32 %2441, ptr @test_count, align 4, !tbaa !5
  %2442 = load ptr, ptr %59, align 8, !tbaa !9
  %2443 = call i32 @s2n_client_hello_send(ptr noundef %2442)
  %2444 = icmp eq i32 %2443, -1
  br i1 %2444, label %2445, label %2498

2445:                                             ; preds = %2439
  br label %2446

2446:                                             ; preds = %2445
  br label %2447

2447:                                             ; preds = %2446
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  %2448 = call ptr @__errno_location() #11
  %2449 = load i32, ptr %2448, align 4, !tbaa !5
  store i32 %2449, ptr %63, align 4, !tbaa !5
  %2450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2451 = call i32 @s2n_print_stacktrace(ptr noundef %2450)
  %2452 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2453 = trunc i8 %2452 to i1
  br i1 %2453, label %2454, label %2476

2454:                                             ; preds = %2447
  %2455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2456 = call i32 @fileno(ptr noundef %2455) #10
  %2457 = call i32 @isatty(i32 noundef %2456) #10
  %2458 = icmp ne i32 %2457, 0
  br i1 %2458, label %2459, label %2476

2459:                                             ; preds = %2454
  %2460 = load i32, ptr %63, align 4, !tbaa !5
  %2461 = call ptr @__errno_location() #11
  store i32 %2460, ptr %2461, align 4, !tbaa !5
  %2462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2463 = load i32, ptr @test_count, align 4, !tbaa !5
  %2464 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2465 = load i32, ptr %2464, align 4, !tbaa !5
  %2466 = call ptr @s2n_strerror(i32 noundef %2465, ptr noundef @.str.3)
  %2467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2468 = load i32, ptr %2467, align 4, !tbaa !5
  %2469 = call ptr @s2n_strerror_debug(i32 noundef %2468, ptr noundef @.str.3)
  %2470 = call ptr @__errno_location() #11
  %2471 = load i32, ptr %2470, align 4, !tbaa !5
  %2472 = call ptr @strerror(i32 noundef %2471) #10
  %2473 = call ptr @__errno_location() #11
  %2474 = load i32, ptr %2473, align 4, !tbaa !5
  %2475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2462, ptr noundef @.str, i32 noundef %2463, ptr noundef @.str.39, ptr noundef @.str.2, i32 noundef 173, ptr noundef %2466, ptr noundef %2469, ptr noundef %2472, i32 noundef %2474) #10
  br label %2493

2476:                                             ; preds = %2454, %2447
  %2477 = load i32, ptr %63, align 4, !tbaa !5
  %2478 = call ptr @__errno_location() #11
  store i32 %2477, ptr %2478, align 4, !tbaa !5
  %2479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2480 = load i32, ptr @test_count, align 4, !tbaa !5
  %2481 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2482 = load i32, ptr %2481, align 4, !tbaa !5
  %2483 = call ptr @s2n_strerror(i32 noundef %2482, ptr noundef @.str.3)
  %2484 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2485 = load i32, ptr %2484, align 4, !tbaa !5
  %2486 = call ptr @s2n_strerror_debug(i32 noundef %2485, ptr noundef @.str.3)
  %2487 = call ptr @__errno_location() #11
  %2488 = load i32, ptr %2487, align 4, !tbaa !5
  %2489 = call ptr @strerror(i32 noundef %2488) #10
  %2490 = call ptr @__errno_location() #11
  %2491 = load i32, ptr %2490, align 4, !tbaa !5
  %2492 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2479, ptr noundef @.str.4, i32 noundef %2480, ptr noundef @.str.39, ptr noundef @.str.2, i32 noundef 173, ptr noundef %2483, ptr noundef %2486, ptr noundef %2489, i32 noundef %2491) #10
  br label %2493

2493:                                             ; preds = %2476, %2459
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  br label %2494

2494:                                             ; preds = %2493
  br label %2495

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

2496:                                             ; No predecessors!
  br label %2497

2497:                                             ; preds = %2496
  br label %2498

2498:                                             ; preds = %2497, %2439
  br label %2499

2499:                                             ; preds = %2498
  br label %2500

2500:                                             ; preds = %2499
  br label %2501

2501:                                             ; preds = %2500
  %2502 = load i32, ptr @test_count, align 4, !tbaa !5
  %2503 = add nsw i32 %2502, 1
  store i32 %2503, ptr @test_count, align 4, !tbaa !5
  %2504 = load ptr, ptr %59, align 8, !tbaa !9
  %2505 = getelementptr inbounds %struct.s2n_connection, ptr %2504, i32 0, i32 52
  %2506 = getelementptr inbounds %struct.s2n_handshake, ptr %2505, i32 0, i32 0
  %2507 = load ptr, ptr %61, align 8, !tbaa !9
  %2508 = getelementptr inbounds %struct.s2n_connection, ptr %2507, i32 0, i32 52
  %2509 = getelementptr inbounds %struct.s2n_handshake, ptr %2508, i32 0, i32 0
  %2510 = load ptr, ptr %59, align 8, !tbaa !9
  %2511 = getelementptr inbounds %struct.s2n_connection, ptr %2510, i32 0, i32 52
  %2512 = getelementptr inbounds %struct.s2n_handshake, ptr %2511, i32 0, i32 0
  %2513 = getelementptr inbounds %struct.s2n_stuffer, ptr %2512, i32 0, i32 2
  %2514 = load i32, ptr %2513, align 4, !tbaa !22
  %2515 = load ptr, ptr %59, align 8, !tbaa !9
  %2516 = getelementptr inbounds %struct.s2n_connection, ptr %2515, i32 0, i32 52
  %2517 = getelementptr inbounds %struct.s2n_handshake, ptr %2516, i32 0, i32 0
  %2518 = getelementptr inbounds %struct.s2n_stuffer, ptr %2517, i32 0, i32 1
  %2519 = load i32, ptr %2518, align 8, !tbaa !47
  %2520 = sub i32 %2514, %2519
  %2521 = call i32 @s2n_stuffer_copy(ptr noundef %2506, ptr noundef %2509, i32 noundef %2520)
  %2522 = icmp eq i32 %2521, -1
  br i1 %2522, label %2523, label %2576

2523:                                             ; preds = %2501
  br label %2524

2524:                                             ; preds = %2523
  br label %2525

2525:                                             ; preds = %2524
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #10
  %2526 = call ptr @__errno_location() #11
  %2527 = load i32, ptr %2526, align 4, !tbaa !5
  store i32 %2527, ptr %64, align 4, !tbaa !5
  %2528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2529 = call i32 @s2n_print_stacktrace(ptr noundef %2528)
  %2530 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2531 = trunc i8 %2530 to i1
  br i1 %2531, label %2532, label %2554

2532:                                             ; preds = %2525
  %2533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2534 = call i32 @fileno(ptr noundef %2533) #10
  %2535 = call i32 @isatty(i32 noundef %2534) #10
  %2536 = icmp ne i32 %2535, 0
  br i1 %2536, label %2537, label %2554

2537:                                             ; preds = %2532
  %2538 = load i32, ptr %64, align 4, !tbaa !5
  %2539 = call ptr @__errno_location() #11
  store i32 %2538, ptr %2539, align 4, !tbaa !5
  %2540 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2541 = load i32, ptr @test_count, align 4, !tbaa !5
  %2542 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2543 = load i32, ptr %2542, align 4, !tbaa !5
  %2544 = call ptr @s2n_strerror(i32 noundef %2543, ptr noundef @.str.3)
  %2545 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2546 = load i32, ptr %2545, align 4, !tbaa !5
  %2547 = call ptr @s2n_strerror_debug(i32 noundef %2546, ptr noundef @.str.3)
  %2548 = call ptr @__errno_location() #11
  %2549 = load i32, ptr %2548, align 4, !tbaa !5
  %2550 = call ptr @strerror(i32 noundef %2549) #10
  %2551 = call ptr @__errno_location() #11
  %2552 = load i32, ptr %2551, align 4, !tbaa !5
  %2553 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2540, ptr noundef @.str, i32 noundef %2541, ptr noundef @.str.40, ptr noundef @.str.2, i32 noundef 175, ptr noundef %2544, ptr noundef %2547, ptr noundef %2550, i32 noundef %2552) #10
  br label %2571

2554:                                             ; preds = %2532, %2525
  %2555 = load i32, ptr %64, align 4, !tbaa !5
  %2556 = call ptr @__errno_location() #11
  store i32 %2555, ptr %2556, align 4, !tbaa !5
  %2557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2558 = load i32, ptr @test_count, align 4, !tbaa !5
  %2559 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2560 = load i32, ptr %2559, align 4, !tbaa !5
  %2561 = call ptr @s2n_strerror(i32 noundef %2560, ptr noundef @.str.3)
  %2562 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2563 = load i32, ptr %2562, align 4, !tbaa !5
  %2564 = call ptr @s2n_strerror_debug(i32 noundef %2563, ptr noundef @.str.3)
  %2565 = call ptr @__errno_location() #11
  %2566 = load i32, ptr %2565, align 4, !tbaa !5
  %2567 = call ptr @strerror(i32 noundef %2566) #10
  %2568 = call ptr @__errno_location() #11
  %2569 = load i32, ptr %2568, align 4, !tbaa !5
  %2570 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2557, ptr noundef @.str.4, i32 noundef %2558, ptr noundef @.str.40, ptr noundef @.str.2, i32 noundef 175, ptr noundef %2561, ptr noundef %2564, ptr noundef %2567, i32 noundef %2569) #10
  br label %2571

2571:                                             ; preds = %2554, %2537
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #10
  br label %2572

2572:                                             ; preds = %2571
  br label %2573

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

2574:                                             ; No predecessors!
  br label %2575

2575:                                             ; preds = %2574
  br label %2576

2576:                                             ; preds = %2575, %2501
  br label %2577

2577:                                             ; preds = %2576
  br label %2578

2578:                                             ; preds = %2577
  br label %2579

2579:                                             ; preds = %2578
  %2580 = load i32, ptr @test_count, align 4, !tbaa !5
  %2581 = add nsw i32 %2580, 1
  store i32 %2581, ptr @test_count, align 4, !tbaa !5
  %2582 = load ptr, ptr %61, align 8, !tbaa !9
  %2583 = call i32 @s2n_client_hello_recv(ptr noundef %2582)
  %2584 = icmp eq i32 %2583, -1
  br i1 %2584, label %2585, label %2638

2585:                                             ; preds = %2579
  br label %2586

2586:                                             ; preds = %2585
  br label %2587

2587:                                             ; preds = %2586
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #10
  %2588 = call ptr @__errno_location() #11
  %2589 = load i32, ptr %2588, align 4, !tbaa !5
  store i32 %2589, ptr %65, align 4, !tbaa !5
  %2590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2591 = call i32 @s2n_print_stacktrace(ptr noundef %2590)
  %2592 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2593 = trunc i8 %2592 to i1
  br i1 %2593, label %2594, label %2616

2594:                                             ; preds = %2587
  %2595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2596 = call i32 @fileno(ptr noundef %2595) #10
  %2597 = call i32 @isatty(i32 noundef %2596) #10
  %2598 = icmp ne i32 %2597, 0
  br i1 %2598, label %2599, label %2616

2599:                                             ; preds = %2594
  %2600 = load i32, ptr %65, align 4, !tbaa !5
  %2601 = call ptr @__errno_location() #11
  store i32 %2600, ptr %2601, align 4, !tbaa !5
  %2602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2603 = load i32, ptr @test_count, align 4, !tbaa !5
  %2604 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2605 = load i32, ptr %2604, align 4, !tbaa !5
  %2606 = call ptr @s2n_strerror(i32 noundef %2605, ptr noundef @.str.3)
  %2607 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2608 = load i32, ptr %2607, align 4, !tbaa !5
  %2609 = call ptr @s2n_strerror_debug(i32 noundef %2608, ptr noundef @.str.3)
  %2610 = call ptr @__errno_location() #11
  %2611 = load i32, ptr %2610, align 4, !tbaa !5
  %2612 = call ptr @strerror(i32 noundef %2611) #10
  %2613 = call ptr @__errno_location() #11
  %2614 = load i32, ptr %2613, align 4, !tbaa !5
  %2615 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2602, ptr noundef @.str, i32 noundef %2603, ptr noundef @.str.41, ptr noundef @.str.2, i32 noundef 176, ptr noundef %2606, ptr noundef %2609, ptr noundef %2612, i32 noundef %2614) #10
  br label %2633

2616:                                             ; preds = %2594, %2587
  %2617 = load i32, ptr %65, align 4, !tbaa !5
  %2618 = call ptr @__errno_location() #11
  store i32 %2617, ptr %2618, align 4, !tbaa !5
  %2619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2620 = load i32, ptr @test_count, align 4, !tbaa !5
  %2621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2622 = load i32, ptr %2621, align 4, !tbaa !5
  %2623 = call ptr @s2n_strerror(i32 noundef %2622, ptr noundef @.str.3)
  %2624 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2625 = load i32, ptr %2624, align 4, !tbaa !5
  %2626 = call ptr @s2n_strerror_debug(i32 noundef %2625, ptr noundef @.str.3)
  %2627 = call ptr @__errno_location() #11
  %2628 = load i32, ptr %2627, align 4, !tbaa !5
  %2629 = call ptr @strerror(i32 noundef %2628) #10
  %2630 = call ptr @__errno_location() #11
  %2631 = load i32, ptr %2630, align 4, !tbaa !5
  %2632 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2619, ptr noundef @.str.4, i32 noundef %2620, ptr noundef @.str.41, ptr noundef @.str.2, i32 noundef 176, ptr noundef %2623, ptr noundef %2626, ptr noundef %2629, i32 noundef %2631) #10
  br label %2633

2633:                                             ; preds = %2616, %2599
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #10
  br label %2634

2634:                                             ; preds = %2633
  br label %2635

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

2636:                                             ; No predecessors!
  br label %2637

2637:                                             ; preds = %2636
  br label %2638

2638:                                             ; preds = %2637, %2579
  br label %2639

2639:                                             ; preds = %2638
  br label %2640

2640:                                             ; preds = %2639
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  %2641 = load ptr, ptr %61, align 8, !tbaa !9
  %2642 = call ptr @s2n_connection_get_client_hello(ptr noundef %2641)
  store ptr %2642, ptr %66, align 8, !tbaa !9
  br label %2643

2643:                                             ; preds = %2640
  %2644 = load i32, ptr @test_count, align 4, !tbaa !5
  %2645 = add nsw i32 %2644, 1
  store i32 %2645, ptr @test_count, align 4, !tbaa !5
  %2646 = load ptr, ptr %66, align 8, !tbaa !9
  %2647 = icmp eq ptr %2646, null
  br i1 %2647, label %2648, label %2701

2648:                                             ; preds = %2643
  br label %2649

2649:                                             ; preds = %2648
  br label %2650

2650:                                             ; preds = %2649
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #10
  %2651 = call ptr @__errno_location() #11
  %2652 = load i32, ptr %2651, align 4, !tbaa !5
  store i32 %2652, ptr %67, align 4, !tbaa !5
  %2653 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2654 = call i32 @s2n_print_stacktrace(ptr noundef %2653)
  %2655 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2656 = trunc i8 %2655 to i1
  br i1 %2656, label %2657, label %2679

2657:                                             ; preds = %2650
  %2658 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2659 = call i32 @fileno(ptr noundef %2658) #10
  %2660 = call i32 @isatty(i32 noundef %2659) #10
  %2661 = icmp ne i32 %2660, 0
  br i1 %2661, label %2662, label %2679

2662:                                             ; preds = %2657
  %2663 = load i32, ptr %67, align 4, !tbaa !5
  %2664 = call ptr @__errno_location() #11
  store i32 %2663, ptr %2664, align 4, !tbaa !5
  %2665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2666 = load i32, ptr @test_count, align 4, !tbaa !5
  %2667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2668 = load i32, ptr %2667, align 4, !tbaa !5
  %2669 = call ptr @s2n_strerror(i32 noundef %2668, ptr noundef @.str.3)
  %2670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2671 = load i32, ptr %2670, align 4, !tbaa !5
  %2672 = call ptr @s2n_strerror_debug(i32 noundef %2671, ptr noundef @.str.3)
  %2673 = call ptr @__errno_location() #11
  %2674 = load i32, ptr %2673, align 4, !tbaa !5
  %2675 = call ptr @strerror(i32 noundef %2674) #10
  %2676 = call ptr @__errno_location() #11
  %2677 = load i32, ptr %2676, align 4, !tbaa !5
  %2678 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2665, ptr noundef @.str, i32 noundef %2666, ptr noundef @.str.6, ptr noundef @.str.2, i32 noundef 179, ptr noundef %2669, ptr noundef %2672, ptr noundef %2675, i32 noundef %2677) #10
  br label %2696

2679:                                             ; preds = %2657, %2650
  %2680 = load i32, ptr %67, align 4, !tbaa !5
  %2681 = call ptr @__errno_location() #11
  store i32 %2680, ptr %2681, align 4, !tbaa !5
  %2682 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2683 = load i32, ptr @test_count, align 4, !tbaa !5
  %2684 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2685 = load i32, ptr %2684, align 4, !tbaa !5
  %2686 = call ptr @s2n_strerror(i32 noundef %2685, ptr noundef @.str.3)
  %2687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2688 = load i32, ptr %2687, align 4, !tbaa !5
  %2689 = call ptr @s2n_strerror_debug(i32 noundef %2688, ptr noundef @.str.3)
  %2690 = call ptr @__errno_location() #11
  %2691 = load i32, ptr %2690, align 4, !tbaa !5
  %2692 = call ptr @strerror(i32 noundef %2691) #10
  %2693 = call ptr @__errno_location() #11
  %2694 = load i32, ptr %2693, align 4, !tbaa !5
  %2695 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2682, ptr noundef @.str.4, i32 noundef %2683, ptr noundef @.str.6, ptr noundef @.str.2, i32 noundef 179, ptr noundef %2686, ptr noundef %2689, ptr noundef %2692, i32 noundef %2694) #10
  br label %2696

2696:                                             ; preds = %2679, %2662
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  br label %2697

2697:                                             ; preds = %2696
  br label %2698

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

2699:                                             ; No predecessors!
  br label %2700

2700:                                             ; preds = %2699
  br label %2701

2701:                                             ; preds = %2700, %2643
  br label %2702

2702:                                             ; preds = %2701
  br label %2703

2703:                                             ; preds = %2702
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #10
  store i8 0, ptr %68, align 1, !tbaa !11
  br label %2704

2704:                                             ; preds = %2703
  %2705 = load i32, ptr @test_count, align 4, !tbaa !5
  %2706 = add nsw i32 %2705, 1
  store i32 %2706, ptr @test_count, align 4, !tbaa !5
  %2707 = load ptr, ptr %66, align 8, !tbaa !9
  %2708 = call i32 @s2n_client_hello_has_extension(ptr noundef %2707, i16 noundef zeroext 10, ptr noundef %68)
  %2709 = icmp eq i32 %2708, -1
  br i1 %2709, label %2710, label %2763

2710:                                             ; preds = %2704
  br label %2711

2711:                                             ; preds = %2710
  br label %2712

2712:                                             ; preds = %2711
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #10
  %2713 = call ptr @__errno_location() #11
  %2714 = load i32, ptr %2713, align 4, !tbaa !5
  store i32 %2714, ptr %69, align 4, !tbaa !5
  %2715 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2716 = call i32 @s2n_print_stacktrace(ptr noundef %2715)
  %2717 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2718 = trunc i8 %2717 to i1
  br i1 %2718, label %2719, label %2741

2719:                                             ; preds = %2712
  %2720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2721 = call i32 @fileno(ptr noundef %2720) #10
  %2722 = call i32 @isatty(i32 noundef %2721) #10
  %2723 = icmp ne i32 %2722, 0
  br i1 %2723, label %2724, label %2741

2724:                                             ; preds = %2719
  %2725 = load i32, ptr %69, align 4, !tbaa !5
  %2726 = call ptr @__errno_location() #11
  store i32 %2725, ptr %2726, align 4, !tbaa !5
  %2727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2728 = load i32, ptr @test_count, align 4, !tbaa !5
  %2729 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2730 = load i32, ptr %2729, align 4, !tbaa !5
  %2731 = call ptr @s2n_strerror(i32 noundef %2730, ptr noundef @.str.3)
  %2732 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2733 = load i32, ptr %2732, align 4, !tbaa !5
  %2734 = call ptr @s2n_strerror_debug(i32 noundef %2733, ptr noundef @.str.3)
  %2735 = call ptr @__errno_location() #11
  %2736 = load i32, ptr %2735, align 4, !tbaa !5
  %2737 = call ptr @strerror(i32 noundef %2736) #10
  %2738 = call ptr @__errno_location() #11
  %2739 = load i32, ptr %2738, align 4, !tbaa !5
  %2740 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2727, ptr noundef @.str, i32 noundef %2728, ptr noundef @.str.42, ptr noundef @.str.2, i32 noundef 183, ptr noundef %2731, ptr noundef %2734, ptr noundef %2737, i32 noundef %2739) #10
  br label %2758

2741:                                             ; preds = %2719, %2712
  %2742 = load i32, ptr %69, align 4, !tbaa !5
  %2743 = call ptr @__errno_location() #11
  store i32 %2742, ptr %2743, align 4, !tbaa !5
  %2744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2745 = load i32, ptr @test_count, align 4, !tbaa !5
  %2746 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2747 = load i32, ptr %2746, align 4, !tbaa !5
  %2748 = call ptr @s2n_strerror(i32 noundef %2747, ptr noundef @.str.3)
  %2749 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2750 = load i32, ptr %2749, align 4, !tbaa !5
  %2751 = call ptr @s2n_strerror_debug(i32 noundef %2750, ptr noundef @.str.3)
  %2752 = call ptr @__errno_location() #11
  %2753 = load i32, ptr %2752, align 4, !tbaa !5
  %2754 = call ptr @strerror(i32 noundef %2753) #10
  %2755 = call ptr @__errno_location() #11
  %2756 = load i32, ptr %2755, align 4, !tbaa !5
  %2757 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2744, ptr noundef @.str.4, i32 noundef %2745, ptr noundef @.str.42, ptr noundef @.str.2, i32 noundef 183, ptr noundef %2748, ptr noundef %2751, ptr noundef %2754, i32 noundef %2756) #10
  br label %2758

2758:                                             ; preds = %2741, %2724
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #10
  br label %2759

2759:                                             ; preds = %2758
  br label %2760

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

2761:                                             ; No predecessors!
  br label %2762

2762:                                             ; preds = %2761
  br label %2763

2763:                                             ; preds = %2762, %2704
  br label %2764

2764:                                             ; preds = %2763
  br label %2765

2765:                                             ; preds = %2764
  br label %2766

2766:                                             ; preds = %2765
  %2767 = load i32, ptr @test_count, align 4, !tbaa !5
  %2768 = add nsw i32 %2767, 1
  store i32 %2768, ptr @test_count, align 4, !tbaa !5
  %2769 = load i8, ptr %68, align 1, !tbaa !11, !range !13, !noundef !14
  %2770 = trunc i8 %2769 to i1
  %2771 = zext i1 %2770 to i32
  %2772 = load i32, ptr %54, align 4, !tbaa !5
  %2773 = icmp ne i32 %2772, 0
  %2774 = xor i1 %2773, true
  %2775 = zext i1 %2774 to i32
  %2776 = icmp eq i32 %2771, %2775
  br i1 %2776, label %2830, label %2777

2777:                                             ; preds = %2766
  br label %2778

2778:                                             ; preds = %2777
  br label %2779

2779:                                             ; preds = %2778
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #10
  %2780 = call ptr @__errno_location() #11
  %2781 = load i32, ptr %2780, align 4, !tbaa !5
  store i32 %2781, ptr %70, align 4, !tbaa !5
  %2782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2783 = call i32 @s2n_print_stacktrace(ptr noundef %2782)
  %2784 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2785 = trunc i8 %2784 to i1
  br i1 %2785, label %2786, label %2808

2786:                                             ; preds = %2779
  %2787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2788 = call i32 @fileno(ptr noundef %2787) #10
  %2789 = call i32 @isatty(i32 noundef %2788) #10
  %2790 = icmp ne i32 %2789, 0
  br i1 %2790, label %2791, label %2808

2791:                                             ; preds = %2786
  %2792 = load i32, ptr %70, align 4, !tbaa !5
  %2793 = call ptr @__errno_location() #11
  store i32 %2792, ptr %2793, align 4, !tbaa !5
  %2794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2795 = load i32, ptr @test_count, align 4, !tbaa !5
  %2796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2797 = load i32, ptr %2796, align 4, !tbaa !5
  %2798 = call ptr @s2n_strerror(i32 noundef %2797, ptr noundef @.str.3)
  %2799 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2800 = load i32, ptr %2799, align 4, !tbaa !5
  %2801 = call ptr @s2n_strerror_debug(i32 noundef %2800, ptr noundef @.str.3)
  %2802 = call ptr @__errno_location() #11
  %2803 = load i32, ptr %2802, align 4, !tbaa !5
  %2804 = call ptr @strerror(i32 noundef %2803) #10
  %2805 = call ptr @__errno_location() #11
  %2806 = load i32, ptr %2805, align 4, !tbaa !5
  %2807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2794, ptr noundef @.str, i32 noundef %2795, ptr noundef @.str.43, ptr noundef @.str.2, i32 noundef 184, ptr noundef %2798, ptr noundef %2801, ptr noundef %2804, i32 noundef %2806) #10
  br label %2825

2808:                                             ; preds = %2786, %2779
  %2809 = load i32, ptr %70, align 4, !tbaa !5
  %2810 = call ptr @__errno_location() #11
  store i32 %2809, ptr %2810, align 4, !tbaa !5
  %2811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2812 = load i32, ptr @test_count, align 4, !tbaa !5
  %2813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2814 = load i32, ptr %2813, align 4, !tbaa !5
  %2815 = call ptr @s2n_strerror(i32 noundef %2814, ptr noundef @.str.3)
  %2816 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2817 = load i32, ptr %2816, align 4, !tbaa !5
  %2818 = call ptr @s2n_strerror_debug(i32 noundef %2817, ptr noundef @.str.3)
  %2819 = call ptr @__errno_location() #11
  %2820 = load i32, ptr %2819, align 4, !tbaa !5
  %2821 = call ptr @strerror(i32 noundef %2820) #10
  %2822 = call ptr @__errno_location() #11
  %2823 = load i32, ptr %2822, align 4, !tbaa !5
  %2824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2811, ptr noundef @.str.4, i32 noundef %2812, ptr noundef @.str.43, ptr noundef @.str.2, i32 noundef 184, ptr noundef %2815, ptr noundef %2818, ptr noundef %2821, i32 noundef %2823) #10
  br label %2825

2825:                                             ; preds = %2808, %2791
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #10
  br label %2826

2826:                                             ; preds = %2825
  br label %2827

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

2828:                                             ; No predecessors!
  br label %2829

2829:                                             ; preds = %2828
  br label %2830

2830:                                             ; preds = %2829, %2766
  br label %2831

2831:                                             ; preds = %2830
  br label %2832

2832:                                             ; preds = %2831
  call void @llvm.lifetime.start.p0(i64 32, ptr %71) #10
  call void @llvm.memset.p0.i64(ptr align 16 %71, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %72) #10
  store i16 0, ptr %72, align 2, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #10
  %2833 = load ptr, ptr %66, align 8, !tbaa !9
  %2834 = getelementptr inbounds [16 x i16], ptr %71, i64 0, i64 0
  %2835 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %2833, ptr noundef %2834, i16 noundef zeroext 16, ptr noundef %72)
  store i32 %2835, ptr %73, align 4, !tbaa !5
  %2836 = load i32, ptr %54, align 4, !tbaa !5
  %2837 = icmp ne i32 %2836, 0
  br i1 %2837, label %2838, label %3098

2838:                                             ; preds = %2832
  br label %2839

2839:                                             ; preds = %2838
  br label %2840

2840:                                             ; preds = %2839
  br label %2841

2841:                                             ; preds = %2840
  %2842 = load i32, ptr @test_count, align 4, !tbaa !5
  %2843 = add nsw i32 %2842, 1
  store i32 %2843, ptr @test_count, align 4, !tbaa !5
  %2844 = load i32, ptr %73, align 4, !tbaa !5
  %2845 = icmp eq i32 %2844, -1
  br i1 %2845, label %2899, label %2846

2846:                                             ; preds = %2841
  br label %2847

2847:                                             ; preds = %2846
  br label %2848

2848:                                             ; preds = %2847
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #10
  %2849 = call ptr @__errno_location() #11
  %2850 = load i32, ptr %2849, align 4, !tbaa !5
  store i32 %2850, ptr %74, align 4, !tbaa !5
  %2851 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2852 = call i32 @s2n_print_stacktrace(ptr noundef %2851)
  %2853 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2854 = trunc i8 %2853 to i1
  br i1 %2854, label %2855, label %2877

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

2860:                                             ; preds = %2855
  %2861 = load i32, ptr %74, align 4, !tbaa !5
  %2862 = call ptr @__errno_location() #11
  store i32 %2861, ptr %2862, align 4, !tbaa !5
  %2863 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2864 = load i32, ptr @test_count, align 4, !tbaa !5
  %2865 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2866 = load i32, ptr %2865, align 4, !tbaa !5
  %2867 = call ptr @s2n_strerror(i32 noundef %2866, ptr noundef @.str.3)
  %2868 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2869 = load i32, ptr %2868, align 4, !tbaa !5
  %2870 = call ptr @s2n_strerror_debug(i32 noundef %2869, ptr noundef @.str.3)
  %2871 = call ptr @__errno_location() #11
  %2872 = load i32, ptr %2871, align 4, !tbaa !5
  %2873 = call ptr @strerror(i32 noundef %2872) #10
  %2874 = call ptr @__errno_location() #11
  %2875 = load i32, ptr %2874, align 4, !tbaa !5
  %2876 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2863, ptr noundef @.str, i32 noundef %2864, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 192, ptr noundef %2867, ptr noundef %2870, ptr noundef %2873, i32 noundef %2875) #10
  br label %2894

2877:                                             ; preds = %2855, %2848
  %2878 = load i32, ptr %74, align 4, !tbaa !5
  %2879 = call ptr @__errno_location() #11
  store i32 %2878, ptr %2879, align 4, !tbaa !5
  %2880 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2881 = load i32, ptr @test_count, align 4, !tbaa !5
  %2882 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2883 = load i32, ptr %2882, align 4, !tbaa !5
  %2884 = call ptr @s2n_strerror(i32 noundef %2883, ptr noundef @.str.3)
  %2885 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2886 = load i32, ptr %2885, align 4, !tbaa !5
  %2887 = call ptr @s2n_strerror_debug(i32 noundef %2886, ptr noundef @.str.3)
  %2888 = call ptr @__errno_location() #11
  %2889 = load i32, ptr %2888, align 4, !tbaa !5
  %2890 = call ptr @strerror(i32 noundef %2889) #10
  %2891 = call ptr @__errno_location() #11
  %2892 = load i32, ptr %2891, align 4, !tbaa !5
  %2893 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2880, ptr noundef @.str.4, i32 noundef %2881, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 192, ptr noundef %2884, ptr noundef %2887, ptr noundef %2890, i32 noundef %2892) #10
  br label %2894

2894:                                             ; preds = %2877, %2860
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #10
  br label %2895

2895:                                             ; preds = %2894
  br label %2896

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

2897:                                             ; No predecessors!
  br label %2898

2898:                                             ; preds = %2897
  br label %2899

2899:                                             ; preds = %2898, %2841
  br label %2900

2900:                                             ; preds = %2899
  br label %2901

2901:                                             ; preds = %2900
  br label %2902

2902:                                             ; preds = %2901
  %2903 = load i32, ptr @test_count, align 4, !tbaa !5
  %2904 = add nsw i32 %2903, 1
  store i32 %2904, ptr @test_count, align 4, !tbaa !5
  %2905 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2906 = load i32, ptr %2905, align 4, !tbaa !5
  %2907 = icmp eq i32 %2906, 469762072
  br i1 %2907, label %2961, label %2908

2908:                                             ; preds = %2902
  br label %2909

2909:                                             ; preds = %2908
  br label %2910

2910:                                             ; preds = %2909
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #10
  %2911 = call ptr @__errno_location() #11
  %2912 = load i32, ptr %2911, align 4, !tbaa !5
  store i32 %2912, ptr %75, align 4, !tbaa !5
  %2913 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2914 = call i32 @s2n_print_stacktrace(ptr noundef %2913)
  %2915 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2916 = trunc i8 %2915 to i1
  br i1 %2916, label %2917, label %2939

2917:                                             ; preds = %2910
  %2918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2919 = call i32 @fileno(ptr noundef %2918) #10
  %2920 = call i32 @isatty(i32 noundef %2919) #10
  %2921 = icmp ne i32 %2920, 0
  br i1 %2921, label %2922, label %2939

2922:                                             ; preds = %2917
  %2923 = load i32, ptr %75, align 4, !tbaa !5
  %2924 = call ptr @__errno_location() #11
  store i32 %2923, ptr %2924, align 4, !tbaa !5
  %2925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2926 = load i32, ptr @test_count, align 4, !tbaa !5
  %2927 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2928 = load i32, ptr %2927, align 4, !tbaa !5
  %2929 = call ptr @s2n_strerror(i32 noundef %2928, ptr noundef @.str.3)
  %2930 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2931 = load i32, ptr %2930, align 4, !tbaa !5
  %2932 = call ptr @s2n_strerror_debug(i32 noundef %2931, ptr noundef @.str.3)
  %2933 = call ptr @__errno_location() #11
  %2934 = load i32, ptr %2933, align 4, !tbaa !5
  %2935 = call ptr @strerror(i32 noundef %2934) #10
  %2936 = call ptr @__errno_location() #11
  %2937 = load i32, ptr %2936, align 4, !tbaa !5
  %2938 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2925, ptr noundef @.str, i32 noundef %2926, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 192, ptr noundef %2929, ptr noundef %2932, ptr noundef %2935, i32 noundef %2937) #10
  br label %2956

2939:                                             ; preds = %2917, %2910
  %2940 = load i32, ptr %75, align 4, !tbaa !5
  %2941 = call ptr @__errno_location() #11
  store i32 %2940, ptr %2941, align 4, !tbaa !5
  %2942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2943 = load i32, ptr @test_count, align 4, !tbaa !5
  %2944 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2945 = load i32, ptr %2944, align 4, !tbaa !5
  %2946 = call ptr @s2n_strerror(i32 noundef %2945, ptr noundef @.str.3)
  %2947 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2948 = load i32, ptr %2947, align 4, !tbaa !5
  %2949 = call ptr @s2n_strerror_debug(i32 noundef %2948, ptr noundef @.str.3)
  %2950 = call ptr @__errno_location() #11
  %2951 = load i32, ptr %2950, align 4, !tbaa !5
  %2952 = call ptr @strerror(i32 noundef %2951) #10
  %2953 = call ptr @__errno_location() #11
  %2954 = load i32, ptr %2953, align 4, !tbaa !5
  %2955 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2942, ptr noundef @.str.4, i32 noundef %2943, ptr noundef @.str.31, ptr noundef @.str.2, i32 noundef 192, ptr noundef %2946, ptr noundef %2949, ptr noundef %2952, i32 noundef %2954) #10
  br label %2956

2956:                                             ; preds = %2939, %2922
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #10
  br label %2957

2957:                                             ; preds = %2956
  br label %2958

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

2959:                                             ; No predecessors!
  br label %2960

2960:                                             ; preds = %2959
  br label %2961

2961:                                             ; preds = %2960, %2902
  br label %2962

2962:                                             ; preds = %2961
  br label %2963

2963:                                             ; preds = %2962
  br label %2964

2964:                                             ; preds = %2963
  %2965 = load i32, ptr @test_count, align 4, !tbaa !5
  %2966 = add nsw i32 %2965, 1
  store i32 %2966, ptr @test_count, align 4, !tbaa !5
  %2967 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2968 = load i32, ptr %2967, align 4, !tbaa !5
  %2969 = call ptr @s2n_strerror_debug(i32 noundef %2968, ptr noundef @.str.3)
  %2970 = icmp eq ptr %2969, null
  br i1 %2970, label %2971, label %3024

2971:                                             ; preds = %2964
  br label %2972

2972:                                             ; preds = %2971
  br label %2973

2973:                                             ; preds = %2972
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #10
  %2974 = call ptr @__errno_location() #11
  %2975 = load i32, ptr %2974, align 4, !tbaa !5
  store i32 %2975, ptr %76, align 4, !tbaa !5
  %2976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2977 = call i32 @s2n_print_stacktrace(ptr noundef %2976)
  %2978 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2979 = trunc i8 %2978 to i1
  br i1 %2979, label %2980, label %3002

2980:                                             ; preds = %2973
  %2981 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2982 = call i32 @fileno(ptr noundef %2981) #10
  %2983 = call i32 @isatty(i32 noundef %2982) #10
  %2984 = icmp ne i32 %2983, 0
  br i1 %2984, label %2985, label %3002

2985:                                             ; preds = %2980
  %2986 = load i32, ptr %76, align 4, !tbaa !5
  %2987 = call ptr @__errno_location() #11
  store i32 %2986, ptr %2987, align 4, !tbaa !5
  %2988 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2989 = load i32, ptr @test_count, align 4, !tbaa !5
  %2990 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2991 = load i32, ptr %2990, align 4, !tbaa !5
  %2992 = call ptr @s2n_strerror(i32 noundef %2991, ptr noundef @.str.3)
  %2993 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2994 = load i32, ptr %2993, align 4, !tbaa !5
  %2995 = call ptr @s2n_strerror_debug(i32 noundef %2994, ptr noundef @.str.3)
  %2996 = call ptr @__errno_location() #11
  %2997 = load i32, ptr %2996, align 4, !tbaa !5
  %2998 = call ptr @strerror(i32 noundef %2997) #10
  %2999 = call ptr @__errno_location() #11
  %3000 = load i32, ptr %2999, align 4, !tbaa !5
  %3001 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2988, ptr noundef @.str, i32 noundef %2989, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 192, ptr noundef %2992, ptr noundef %2995, ptr noundef %2998, i32 noundef %3000) #10
  br label %3019

3002:                                             ; preds = %2980, %2973
  %3003 = load i32, ptr %76, align 4, !tbaa !5
  %3004 = call ptr @__errno_location() #11
  store i32 %3003, ptr %3004, align 4, !tbaa !5
  %3005 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3006 = load i32, ptr @test_count, align 4, !tbaa !5
  %3007 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3008 = load i32, ptr %3007, align 4, !tbaa !5
  %3009 = call ptr @s2n_strerror(i32 noundef %3008, ptr noundef @.str.3)
  %3010 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3011 = load i32, ptr %3010, align 4, !tbaa !5
  %3012 = call ptr @s2n_strerror_debug(i32 noundef %3011, ptr noundef @.str.3)
  %3013 = call ptr @__errno_location() #11
  %3014 = load i32, ptr %3013, align 4, !tbaa !5
  %3015 = call ptr @strerror(i32 noundef %3014) #10
  %3016 = call ptr @__errno_location() #11
  %3017 = load i32, ptr %3016, align 4, !tbaa !5
  %3018 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3005, ptr noundef @.str.4, i32 noundef %3006, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 192, ptr noundef %3009, ptr noundef %3012, ptr noundef %3015, i32 noundef %3017) #10
  br label %3019

3019:                                             ; preds = %3002, %2985
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #10
  br label %3020

3020:                                             ; preds = %3019
  br label %3021

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

3022:                                             ; No predecessors!
  br label %3023

3023:                                             ; preds = %3022
  br label %3024

3024:                                             ; preds = %3023, %2964
  br label %3025

3025:                                             ; preds = %3024
  br label %3026

3026:                                             ; preds = %3025
  br label %3027

3027:                                             ; preds = %3026
  br label %3028

3028:                                             ; preds = %3027
  br label %3029

3029:                                             ; preds = %3028
  %3030 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %3030, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %3031 = call ptr @__errno_location() #11
  store i32 0, ptr %3031, align 4, !tbaa !5
  br label %3032

3032:                                             ; preds = %3029
  br label %3033

3033:                                             ; preds = %3032
  br label %3034

3034:                                             ; preds = %3033
  br label %3035

3035:                                             ; preds = %3034
  br label %3036

3036:                                             ; preds = %3035
  %3037 = load i32, ptr @test_count, align 4, !tbaa !5
  %3038 = add nsw i32 %3037, 1
  store i32 %3038, ptr @test_count, align 4, !tbaa !5
  %3039 = load i16, ptr %72, align 2, !tbaa !16
  %3040 = zext i16 %3039 to i32
  %3041 = icmp eq i32 %3040, 0
  br i1 %3041, label %3095, label %3042

3042:                                             ; preds = %3036
  br label %3043

3043:                                             ; preds = %3042
  br label %3044

3044:                                             ; preds = %3043
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #10
  %3045 = call ptr @__errno_location() #11
  %3046 = load i32, ptr %3045, align 4, !tbaa !5
  store i32 %3046, ptr %77, align 4, !tbaa !5
  %3047 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3048 = call i32 @s2n_print_stacktrace(ptr noundef %3047)
  %3049 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3050 = trunc i8 %3049 to i1
  br i1 %3050, label %3051, label %3073

3051:                                             ; preds = %3044
  %3052 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3053 = call i32 @fileno(ptr noundef %3052) #10
  %3054 = call i32 @isatty(i32 noundef %3053) #10
  %3055 = icmp ne i32 %3054, 0
  br i1 %3055, label %3056, label %3073

3056:                                             ; preds = %3051
  %3057 = load i32, ptr %77, align 4, !tbaa !5
  %3058 = call ptr @__errno_location() #11
  store i32 %3057, ptr %3058, align 4, !tbaa !5
  %3059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3060 = load i32, ptr @test_count, align 4, !tbaa !5
  %3061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3062 = load i32, ptr %3061, align 4, !tbaa !5
  %3063 = call ptr @s2n_strerror(i32 noundef %3062, ptr noundef @.str.3)
  %3064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3065 = load i32, ptr %3064, align 4, !tbaa !5
  %3066 = call ptr @s2n_strerror_debug(i32 noundef %3065, ptr noundef @.str.3)
  %3067 = call ptr @__errno_location() #11
  %3068 = load i32, ptr %3067, align 4, !tbaa !5
  %3069 = call ptr @strerror(i32 noundef %3068) #10
  %3070 = call ptr @__errno_location() #11
  %3071 = load i32, ptr %3070, align 4, !tbaa !5
  %3072 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3059, ptr noundef @.str, i32 noundef %3060, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 193, ptr noundef %3063, ptr noundef %3066, ptr noundef %3069, i32 noundef %3071) #10
  br label %3090

3073:                                             ; preds = %3051, %3044
  %3074 = load i32, ptr %77, align 4, !tbaa !5
  %3075 = call ptr @__errno_location() #11
  store i32 %3074, ptr %3075, align 4, !tbaa !5
  %3076 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3077 = load i32, ptr @test_count, align 4, !tbaa !5
  %3078 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3079 = load i32, ptr %3078, align 4, !tbaa !5
  %3080 = call ptr @s2n_strerror(i32 noundef %3079, ptr noundef @.str.3)
  %3081 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3082 = load i32, ptr %3081, align 4, !tbaa !5
  %3083 = call ptr @s2n_strerror_debug(i32 noundef %3082, ptr noundef @.str.3)
  %3084 = call ptr @__errno_location() #11
  %3085 = load i32, ptr %3084, align 4, !tbaa !5
  %3086 = call ptr @strerror(i32 noundef %3085) #10
  %3087 = call ptr @__errno_location() #11
  %3088 = load i32, ptr %3087, align 4, !tbaa !5
  %3089 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3076, ptr noundef @.str.4, i32 noundef %3077, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 193, ptr noundef %3080, ptr noundef %3083, ptr noundef %3086, i32 noundef %3088) #10
  br label %3090

3090:                                             ; preds = %3073, %3056
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  br label %3091

3091:                                             ; preds = %3090
  br label %3092

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

3093:                                             ; No predecessors!
  br label %3094

3094:                                             ; preds = %3093
  br label %3095

3095:                                             ; preds = %3094, %3036
  br label %3096

3096:                                             ; preds = %3095
  br label %3097

3097:                                             ; preds = %3096
  br label %3222

3098:                                             ; preds = %2832
  br label %3099

3099:                                             ; preds = %3098
  %3100 = load i32, ptr @test_count, align 4, !tbaa !5
  %3101 = add nsw i32 %3100, 1
  store i32 %3101, ptr @test_count, align 4, !tbaa !5
  %3102 = load i32, ptr %73, align 4, !tbaa !5
  %3103 = icmp eq i32 %3102, -1
  br i1 %3103, label %3104, label %3157

3104:                                             ; preds = %3099
  br label %3105

3105:                                             ; preds = %3104
  br label %3106

3106:                                             ; preds = %3105
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #10
  %3107 = call ptr @__errno_location() #11
  %3108 = load i32, ptr %3107, align 4, !tbaa !5
  store i32 %3108, ptr %78, align 4, !tbaa !5
  %3109 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3110 = call i32 @s2n_print_stacktrace(ptr noundef %3109)
  %3111 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3112 = trunc i8 %3111 to i1
  br i1 %3112, label %3113, label %3135

3113:                                             ; preds = %3106
  %3114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3115 = call i32 @fileno(ptr noundef %3114) #10
  %3116 = call i32 @isatty(i32 noundef %3115) #10
  %3117 = icmp ne i32 %3116, 0
  br i1 %3117, label %3118, label %3135

3118:                                             ; preds = %3113
  %3119 = load i32, ptr %78, align 4, !tbaa !5
  %3120 = call ptr @__errno_location() #11
  store i32 %3119, ptr %3120, align 4, !tbaa !5
  %3121 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3122 = load i32, ptr @test_count, align 4, !tbaa !5
  %3123 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3124 = load i32, ptr %3123, align 4, !tbaa !5
  %3125 = call ptr @s2n_strerror(i32 noundef %3124, ptr noundef @.str.3)
  %3126 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3127 = load i32, ptr %3126, align 4, !tbaa !5
  %3128 = call ptr @s2n_strerror_debug(i32 noundef %3127, ptr noundef @.str.3)
  %3129 = call ptr @__errno_location() #11
  %3130 = load i32, ptr %3129, align 4, !tbaa !5
  %3131 = call ptr @strerror(i32 noundef %3130) #10
  %3132 = call ptr @__errno_location() #11
  %3133 = load i32, ptr %3132, align 4, !tbaa !5
  %3134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3121, ptr noundef @.str, i32 noundef %3122, ptr noundef @.str.44, ptr noundef @.str.2, i32 noundef 195, ptr noundef %3125, ptr noundef %3128, ptr noundef %3131, i32 noundef %3133) #10
  br label %3152

3135:                                             ; preds = %3113, %3106
  %3136 = load i32, ptr %78, align 4, !tbaa !5
  %3137 = call ptr @__errno_location() #11
  store i32 %3136, ptr %3137, align 4, !tbaa !5
  %3138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3139 = load i32, ptr @test_count, align 4, !tbaa !5
  %3140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3141 = load i32, ptr %3140, align 4, !tbaa !5
  %3142 = call ptr @s2n_strerror(i32 noundef %3141, ptr noundef @.str.3)
  %3143 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3144 = load i32, ptr %3143, align 4, !tbaa !5
  %3145 = call ptr @s2n_strerror_debug(i32 noundef %3144, ptr noundef @.str.3)
  %3146 = call ptr @__errno_location() #11
  %3147 = load i32, ptr %3146, align 4, !tbaa !5
  %3148 = call ptr @strerror(i32 noundef %3147) #10
  %3149 = call ptr @__errno_location() #11
  %3150 = load i32, ptr %3149, align 4, !tbaa !5
  %3151 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3138, ptr noundef @.str.4, i32 noundef %3139, ptr noundef @.str.44, ptr noundef @.str.2, i32 noundef 195, ptr noundef %3142, ptr noundef %3145, ptr noundef %3148, i32 noundef %3150) #10
  br label %3152

3152:                                             ; preds = %3135, %3118
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #10
  br label %3153

3153:                                             ; preds = %3152
  br label %3154

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

3155:                                             ; No predecessors!
  br label %3156

3156:                                             ; preds = %3155
  br label %3157

3157:                                             ; preds = %3156, %3099
  br label %3158

3158:                                             ; preds = %3157
  br label %3159

3159:                                             ; preds = %3158
  br label %3160

3160:                                             ; preds = %3159
  %3161 = load i32, ptr @test_count, align 4, !tbaa !5
  %3162 = add nsw i32 %3161, 1
  store i32 %3162, ptr @test_count, align 4, !tbaa !5
  %3163 = load i16, ptr %72, align 2, !tbaa !16
  %3164 = zext i16 %3163 to i32
  %3165 = icmp eq i32 %3164, 2
  br i1 %3165, label %3219, label %3166

3166:                                             ; preds = %3160
  br label %3167

3167:                                             ; preds = %3166
  br label %3168

3168:                                             ; preds = %3167
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #10
  %3169 = call ptr @__errno_location() #11
  %3170 = load i32, ptr %3169, align 4, !tbaa !5
  store i32 %3170, ptr %79, align 4, !tbaa !5
  %3171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3172 = call i32 @s2n_print_stacktrace(ptr noundef %3171)
  %3173 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3174 = trunc i8 %3173 to i1
  br i1 %3174, label %3175, label %3197

3175:                                             ; preds = %3168
  %3176 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3177 = call i32 @fileno(ptr noundef %3176) #10
  %3178 = call i32 @isatty(i32 noundef %3177) #10
  %3179 = icmp ne i32 %3178, 0
  br i1 %3179, label %3180, label %3197

3180:                                             ; preds = %3175
  %3181 = load i32, ptr %79, align 4, !tbaa !5
  %3182 = call ptr @__errno_location() #11
  store i32 %3181, ptr %3182, align 4, !tbaa !5
  %3183 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3184 = load i32, ptr @test_count, align 4, !tbaa !5
  %3185 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3186 = load i32, ptr %3185, align 4, !tbaa !5
  %3187 = call ptr @s2n_strerror(i32 noundef %3186, ptr noundef @.str.3)
  %3188 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3189 = load i32, ptr %3188, align 4, !tbaa !5
  %3190 = call ptr @s2n_strerror_debug(i32 noundef %3189, ptr noundef @.str.3)
  %3191 = call ptr @__errno_location() #11
  %3192 = load i32, ptr %3191, align 4, !tbaa !5
  %3193 = call ptr @strerror(i32 noundef %3192) #10
  %3194 = call ptr @__errno_location() #11
  %3195 = load i32, ptr %3194, align 4, !tbaa !5
  %3196 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3183, ptr noundef @.str, i32 noundef %3184, ptr noundef @.str.45, ptr noundef @.str.2, i32 noundef 198, ptr noundef %3187, ptr noundef %3190, ptr noundef %3193, i32 noundef %3195) #10
  br label %3214

3197:                                             ; preds = %3175, %3168
  %3198 = load i32, ptr %79, align 4, !tbaa !5
  %3199 = call ptr @__errno_location() #11
  store i32 %3198, ptr %3199, align 4, !tbaa !5
  %3200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3201 = load i32, ptr @test_count, align 4, !tbaa !5
  %3202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3203 = load i32, ptr %3202, align 4, !tbaa !5
  %3204 = call ptr @s2n_strerror(i32 noundef %3203, ptr noundef @.str.3)
  %3205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3206 = load i32, ptr %3205, align 4, !tbaa !5
  %3207 = call ptr @s2n_strerror_debug(i32 noundef %3206, ptr noundef @.str.3)
  %3208 = call ptr @__errno_location() #11
  %3209 = load i32, ptr %3208, align 4, !tbaa !5
  %3210 = call ptr @strerror(i32 noundef %3209) #10
  %3211 = call ptr @__errno_location() #11
  %3212 = load i32, ptr %3211, align 4, !tbaa !5
  %3213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3200, ptr noundef @.str.4, i32 noundef %3201, ptr noundef @.str.45, ptr noundef @.str.2, i32 noundef 198, ptr noundef %3204, ptr noundef %3207, ptr noundef %3210, i32 noundef %3212) #10
  br label %3214

3214:                                             ; preds = %3197, %3180
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #10
  br label %3215

3215:                                             ; preds = %3214
  br label %3216

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

3217:                                             ; No predecessors!
  br label %3218

3218:                                             ; preds = %3217
  br label %3219

3219:                                             ; preds = %3218, %3160
  br label %3220

3220:                                             ; preds = %3219
  br label %3221

3221:                                             ; preds = %3220
  br label %3222

3222:                                             ; preds = %3221, %3097
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  %3223 = call i32 @s2n_connection_ptr_free(ptr noundef %61)
  %3224 = getelementptr inbounds %struct.s2n_result, ptr %80, i32 0, i32 0
  store i32 %3223, ptr %3224, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  %3225 = call i32 @s2n_connection_ptr_free(ptr noundef %59)
  %3226 = getelementptr inbounds %struct.s2n_result, ptr %81, i32 0, i32 0
  store i32 %3225, ptr %3226, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  %3227 = call i32 @s2n_config_ptr_free(ptr noundef %55)
  %3228 = getelementptr inbounds %struct.s2n_result, ptr %82, i32 0, i32 0
  store i32 %3227, ptr %3228, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br label %3229

3229:                                             ; preds = %3222
  %3230 = load i32, ptr %54, align 4, !tbaa !5
  %3231 = add nsw i32 %3230, 1
  store i32 %3231, ptr %54, align 4, !tbaa !5
  br label %2113, !llvm.loop !48

3232:                                             ; preds = %2116
  call void @llvm.lifetime.start.p0(i64 808, ptr %83) #10
  call void @llvm.memset.p0.i64(ptr align 8 %83, i8 0, i64 808, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  %3233 = getelementptr inbounds %struct.s2n_client_hello, ptr %83, i32 0, i32 1
  %3234 = getelementptr inbounds %struct.s2n_parsed_extensions_list, ptr %3233, i32 0, i32 0
  %3235 = load i8, ptr %11, align 1, !tbaa !15
  %3236 = zext i8 %3235 to i64
  %3237 = getelementptr inbounds [21 x %struct.s2n_parsed_extension], ptr %3234, i64 0, i64 %3236
  store ptr %3237, ptr %84, align 8, !tbaa !9
  %3238 = load ptr, ptr %84, align 8, !tbaa !9
  %3239 = getelementptr inbounds %struct.s2n_parsed_extension, ptr %3238, i32 0, i32 1
  store i16 10, ptr %3239, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 34, ptr %85) #10
  call void @llvm.memset.p0.i64(ptr align 16 %85, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %86) #10
  call void @llvm.memset.p0.i64(ptr align 8 %86, i8 0, i64 24, i1 false)
  br label %3240

3240:                                             ; preds = %3232
  %3241 = load i32, ptr @test_count, align 4, !tbaa !5
  %3242 = add nsw i32 %3241, 1
  store i32 %3242, ptr @test_count, align 4, !tbaa !5
  %3243 = getelementptr inbounds [34 x i8], ptr %85, i64 0, i64 0
  %3244 = call i32 @s2n_blob_init(ptr noundef %86, ptr noundef %3243, i32 noundef 34)
  %3245 = icmp eq i32 %3244, -1
  br i1 %3245, label %3246, label %3299

3246:                                             ; preds = %3240
  br label %3247

3247:                                             ; preds = %3246
  br label %3248

3248:                                             ; preds = %3247
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #10
  %3249 = call ptr @__errno_location() #11
  %3250 = load i32, ptr %3249, align 4, !tbaa !5
  store i32 %3250, ptr %87, align 4, !tbaa !5
  %3251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3252 = call i32 @s2n_print_stacktrace(ptr noundef %3251)
  %3253 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3254 = trunc i8 %3253 to i1
  br i1 %3254, label %3255, label %3277

3255:                                             ; preds = %3248
  %3256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3257 = call i32 @fileno(ptr noundef %3256) #10
  %3258 = call i32 @isatty(i32 noundef %3257) #10
  %3259 = icmp ne i32 %3258, 0
  br i1 %3259, label %3260, label %3277

3260:                                             ; preds = %3255
  %3261 = load i32, ptr %87, align 4, !tbaa !5
  %3262 = call ptr @__errno_location() #11
  store i32 %3261, ptr %3262, align 4, !tbaa !5
  %3263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3264 = load i32, ptr @test_count, align 4, !tbaa !5
  %3265 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3266 = load i32, ptr %3265, align 4, !tbaa !5
  %3267 = call ptr @s2n_strerror(i32 noundef %3266, ptr noundef @.str.3)
  %3268 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3269 = load i32, ptr %3268, align 4, !tbaa !5
  %3270 = call ptr @s2n_strerror_debug(i32 noundef %3269, ptr noundef @.str.3)
  %3271 = call ptr @__errno_location() #11
  %3272 = load i32, ptr %3271, align 4, !tbaa !5
  %3273 = call ptr @strerror(i32 noundef %3272) #10
  %3274 = call ptr @__errno_location() #11
  %3275 = load i32, ptr %3274, align 4, !tbaa !5
  %3276 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3263, ptr noundef @.str, i32 noundef %3264, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 213, ptr noundef %3267, ptr noundef %3270, ptr noundef %3273, i32 noundef %3275) #10
  br label %3294

3277:                                             ; preds = %3255, %3248
  %3278 = load i32, ptr %87, align 4, !tbaa !5
  %3279 = call ptr @__errno_location() #11
  store i32 %3278, ptr %3279, align 4, !tbaa !5
  %3280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3281 = load i32, ptr @test_count, align 4, !tbaa !5
  %3282 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3283 = load i32, ptr %3282, align 4, !tbaa !5
  %3284 = call ptr @s2n_strerror(i32 noundef %3283, ptr noundef @.str.3)
  %3285 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3286 = load i32, ptr %3285, align 4, !tbaa !5
  %3287 = call ptr @s2n_strerror_debug(i32 noundef %3286, ptr noundef @.str.3)
  %3288 = call ptr @__errno_location() #11
  %3289 = load i32, ptr %3288, align 4, !tbaa !5
  %3290 = call ptr @strerror(i32 noundef %3289) #10
  %3291 = call ptr @__errno_location() #11
  %3292 = load i32, ptr %3291, align 4, !tbaa !5
  %3293 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3280, ptr noundef @.str.4, i32 noundef %3281, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 213, ptr noundef %3284, ptr noundef %3287, ptr noundef %3290, i32 noundef %3292) #10
  br label %3294

3294:                                             ; preds = %3277, %3260
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #10
  br label %3295

3295:                                             ; preds = %3294
  br label %3296

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

3297:                                             ; No predecessors!
  br label %3298

3298:                                             ; preds = %3297
  br label %3299

3299:                                             ; preds = %3298, %3240
  br label %3300

3300:                                             ; preds = %3299
  br label %3301

3301:                                             ; preds = %3300
  %3302 = load ptr, ptr %84, align 8, !tbaa !9
  %3303 = getelementptr inbounds %struct.s2n_parsed_extension, ptr %3302, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3303, ptr align 8 %86, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr %88) #10
  call void @llvm.memset.p0.i64(ptr align 8 %88, i8 0, i64 40, i1 false)
  br label %3304

3304:                                             ; preds = %3301
  %3305 = load i32, ptr @test_count, align 4, !tbaa !5
  %3306 = add nsw i32 %3305, 1
  store i32 %3306, ptr @test_count, align 4, !tbaa !5
  %3307 = call i32 @s2n_stuffer_init(ptr noundef %88, ptr noundef %86)
  %3308 = icmp eq i32 %3307, -1
  br i1 %3308, label %3309, label %3362

3309:                                             ; preds = %3304
  br label %3310

3310:                                             ; preds = %3309
  br label %3311

3311:                                             ; preds = %3310
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #10
  %3312 = call ptr @__errno_location() #11
  %3313 = load i32, ptr %3312, align 4, !tbaa !5
  store i32 %3313, ptr %89, align 4, !tbaa !5
  %3314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3315 = call i32 @s2n_print_stacktrace(ptr noundef %3314)
  %3316 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3317 = trunc i8 %3316 to i1
  br i1 %3317, label %3318, label %3340

3318:                                             ; preds = %3311
  %3319 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3320 = call i32 @fileno(ptr noundef %3319) #10
  %3321 = call i32 @isatty(i32 noundef %3320) #10
  %3322 = icmp ne i32 %3321, 0
  br i1 %3322, label %3323, label %3340

3323:                                             ; preds = %3318
  %3324 = load i32, ptr %89, align 4, !tbaa !5
  %3325 = call ptr @__errno_location() #11
  store i32 %3324, ptr %3325, align 4, !tbaa !5
  %3326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3327 = load i32, ptr @test_count, align 4, !tbaa !5
  %3328 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3329 = load i32, ptr %3328, align 4, !tbaa !5
  %3330 = call ptr @s2n_strerror(i32 noundef %3329, ptr noundef @.str.3)
  %3331 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3332 = load i32, ptr %3331, align 4, !tbaa !5
  %3333 = call ptr @s2n_strerror_debug(i32 noundef %3332, ptr noundef @.str.3)
  %3334 = call ptr @__errno_location() #11
  %3335 = load i32, ptr %3334, align 4, !tbaa !5
  %3336 = call ptr @strerror(i32 noundef %3335) #10
  %3337 = call ptr @__errno_location() #11
  %3338 = load i32, ptr %3337, align 4, !tbaa !5
  %3339 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3326, ptr noundef @.str, i32 noundef %3327, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 217, ptr noundef %3330, ptr noundef %3333, ptr noundef %3336, i32 noundef %3338) #10
  br label %3357

3340:                                             ; preds = %3318, %3311
  %3341 = load i32, ptr %89, align 4, !tbaa !5
  %3342 = call ptr @__errno_location() #11
  store i32 %3341, ptr %3342, align 4, !tbaa !5
  %3343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3344 = load i32, ptr @test_count, align 4, !tbaa !5
  %3345 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3346 = load i32, ptr %3345, align 4, !tbaa !5
  %3347 = call ptr @s2n_strerror(i32 noundef %3346, ptr noundef @.str.3)
  %3348 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3349 = load i32, ptr %3348, align 4, !tbaa !5
  %3350 = call ptr @s2n_strerror_debug(i32 noundef %3349, ptr noundef @.str.3)
  %3351 = call ptr @__errno_location() #11
  %3352 = load i32, ptr %3351, align 4, !tbaa !5
  %3353 = call ptr @strerror(i32 noundef %3352) #10
  %3354 = call ptr @__errno_location() #11
  %3355 = load i32, ptr %3354, align 4, !tbaa !5
  %3356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3343, ptr noundef @.str.4, i32 noundef %3344, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 217, ptr noundef %3347, ptr noundef %3350, ptr noundef %3353, i32 noundef %3355) #10
  br label %3357

3357:                                             ; preds = %3340, %3323
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #10
  br label %3358

3358:                                             ; preds = %3357
  br label %3359

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

3360:                                             ; No predecessors!
  br label %3361

3361:                                             ; preds = %3360
  br label %3362

3362:                                             ; preds = %3361, %3304
  br label %3363

3363:                                             ; preds = %3362
  br label %3364

3364:                                             ; preds = %3363
  br label %3365

3365:                                             ; preds = %3364
  %3366 = load i32, ptr @test_count, align 4, !tbaa !5
  %3367 = add nsw i32 %3366, 1
  store i32 %3367, ptr @test_count, align 4, !tbaa !5
  %3368 = call i32 @s2n_stuffer_write_uint16(ptr noundef %88, i16 noundef zeroext 32)
  %3369 = icmp eq i32 %3368, -1
  br i1 %3369, label %3370, label %3423

3370:                                             ; preds = %3365
  br label %3371

3371:                                             ; preds = %3370
  br label %3372

3372:                                             ; preds = %3371
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #10
  %3373 = call ptr @__errno_location() #11
  %3374 = load i32, ptr %3373, align 4, !tbaa !5
  store i32 %3374, ptr %90, align 4, !tbaa !5
  %3375 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3376 = call i32 @s2n_print_stacktrace(ptr noundef %3375)
  %3377 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3378 = trunc i8 %3377 to i1
  br i1 %3378, label %3379, label %3401

3379:                                             ; preds = %3372
  %3380 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3381 = call i32 @fileno(ptr noundef %3380) #10
  %3382 = call i32 @isatty(i32 noundef %3381) #10
  %3383 = icmp ne i32 %3382, 0
  br i1 %3383, label %3384, label %3401

3384:                                             ; preds = %3379
  %3385 = load i32, ptr %90, align 4, !tbaa !5
  %3386 = call ptr @__errno_location() #11
  store i32 %3385, ptr %3386, align 4, !tbaa !5
  %3387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3388 = load i32, ptr @test_count, align 4, !tbaa !5
  %3389 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3390 = load i32, ptr %3389, align 4, !tbaa !5
  %3391 = call ptr @s2n_strerror(i32 noundef %3390, ptr noundef @.str.3)
  %3392 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3393 = load i32, ptr %3392, align 4, !tbaa !5
  %3394 = call ptr @s2n_strerror_debug(i32 noundef %3393, ptr noundef @.str.3)
  %3395 = call ptr @__errno_location() #11
  %3396 = load i32, ptr %3395, align 4, !tbaa !5
  %3397 = call ptr @strerror(i32 noundef %3396) #10
  %3398 = call ptr @__errno_location() #11
  %3399 = load i32, ptr %3398, align 4, !tbaa !5
  %3400 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3387, ptr noundef @.str, i32 noundef %3388, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 219, ptr noundef %3391, ptr noundef %3394, ptr noundef %3397, i32 noundef %3399) #10
  br label %3418

3401:                                             ; preds = %3379, %3372
  %3402 = load i32, ptr %90, align 4, !tbaa !5
  %3403 = call ptr @__errno_location() #11
  store i32 %3402, ptr %3403, align 4, !tbaa !5
  %3404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3405 = load i32, ptr @test_count, align 4, !tbaa !5
  %3406 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3407 = load i32, ptr %3406, align 4, !tbaa !5
  %3408 = call ptr @s2n_strerror(i32 noundef %3407, ptr noundef @.str.3)
  %3409 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3410 = load i32, ptr %3409, align 4, !tbaa !5
  %3411 = call ptr @s2n_strerror_debug(i32 noundef %3410, ptr noundef @.str.3)
  %3412 = call ptr @__errno_location() #11
  %3413 = load i32, ptr %3412, align 4, !tbaa !5
  %3414 = call ptr @strerror(i32 noundef %3413) #10
  %3415 = call ptr @__errno_location() #11
  %3416 = load i32, ptr %3415, align 4, !tbaa !5
  %3417 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3404, ptr noundef @.str.4, i32 noundef %3405, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 219, ptr noundef %3408, ptr noundef %3411, ptr noundef %3414, i32 noundef %3416) #10
  br label %3418

3418:                                             ; preds = %3401, %3384
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #10
  br label %3419

3419:                                             ; preds = %3418
  br label %3420

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

3421:                                             ; No predecessors!
  br label %3422

3422:                                             ; preds = %3421
  br label %3423

3423:                                             ; preds = %3422, %3365
  br label %3424

3424:                                             ; preds = %3423
  br label %3425

3425:                                             ; preds = %3424
  call void @llvm.lifetime.start.p0(i64 32, ptr %91) #10
  call void @llvm.memset.p0.i64(ptr align 16 %91, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %92) #10
  store i16 0, ptr %92, align 2, !tbaa !16
  br label %3426

3426:                                             ; preds = %3425
  %3427 = load i32, ptr @test_count, align 4, !tbaa !5
  %3428 = add nsw i32 %3427, 1
  store i32 %3428, ptr @test_count, align 4, !tbaa !5
  %3429 = getelementptr inbounds [16 x i16], ptr %91, i64 0, i64 0
  %3430 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %83, ptr noundef %3429, i16 noundef zeroext 16, ptr noundef %92)
  %3431 = icmp eq i32 %3430, -1
  br i1 %3431, label %3432, label %3485

3432:                                             ; preds = %3426
  br label %3433

3433:                                             ; preds = %3432
  br label %3434

3434:                                             ; preds = %3433
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #10
  %3435 = call ptr @__errno_location() #11
  %3436 = load i32, ptr %3435, align 4, !tbaa !5
  store i32 %3436, ptr %93, align 4, !tbaa !5
  %3437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3438 = call i32 @s2n_print_stacktrace(ptr noundef %3437)
  %3439 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3440 = trunc i8 %3439 to i1
  br i1 %3440, label %3441, label %3463

3441:                                             ; preds = %3434
  %3442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3443 = call i32 @fileno(ptr noundef %3442) #10
  %3444 = call i32 @isatty(i32 noundef %3443) #10
  %3445 = icmp ne i32 %3444, 0
  br i1 %3445, label %3446, label %3463

3446:                                             ; preds = %3441
  %3447 = load i32, ptr %93, align 4, !tbaa !5
  %3448 = call ptr @__errno_location() #11
  store i32 %3447, ptr %3448, align 4, !tbaa !5
  %3449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3450 = load i32, ptr @test_count, align 4, !tbaa !5
  %3451 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3452 = load i32, ptr %3451, align 4, !tbaa !5
  %3453 = call ptr @s2n_strerror(i32 noundef %3452, ptr noundef @.str.3)
  %3454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3455 = load i32, ptr %3454, align 4, !tbaa !5
  %3456 = call ptr @s2n_strerror_debug(i32 noundef %3455, ptr noundef @.str.3)
  %3457 = call ptr @__errno_location() #11
  %3458 = load i32, ptr %3457, align 4, !tbaa !5
  %3459 = call ptr @strerror(i32 noundef %3458) #10
  %3460 = call ptr @__errno_location() #11
  %3461 = load i32, ptr %3460, align 4, !tbaa !5
  %3462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3449, ptr noundef @.str, i32 noundef %3450, ptr noundef @.str.46, ptr noundef @.str.2, i32 noundef 224, ptr noundef %3453, ptr noundef %3456, ptr noundef %3459, i32 noundef %3461) #10
  br label %3480

3463:                                             ; preds = %3441, %3434
  %3464 = load i32, ptr %93, align 4, !tbaa !5
  %3465 = call ptr @__errno_location() #11
  store i32 %3464, ptr %3465, align 4, !tbaa !5
  %3466 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3467 = load i32, ptr @test_count, align 4, !tbaa !5
  %3468 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3469 = load i32, ptr %3468, align 4, !tbaa !5
  %3470 = call ptr @s2n_strerror(i32 noundef %3469, ptr noundef @.str.3)
  %3471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3472 = load i32, ptr %3471, align 4, !tbaa !5
  %3473 = call ptr @s2n_strerror_debug(i32 noundef %3472, ptr noundef @.str.3)
  %3474 = call ptr @__errno_location() #11
  %3475 = load i32, ptr %3474, align 4, !tbaa !5
  %3476 = call ptr @strerror(i32 noundef %3475) #10
  %3477 = call ptr @__errno_location() #11
  %3478 = load i32, ptr %3477, align 4, !tbaa !5
  %3479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3466, ptr noundef @.str.4, i32 noundef %3467, ptr noundef @.str.46, ptr noundef @.str.2, i32 noundef 224, ptr noundef %3470, ptr noundef %3473, ptr noundef %3476, i32 noundef %3478) #10
  br label %3480

3480:                                             ; preds = %3463, %3446
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #10
  br label %3481

3481:                                             ; preds = %3480
  br label %3482

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

3483:                                             ; No predecessors!
  br label %3484

3484:                                             ; preds = %3483
  br label %3485

3485:                                             ; preds = %3484, %3426
  br label %3486

3486:                                             ; preds = %3485
  br label %3487

3487:                                             ; preds = %3486
  br label %3488

3488:                                             ; preds = %3487
  %3489 = load i32, ptr @test_count, align 4, !tbaa !5
  %3490 = add nsw i32 %3489, 1
  store i32 %3490, ptr @test_count, align 4, !tbaa !5
  %3491 = load i16, ptr %92, align 2, !tbaa !16
  %3492 = zext i16 %3491 to i32
  %3493 = icmp eq i32 %3492, 16
  br i1 %3493, label %3547, label %3494

3494:                                             ; preds = %3488
  br label %3495

3495:                                             ; preds = %3494
  br label %3496

3496:                                             ; preds = %3495
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #10
  %3497 = call ptr @__errno_location() #11
  %3498 = load i32, ptr %3497, align 4, !tbaa !5
  store i32 %3498, ptr %94, align 4, !tbaa !5
  %3499 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3500 = call i32 @s2n_print_stacktrace(ptr noundef %3499)
  %3501 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3502 = trunc i8 %3501 to i1
  br i1 %3502, label %3503, label %3525

3503:                                             ; preds = %3496
  %3504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3505 = call i32 @fileno(ptr noundef %3504) #10
  %3506 = call i32 @isatty(i32 noundef %3505) #10
  %3507 = icmp ne i32 %3506, 0
  br i1 %3507, label %3508, label %3525

3508:                                             ; preds = %3503
  %3509 = load i32, ptr %94, align 4, !tbaa !5
  %3510 = call ptr @__errno_location() #11
  store i32 %3509, ptr %3510, align 4, !tbaa !5
  %3511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3512 = load i32, ptr @test_count, align 4, !tbaa !5
  %3513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3514 = load i32, ptr %3513, align 4, !tbaa !5
  %3515 = call ptr @s2n_strerror(i32 noundef %3514, ptr noundef @.str.3)
  %3516 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3517 = load i32, ptr %3516, align 4, !tbaa !5
  %3518 = call ptr @s2n_strerror_debug(i32 noundef %3517, ptr noundef @.str.3)
  %3519 = call ptr @__errno_location() #11
  %3520 = load i32, ptr %3519, align 4, !tbaa !5
  %3521 = call ptr @strerror(i32 noundef %3520) #10
  %3522 = call ptr @__errno_location() #11
  %3523 = load i32, ptr %3522, align 4, !tbaa !5
  %3524 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3511, ptr noundef @.str, i32 noundef %3512, ptr noundef @.str.30, ptr noundef @.str.2, i32 noundef 226, ptr noundef %3515, ptr noundef %3518, ptr noundef %3521, i32 noundef %3523) #10
  br label %3542

3525:                                             ; preds = %3503, %3496
  %3526 = load i32, ptr %94, align 4, !tbaa !5
  %3527 = call ptr @__errno_location() #11
  store i32 %3526, ptr %3527, align 4, !tbaa !5
  %3528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3529 = load i32, ptr @test_count, align 4, !tbaa !5
  %3530 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3531 = load i32, ptr %3530, align 4, !tbaa !5
  %3532 = call ptr @s2n_strerror(i32 noundef %3531, ptr noundef @.str.3)
  %3533 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3534 = load i32, ptr %3533, align 4, !tbaa !5
  %3535 = call ptr @s2n_strerror_debug(i32 noundef %3534, ptr noundef @.str.3)
  %3536 = call ptr @__errno_location() #11
  %3537 = load i32, ptr %3536, align 4, !tbaa !5
  %3538 = call ptr @strerror(i32 noundef %3537) #10
  %3539 = call ptr @__errno_location() #11
  %3540 = load i32, ptr %3539, align 4, !tbaa !5
  %3541 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3528, ptr noundef @.str.4, i32 noundef %3529, ptr noundef @.str.30, ptr noundef @.str.2, i32 noundef 226, ptr noundef %3532, ptr noundef %3535, ptr noundef %3538, i32 noundef %3540) #10
  br label %3542

3542:                                             ; preds = %3525, %3508
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #10
  br label %3543

3543:                                             ; preds = %3542
  br label %3544

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

3545:                                             ; No predecessors!
  br label %3546

3546:                                             ; preds = %3545
  br label %3547

3547:                                             ; preds = %3546, %3488
  br label %3548

3548:                                             ; preds = %3547
  br label %3549

3549:                                             ; preds = %3548
  call void @llvm.lifetime.end.p0(i64 2, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %86) #10
  call void @llvm.lifetime.end.p0(i64 34, ptr %85) #10
  call void @llvm.lifetime.start.p0(i64 34, ptr %95) #10
  call void @llvm.memset.p0.i64(ptr align 16 %95, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %96) #10
  call void @llvm.memset.p0.i64(ptr align 8 %96, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #10
  store i32 32, ptr %97, align 4, !tbaa !5
  br label %3550

3550:                                             ; preds = %3549
  %3551 = load i32, ptr @test_count, align 4, !tbaa !5
  %3552 = add nsw i32 %3551, 1
  store i32 %3552, ptr @test_count, align 4, !tbaa !5
  %3553 = getelementptr inbounds [34 x i8], ptr %95, i64 0, i64 0
  %3554 = load i32, ptr %97, align 4, !tbaa !5
  %3555 = call i32 @s2n_blob_init(ptr noundef %96, ptr noundef %3553, i32 noundef %3554)
  %3556 = icmp eq i32 %3555, -1
  br i1 %3556, label %3557, label %3610

3557:                                             ; preds = %3550
  br label %3558

3558:                                             ; preds = %3557
  br label %3559

3559:                                             ; preds = %3558
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #10
  %3560 = call ptr @__errno_location() #11
  %3561 = load i32, ptr %3560, align 4, !tbaa !5
  store i32 %3561, ptr %98, align 4, !tbaa !5
  %3562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3563 = call i32 @s2n_print_stacktrace(ptr noundef %3562)
  %3564 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3565 = trunc i8 %3564 to i1
  br i1 %3565, label %3566, label %3588

3566:                                             ; preds = %3559
  %3567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3568 = call i32 @fileno(ptr noundef %3567) #10
  %3569 = call i32 @isatty(i32 noundef %3568) #10
  %3570 = icmp ne i32 %3569, 0
  br i1 %3570, label %3571, label %3588

3571:                                             ; preds = %3566
  %3572 = load i32, ptr %98, align 4, !tbaa !5
  %3573 = call ptr @__errno_location() #11
  store i32 %3572, ptr %3573, align 4, !tbaa !5
  %3574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3575 = load i32, ptr @test_count, align 4, !tbaa !5
  %3576 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3577 = load i32, ptr %3576, align 4, !tbaa !5
  %3578 = call ptr @s2n_strerror(i32 noundef %3577, ptr noundef @.str.3)
  %3579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3580 = load i32, ptr %3579, align 4, !tbaa !5
  %3581 = call ptr @s2n_strerror_debug(i32 noundef %3580, ptr noundef @.str.3)
  %3582 = call ptr @__errno_location() #11
  %3583 = load i32, ptr %3582, align 4, !tbaa !5
  %3584 = call ptr @strerror(i32 noundef %3583) #10
  %3585 = call ptr @__errno_location() #11
  %3586 = load i32, ptr %3585, align 4, !tbaa !5
  %3587 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3574, ptr noundef @.str, i32 noundef %3575, ptr noundef @.str.47, ptr noundef @.str.2, i32 noundef 234, ptr noundef %3578, ptr noundef %3581, ptr noundef %3584, i32 noundef %3586) #10
  br label %3605

3588:                                             ; preds = %3566, %3559
  %3589 = load i32, ptr %98, align 4, !tbaa !5
  %3590 = call ptr @__errno_location() #11
  store i32 %3589, ptr %3590, align 4, !tbaa !5
  %3591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3592 = load i32, ptr @test_count, align 4, !tbaa !5
  %3593 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3594 = load i32, ptr %3593, align 4, !tbaa !5
  %3595 = call ptr @s2n_strerror(i32 noundef %3594, ptr noundef @.str.3)
  %3596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3597 = load i32, ptr %3596, align 4, !tbaa !5
  %3598 = call ptr @s2n_strerror_debug(i32 noundef %3597, ptr noundef @.str.3)
  %3599 = call ptr @__errno_location() #11
  %3600 = load i32, ptr %3599, align 4, !tbaa !5
  %3601 = call ptr @strerror(i32 noundef %3600) #10
  %3602 = call ptr @__errno_location() #11
  %3603 = load i32, ptr %3602, align 4, !tbaa !5
  %3604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3591, ptr noundef @.str.4, i32 noundef %3592, ptr noundef @.str.47, ptr noundef @.str.2, i32 noundef 234, ptr noundef %3595, ptr noundef %3598, ptr noundef %3601, i32 noundef %3603) #10
  br label %3605

3605:                                             ; preds = %3588, %3571
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #10
  br label %3606

3606:                                             ; preds = %3605
  br label %3607

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

3608:                                             ; No predecessors!
  br label %3609

3609:                                             ; preds = %3608
  br label %3610

3610:                                             ; preds = %3609, %3550
  br label %3611

3611:                                             ; preds = %3610
  br label %3612

3612:                                             ; preds = %3611
  %3613 = load ptr, ptr %84, align 8, !tbaa !9
  %3614 = getelementptr inbounds %struct.s2n_parsed_extension, ptr %3613, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3614, ptr align 8 %96, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr %99) #10
  call void @llvm.memset.p0.i64(ptr align 8 %99, i8 0, i64 40, i1 false)
  br label %3615

3615:                                             ; preds = %3612
  %3616 = load i32, ptr @test_count, align 4, !tbaa !5
  %3617 = add nsw i32 %3616, 1
  store i32 %3617, ptr @test_count, align 4, !tbaa !5
  %3618 = call i32 @s2n_stuffer_init(ptr noundef %99, ptr noundef %96)
  %3619 = icmp eq i32 %3618, -1
  br i1 %3619, label %3620, label %3673

3620:                                             ; preds = %3615
  br label %3621

3621:                                             ; preds = %3620
  br label %3622

3622:                                             ; preds = %3621
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #10
  %3623 = call ptr @__errno_location() #11
  %3624 = load i32, ptr %3623, align 4, !tbaa !5
  store i32 %3624, ptr %100, align 4, !tbaa !5
  %3625 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3626 = call i32 @s2n_print_stacktrace(ptr noundef %3625)
  %3627 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3628 = trunc i8 %3627 to i1
  br i1 %3628, label %3629, label %3651

3629:                                             ; preds = %3622
  %3630 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3631 = call i32 @fileno(ptr noundef %3630) #10
  %3632 = call i32 @isatty(i32 noundef %3631) #10
  %3633 = icmp ne i32 %3632, 0
  br i1 %3633, label %3634, label %3651

3634:                                             ; preds = %3629
  %3635 = load i32, ptr %100, align 4, !tbaa !5
  %3636 = call ptr @__errno_location() #11
  store i32 %3635, ptr %3636, align 4, !tbaa !5
  %3637 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3638 = load i32, ptr @test_count, align 4, !tbaa !5
  %3639 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3640 = load i32, ptr %3639, align 4, !tbaa !5
  %3641 = call ptr @s2n_strerror(i32 noundef %3640, ptr noundef @.str.3)
  %3642 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3643 = load i32, ptr %3642, align 4, !tbaa !5
  %3644 = call ptr @s2n_strerror_debug(i32 noundef %3643, ptr noundef @.str.3)
  %3645 = call ptr @__errno_location() #11
  %3646 = load i32, ptr %3645, align 4, !tbaa !5
  %3647 = call ptr @strerror(i32 noundef %3646) #10
  %3648 = call ptr @__errno_location() #11
  %3649 = load i32, ptr %3648, align 4, !tbaa !5
  %3650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3637, ptr noundef @.str, i32 noundef %3638, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 238, ptr noundef %3641, ptr noundef %3644, ptr noundef %3647, i32 noundef %3649) #10
  br label %3668

3651:                                             ; preds = %3629, %3622
  %3652 = load i32, ptr %100, align 4, !tbaa !5
  %3653 = call ptr @__errno_location() #11
  store i32 %3652, ptr %3653, align 4, !tbaa !5
  %3654 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3655 = load i32, ptr @test_count, align 4, !tbaa !5
  %3656 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3657 = load i32, ptr %3656, align 4, !tbaa !5
  %3658 = call ptr @s2n_strerror(i32 noundef %3657, ptr noundef @.str.3)
  %3659 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3660 = load i32, ptr %3659, align 4, !tbaa !5
  %3661 = call ptr @s2n_strerror_debug(i32 noundef %3660, ptr noundef @.str.3)
  %3662 = call ptr @__errno_location() #11
  %3663 = load i32, ptr %3662, align 4, !tbaa !5
  %3664 = call ptr @strerror(i32 noundef %3663) #10
  %3665 = call ptr @__errno_location() #11
  %3666 = load i32, ptr %3665, align 4, !tbaa !5
  %3667 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3654, ptr noundef @.str.4, i32 noundef %3655, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 238, ptr noundef %3658, ptr noundef %3661, ptr noundef %3664, i32 noundef %3666) #10
  br label %3668

3668:                                             ; preds = %3651, %3634
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #10
  br label %3669

3669:                                             ; preds = %3668
  br label %3670

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

3671:                                             ; No predecessors!
  br label %3672

3672:                                             ; preds = %3671
  br label %3673

3673:                                             ; preds = %3672, %3615
  br label %3674

3674:                                             ; preds = %3673
  br label %3675

3675:                                             ; preds = %3674
  br label %3676

3676:                                             ; preds = %3675
  %3677 = load i32, ptr @test_count, align 4, !tbaa !5
  %3678 = add nsw i32 %3677, 1
  store i32 %3678, ptr @test_count, align 4, !tbaa !5
  %3679 = call i32 @s2n_stuffer_write_uint16(ptr noundef %99, i16 noundef zeroext 32)
  %3680 = icmp eq i32 %3679, -1
  br i1 %3680, label %3681, label %3734

3681:                                             ; preds = %3676
  br label %3682

3682:                                             ; preds = %3681
  br label %3683

3683:                                             ; preds = %3682
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #10
  %3684 = call ptr @__errno_location() #11
  %3685 = load i32, ptr %3684, align 4, !tbaa !5
  store i32 %3685, ptr %101, align 4, !tbaa !5
  %3686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3687 = call i32 @s2n_print_stacktrace(ptr noundef %3686)
  %3688 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3689 = trunc i8 %3688 to i1
  br i1 %3689, label %3690, label %3712

3690:                                             ; preds = %3683
  %3691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3692 = call i32 @fileno(ptr noundef %3691) #10
  %3693 = call i32 @isatty(i32 noundef %3692) #10
  %3694 = icmp ne i32 %3693, 0
  br i1 %3694, label %3695, label %3712

3695:                                             ; preds = %3690
  %3696 = load i32, ptr %101, align 4, !tbaa !5
  %3697 = call ptr @__errno_location() #11
  store i32 %3696, ptr %3697, align 4, !tbaa !5
  %3698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3699 = load i32, ptr @test_count, align 4, !tbaa !5
  %3700 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3701 = load i32, ptr %3700, align 4, !tbaa !5
  %3702 = call ptr @s2n_strerror(i32 noundef %3701, ptr noundef @.str.3)
  %3703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3704 = load i32, ptr %3703, align 4, !tbaa !5
  %3705 = call ptr @s2n_strerror_debug(i32 noundef %3704, ptr noundef @.str.3)
  %3706 = call ptr @__errno_location() #11
  %3707 = load i32, ptr %3706, align 4, !tbaa !5
  %3708 = call ptr @strerror(i32 noundef %3707) #10
  %3709 = call ptr @__errno_location() #11
  %3710 = load i32, ptr %3709, align 4, !tbaa !5
  %3711 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3698, ptr noundef @.str, i32 noundef %3699, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 239, ptr noundef %3702, ptr noundef %3705, ptr noundef %3708, i32 noundef %3710) #10
  br label %3729

3712:                                             ; preds = %3690, %3683
  %3713 = load i32, ptr %101, align 4, !tbaa !5
  %3714 = call ptr @__errno_location() #11
  store i32 %3713, ptr %3714, align 4, !tbaa !5
  %3715 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3716 = load i32, ptr @test_count, align 4, !tbaa !5
  %3717 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3718 = load i32, ptr %3717, align 4, !tbaa !5
  %3719 = call ptr @s2n_strerror(i32 noundef %3718, ptr noundef @.str.3)
  %3720 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3721 = load i32, ptr %3720, align 4, !tbaa !5
  %3722 = call ptr @s2n_strerror_debug(i32 noundef %3721, ptr noundef @.str.3)
  %3723 = call ptr @__errno_location() #11
  %3724 = load i32, ptr %3723, align 4, !tbaa !5
  %3725 = call ptr @strerror(i32 noundef %3724) #10
  %3726 = call ptr @__errno_location() #11
  %3727 = load i32, ptr %3726, align 4, !tbaa !5
  %3728 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3715, ptr noundef @.str.4, i32 noundef %3716, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 239, ptr noundef %3719, ptr noundef %3722, ptr noundef %3725, i32 noundef %3727) #10
  br label %3729

3729:                                             ; preds = %3712, %3695
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #10
  br label %3730

3730:                                             ; preds = %3729
  br label %3731

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

3732:                                             ; No predecessors!
  br label %3733

3733:                                             ; preds = %3732
  br label %3734

3734:                                             ; preds = %3733, %3676
  br label %3735

3735:                                             ; preds = %3734
  br label %3736

3736:                                             ; preds = %3735
  call void @llvm.lifetime.start.p0(i64 32, ptr %102) #10
  call void @llvm.memset.p0.i64(ptr align 16 %102, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %103) #10
  store i16 0, ptr %103, align 2, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #10
  %3737 = getelementptr inbounds [16 x i16], ptr %102, i64 0, i64 0
  %3738 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %83, ptr noundef %3737, i16 noundef zeroext 16, ptr noundef %103)
  store i32 %3738, ptr %104, align 4, !tbaa !5
  br label %3739

3739:                                             ; preds = %3736
  br label %3740

3740:                                             ; preds = %3739
  br label %3741

3741:                                             ; preds = %3740
  %3742 = load i32, ptr @test_count, align 4, !tbaa !5
  %3743 = add nsw i32 %3742, 1
  store i32 %3743, ptr @test_count, align 4, !tbaa !5
  %3744 = load i32, ptr %104, align 4, !tbaa !5
  %3745 = icmp eq i32 %3744, -1
  br i1 %3745, label %3799, label %3746

3746:                                             ; preds = %3741
  br label %3747

3747:                                             ; preds = %3746
  br label %3748

3748:                                             ; preds = %3747
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #10
  %3749 = call ptr @__errno_location() #11
  %3750 = load i32, ptr %3749, align 4, !tbaa !5
  store i32 %3750, ptr %105, align 4, !tbaa !5
  %3751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3752 = call i32 @s2n_print_stacktrace(ptr noundef %3751)
  %3753 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3754 = trunc i8 %3753 to i1
  br i1 %3754, label %3755, label %3777

3755:                                             ; preds = %3748
  %3756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3757 = call i32 @fileno(ptr noundef %3756) #10
  %3758 = call i32 @isatty(i32 noundef %3757) #10
  %3759 = icmp ne i32 %3758, 0
  br i1 %3759, label %3760, label %3777

3760:                                             ; preds = %3755
  %3761 = load i32, ptr %105, align 4, !tbaa !5
  %3762 = call ptr @__errno_location() #11
  store i32 %3761, ptr %3762, align 4, !tbaa !5
  %3763 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3764 = load i32, ptr @test_count, align 4, !tbaa !5
  %3765 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3766 = load i32, ptr %3765, align 4, !tbaa !5
  %3767 = call ptr @s2n_strerror(i32 noundef %3766, ptr noundef @.str.3)
  %3768 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3769 = load i32, ptr %3768, align 4, !tbaa !5
  %3770 = call ptr @s2n_strerror_debug(i32 noundef %3769, ptr noundef @.str.3)
  %3771 = call ptr @__errno_location() #11
  %3772 = load i32, ptr %3771, align 4, !tbaa !5
  %3773 = call ptr @strerror(i32 noundef %3772) #10
  %3774 = call ptr @__errno_location() #11
  %3775 = load i32, ptr %3774, align 4, !tbaa !5
  %3776 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3763, ptr noundef @.str, i32 noundef %3764, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 245, ptr noundef %3767, ptr noundef %3770, ptr noundef %3773, i32 noundef %3775) #10
  br label %3794

3777:                                             ; preds = %3755, %3748
  %3778 = load i32, ptr %105, align 4, !tbaa !5
  %3779 = call ptr @__errno_location() #11
  store i32 %3778, ptr %3779, align 4, !tbaa !5
  %3780 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3781 = load i32, ptr @test_count, align 4, !tbaa !5
  %3782 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3783 = load i32, ptr %3782, align 4, !tbaa !5
  %3784 = call ptr @s2n_strerror(i32 noundef %3783, ptr noundef @.str.3)
  %3785 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3786 = load i32, ptr %3785, align 4, !tbaa !5
  %3787 = call ptr @s2n_strerror_debug(i32 noundef %3786, ptr noundef @.str.3)
  %3788 = call ptr @__errno_location() #11
  %3789 = load i32, ptr %3788, align 4, !tbaa !5
  %3790 = call ptr @strerror(i32 noundef %3789) #10
  %3791 = call ptr @__errno_location() #11
  %3792 = load i32, ptr %3791, align 4, !tbaa !5
  %3793 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3780, ptr noundef @.str.4, i32 noundef %3781, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 245, ptr noundef %3784, ptr noundef %3787, ptr noundef %3790, i32 noundef %3792) #10
  br label %3794

3794:                                             ; preds = %3777, %3760
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #10
  br label %3795

3795:                                             ; preds = %3794
  br label %3796

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

3797:                                             ; No predecessors!
  br label %3798

3798:                                             ; preds = %3797
  br label %3799

3799:                                             ; preds = %3798, %3741
  br label %3800

3800:                                             ; preds = %3799
  br label %3801

3801:                                             ; preds = %3800
  br label %3802

3802:                                             ; preds = %3801
  %3803 = load i32, ptr @test_count, align 4, !tbaa !5
  %3804 = add nsw i32 %3803, 1
  store i32 %3804, ptr @test_count, align 4, !tbaa !5
  %3805 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3806 = load i32, ptr %3805, align 4, !tbaa !5
  %3807 = icmp eq i32 %3806, 402653257
  br i1 %3807, label %3861, label %3808

3808:                                             ; preds = %3802
  br label %3809

3809:                                             ; preds = %3808
  br label %3810

3810:                                             ; preds = %3809
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #10
  %3811 = call ptr @__errno_location() #11
  %3812 = load i32, ptr %3811, align 4, !tbaa !5
  store i32 %3812, ptr %106, align 4, !tbaa !5
  %3813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3814 = call i32 @s2n_print_stacktrace(ptr noundef %3813)
  %3815 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3816 = trunc i8 %3815 to i1
  br i1 %3816, label %3817, label %3839

3817:                                             ; preds = %3810
  %3818 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3819 = call i32 @fileno(ptr noundef %3818) #10
  %3820 = call i32 @isatty(i32 noundef %3819) #10
  %3821 = icmp ne i32 %3820, 0
  br i1 %3821, label %3822, label %3839

3822:                                             ; preds = %3817
  %3823 = load i32, ptr %106, align 4, !tbaa !5
  %3824 = call ptr @__errno_location() #11
  store i32 %3823, ptr %3824, align 4, !tbaa !5
  %3825 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3826 = load i32, ptr @test_count, align 4, !tbaa !5
  %3827 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3828 = load i32, ptr %3827, align 4, !tbaa !5
  %3829 = call ptr @s2n_strerror(i32 noundef %3828, ptr noundef @.str.3)
  %3830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3831 = load i32, ptr %3830, align 4, !tbaa !5
  %3832 = call ptr @s2n_strerror_debug(i32 noundef %3831, ptr noundef @.str.3)
  %3833 = call ptr @__errno_location() #11
  %3834 = load i32, ptr %3833, align 4, !tbaa !5
  %3835 = call ptr @strerror(i32 noundef %3834) #10
  %3836 = call ptr @__errno_location() #11
  %3837 = load i32, ptr %3836, align 4, !tbaa !5
  %3838 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3825, ptr noundef @.str, i32 noundef %3826, ptr noundef @.str.48, ptr noundef @.str.2, i32 noundef 245, ptr noundef %3829, ptr noundef %3832, ptr noundef %3835, i32 noundef %3837) #10
  br label %3856

3839:                                             ; preds = %3817, %3810
  %3840 = load i32, ptr %106, align 4, !tbaa !5
  %3841 = call ptr @__errno_location() #11
  store i32 %3840, ptr %3841, align 4, !tbaa !5
  %3842 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3843 = load i32, ptr @test_count, align 4, !tbaa !5
  %3844 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3845 = load i32, ptr %3844, align 4, !tbaa !5
  %3846 = call ptr @s2n_strerror(i32 noundef %3845, ptr noundef @.str.3)
  %3847 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3848 = load i32, ptr %3847, align 4, !tbaa !5
  %3849 = call ptr @s2n_strerror_debug(i32 noundef %3848, ptr noundef @.str.3)
  %3850 = call ptr @__errno_location() #11
  %3851 = load i32, ptr %3850, align 4, !tbaa !5
  %3852 = call ptr @strerror(i32 noundef %3851) #10
  %3853 = call ptr @__errno_location() #11
  %3854 = load i32, ptr %3853, align 4, !tbaa !5
  %3855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3842, ptr noundef @.str.4, i32 noundef %3843, ptr noundef @.str.48, ptr noundef @.str.2, i32 noundef 245, ptr noundef %3846, ptr noundef %3849, ptr noundef %3852, i32 noundef %3854) #10
  br label %3856

3856:                                             ; preds = %3839, %3822
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #10
  br label %3857

3857:                                             ; preds = %3856
  br label %3858

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

3859:                                             ; No predecessors!
  br label %3860

3860:                                             ; preds = %3859
  br label %3861

3861:                                             ; preds = %3860, %3802
  br label %3862

3862:                                             ; preds = %3861
  br label %3863

3863:                                             ; preds = %3862
  br label %3864

3864:                                             ; preds = %3863
  %3865 = load i32, ptr @test_count, align 4, !tbaa !5
  %3866 = add nsw i32 %3865, 1
  store i32 %3866, ptr @test_count, align 4, !tbaa !5
  %3867 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3868 = load i32, ptr %3867, align 4, !tbaa !5
  %3869 = call ptr @s2n_strerror_debug(i32 noundef %3868, ptr noundef @.str.3)
  %3870 = icmp eq ptr %3869, null
  br i1 %3870, label %3871, label %3924

3871:                                             ; preds = %3864
  br label %3872

3872:                                             ; preds = %3871
  br label %3873

3873:                                             ; preds = %3872
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #10
  %3874 = call ptr @__errno_location() #11
  %3875 = load i32, ptr %3874, align 4, !tbaa !5
  store i32 %3875, ptr %107, align 4, !tbaa !5
  %3876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3877 = call i32 @s2n_print_stacktrace(ptr noundef %3876)
  %3878 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3879 = trunc i8 %3878 to i1
  br i1 %3879, label %3880, label %3902

3880:                                             ; preds = %3873
  %3881 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3882 = call i32 @fileno(ptr noundef %3881) #10
  %3883 = call i32 @isatty(i32 noundef %3882) #10
  %3884 = icmp ne i32 %3883, 0
  br i1 %3884, label %3885, label %3902

3885:                                             ; preds = %3880
  %3886 = load i32, ptr %107, align 4, !tbaa !5
  %3887 = call ptr @__errno_location() #11
  store i32 %3886, ptr %3887, align 4, !tbaa !5
  %3888 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3889 = load i32, ptr @test_count, align 4, !tbaa !5
  %3890 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3891 = load i32, ptr %3890, align 4, !tbaa !5
  %3892 = call ptr @s2n_strerror(i32 noundef %3891, ptr noundef @.str.3)
  %3893 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3894 = load i32, ptr %3893, align 4, !tbaa !5
  %3895 = call ptr @s2n_strerror_debug(i32 noundef %3894, ptr noundef @.str.3)
  %3896 = call ptr @__errno_location() #11
  %3897 = load i32, ptr %3896, align 4, !tbaa !5
  %3898 = call ptr @strerror(i32 noundef %3897) #10
  %3899 = call ptr @__errno_location() #11
  %3900 = load i32, ptr %3899, align 4, !tbaa !5
  %3901 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3888, ptr noundef @.str, i32 noundef %3889, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 245, ptr noundef %3892, ptr noundef %3895, ptr noundef %3898, i32 noundef %3900) #10
  br label %3919

3902:                                             ; preds = %3880, %3873
  %3903 = load i32, ptr %107, align 4, !tbaa !5
  %3904 = call ptr @__errno_location() #11
  store i32 %3903, ptr %3904, align 4, !tbaa !5
  %3905 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3906 = load i32, ptr @test_count, align 4, !tbaa !5
  %3907 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3908 = load i32, ptr %3907, align 4, !tbaa !5
  %3909 = call ptr @s2n_strerror(i32 noundef %3908, ptr noundef @.str.3)
  %3910 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3911 = load i32, ptr %3910, align 4, !tbaa !5
  %3912 = call ptr @s2n_strerror_debug(i32 noundef %3911, ptr noundef @.str.3)
  %3913 = call ptr @__errno_location() #11
  %3914 = load i32, ptr %3913, align 4, !tbaa !5
  %3915 = call ptr @strerror(i32 noundef %3914) #10
  %3916 = call ptr @__errno_location() #11
  %3917 = load i32, ptr %3916, align 4, !tbaa !5
  %3918 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3905, ptr noundef @.str.4, i32 noundef %3906, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 245, ptr noundef %3909, ptr noundef %3912, ptr noundef %3915, i32 noundef %3917) #10
  br label %3919

3919:                                             ; preds = %3902, %3885
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #10
  br label %3920

3920:                                             ; preds = %3919
  br label %3921

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

3922:                                             ; No predecessors!
  br label %3923

3923:                                             ; preds = %3922
  br label %3924

3924:                                             ; preds = %3923, %3864
  br label %3925

3925:                                             ; preds = %3924
  br label %3926

3926:                                             ; preds = %3925
  br label %3927

3927:                                             ; preds = %3926
  br label %3928

3928:                                             ; preds = %3927
  br label %3929

3929:                                             ; preds = %3928
  %3930 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %3930, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %3931 = call ptr @__errno_location() #11
  store i32 0, ptr %3931, align 4, !tbaa !5
  br label %3932

3932:                                             ; preds = %3929
  br label %3933

3933:                                             ; preds = %3932
  br label %3934

3934:                                             ; preds = %3933
  br label %3935

3935:                                             ; preds = %3934
  br label %3936

3936:                                             ; preds = %3935
  %3937 = load i32, ptr @test_count, align 4, !tbaa !5
  %3938 = add nsw i32 %3937, 1
  store i32 %3938, ptr @test_count, align 4, !tbaa !5
  %3939 = load i16, ptr %103, align 2, !tbaa !16
  %3940 = zext i16 %3939 to i32
  %3941 = icmp eq i32 %3940, 0
  br i1 %3941, label %3995, label %3942

3942:                                             ; preds = %3936
  br label %3943

3943:                                             ; preds = %3942
  br label %3944

3944:                                             ; preds = %3943
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #10
  %3945 = call ptr @__errno_location() #11
  %3946 = load i32, ptr %3945, align 4, !tbaa !5
  store i32 %3946, ptr %108, align 4, !tbaa !5
  %3947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3948 = call i32 @s2n_print_stacktrace(ptr noundef %3947)
  %3949 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3950 = trunc i8 %3949 to i1
  br i1 %3950, label %3951, label %3973

3951:                                             ; preds = %3944
  %3952 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3953 = call i32 @fileno(ptr noundef %3952) #10
  %3954 = call i32 @isatty(i32 noundef %3953) #10
  %3955 = icmp ne i32 %3954, 0
  br i1 %3955, label %3956, label %3973

3956:                                             ; preds = %3951
  %3957 = load i32, ptr %108, align 4, !tbaa !5
  %3958 = call ptr @__errno_location() #11
  store i32 %3957, ptr %3958, align 4, !tbaa !5
  %3959 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3960 = load i32, ptr @test_count, align 4, !tbaa !5
  %3961 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3962 = load i32, ptr %3961, align 4, !tbaa !5
  %3963 = call ptr @s2n_strerror(i32 noundef %3962, ptr noundef @.str.3)
  %3964 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3965 = load i32, ptr %3964, align 4, !tbaa !5
  %3966 = call ptr @s2n_strerror_debug(i32 noundef %3965, ptr noundef @.str.3)
  %3967 = call ptr @__errno_location() #11
  %3968 = load i32, ptr %3967, align 4, !tbaa !5
  %3969 = call ptr @strerror(i32 noundef %3968) #10
  %3970 = call ptr @__errno_location() #11
  %3971 = load i32, ptr %3970, align 4, !tbaa !5
  %3972 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3959, ptr noundef @.str, i32 noundef %3960, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 247, ptr noundef %3963, ptr noundef %3966, ptr noundef %3969, i32 noundef %3971) #10
  br label %3990

3973:                                             ; preds = %3951, %3944
  %3974 = load i32, ptr %108, align 4, !tbaa !5
  %3975 = call ptr @__errno_location() #11
  store i32 %3974, ptr %3975, align 4, !tbaa !5
  %3976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3977 = load i32, ptr @test_count, align 4, !tbaa !5
  %3978 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3979 = load i32, ptr %3978, align 4, !tbaa !5
  %3980 = call ptr @s2n_strerror(i32 noundef %3979, ptr noundef @.str.3)
  %3981 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3982 = load i32, ptr %3981, align 4, !tbaa !5
  %3983 = call ptr @s2n_strerror_debug(i32 noundef %3982, ptr noundef @.str.3)
  %3984 = call ptr @__errno_location() #11
  %3985 = load i32, ptr %3984, align 4, !tbaa !5
  %3986 = call ptr @strerror(i32 noundef %3985) #10
  %3987 = call ptr @__errno_location() #11
  %3988 = load i32, ptr %3987, align 4, !tbaa !5
  %3989 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3976, ptr noundef @.str.4, i32 noundef %3977, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 247, ptr noundef %3980, ptr noundef %3983, ptr noundef %3986, i32 noundef %3988) #10
  br label %3990

3990:                                             ; preds = %3973, %3956
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #10
  br label %3991

3991:                                             ; preds = %3990
  br label %3992

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

3993:                                             ; No predecessors!
  br label %3994

3994:                                             ; preds = %3993
  br label %3995

3995:                                             ; preds = %3994, %3936
  br label %3996

3996:                                             ; preds = %3995
  br label %3997

3997:                                             ; preds = %3996
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %103) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %96) #10
  call void @llvm.lifetime.end.p0(i64 34, ptr %95) #10
  call void @llvm.lifetime.start.p0(i64 34, ptr %109) #10
  call void @llvm.memset.p0.i64(ptr align 16 %109, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %110) #10
  call void @llvm.memset.p0.i64(ptr align 8 %110, i8 0, i64 24, i1 false)
  br label %3998

3998:                                             ; preds = %3997
  %3999 = load i32, ptr @test_count, align 4, !tbaa !5
  %4000 = add nsw i32 %3999, 1
  store i32 %4000, ptr @test_count, align 4, !tbaa !5
  %4001 = getelementptr inbounds [34 x i8], ptr %109, i64 0, i64 0
  %4002 = call i32 @s2n_blob_init(ptr noundef %110, ptr noundef %4001, i32 noundef 34)
  %4003 = icmp eq i32 %4002, -1
  br i1 %4003, label %4004, label %4057

4004:                                             ; preds = %3998
  br label %4005

4005:                                             ; preds = %4004
  br label %4006

4006:                                             ; preds = %4005
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #10
  %4007 = call ptr @__errno_location() #11
  %4008 = load i32, ptr %4007, align 4, !tbaa !5
  store i32 %4008, ptr %111, align 4, !tbaa !5
  %4009 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4010 = call i32 @s2n_print_stacktrace(ptr noundef %4009)
  %4011 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4012 = trunc i8 %4011 to i1
  br i1 %4012, label %4013, label %4035

4013:                                             ; preds = %4006
  %4014 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4015 = call i32 @fileno(ptr noundef %4014) #10
  %4016 = call i32 @isatty(i32 noundef %4015) #10
  %4017 = icmp ne i32 %4016, 0
  br i1 %4017, label %4018, label %4035

4018:                                             ; preds = %4013
  %4019 = load i32, ptr %111, align 4, !tbaa !5
  %4020 = call ptr @__errno_location() #11
  store i32 %4019, ptr %4020, align 4, !tbaa !5
  %4021 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4022 = load i32, ptr @test_count, align 4, !tbaa !5
  %4023 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4024 = load i32, ptr %4023, align 4, !tbaa !5
  %4025 = call ptr @s2n_strerror(i32 noundef %4024, ptr noundef @.str.3)
  %4026 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4027 = load i32, ptr %4026, align 4, !tbaa !5
  %4028 = call ptr @s2n_strerror_debug(i32 noundef %4027, ptr noundef @.str.3)
  %4029 = call ptr @__errno_location() #11
  %4030 = load i32, ptr %4029, align 4, !tbaa !5
  %4031 = call ptr @strerror(i32 noundef %4030) #10
  %4032 = call ptr @__errno_location() #11
  %4033 = load i32, ptr %4032, align 4, !tbaa !5
  %4034 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4021, ptr noundef @.str, i32 noundef %4022, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 254, ptr noundef %4025, ptr noundef %4028, ptr noundef %4031, i32 noundef %4033) #10
  br label %4052

4035:                                             ; preds = %4013, %4006
  %4036 = load i32, ptr %111, align 4, !tbaa !5
  %4037 = call ptr @__errno_location() #11
  store i32 %4036, ptr %4037, align 4, !tbaa !5
  %4038 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4039 = load i32, ptr @test_count, align 4, !tbaa !5
  %4040 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4041 = load i32, ptr %4040, align 4, !tbaa !5
  %4042 = call ptr @s2n_strerror(i32 noundef %4041, ptr noundef @.str.3)
  %4043 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4044 = load i32, ptr %4043, align 4, !tbaa !5
  %4045 = call ptr @s2n_strerror_debug(i32 noundef %4044, ptr noundef @.str.3)
  %4046 = call ptr @__errno_location() #11
  %4047 = load i32, ptr %4046, align 4, !tbaa !5
  %4048 = call ptr @strerror(i32 noundef %4047) #10
  %4049 = call ptr @__errno_location() #11
  %4050 = load i32, ptr %4049, align 4, !tbaa !5
  %4051 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4038, ptr noundef @.str.4, i32 noundef %4039, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 254, ptr noundef %4042, ptr noundef %4045, ptr noundef %4048, i32 noundef %4050) #10
  br label %4052

4052:                                             ; preds = %4035, %4018
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #10
  br label %4053

4053:                                             ; preds = %4052
  br label %4054

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

4055:                                             ; No predecessors!
  br label %4056

4056:                                             ; preds = %4055
  br label %4057

4057:                                             ; preds = %4056, %3998
  br label %4058

4058:                                             ; preds = %4057
  br label %4059

4059:                                             ; preds = %4058
  %4060 = load ptr, ptr %84, align 8, !tbaa !9
  %4061 = getelementptr inbounds %struct.s2n_parsed_extension, ptr %4060, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4061, ptr align 8 %110, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr %112) #10
  call void @llvm.memset.p0.i64(ptr align 8 %112, i8 0, i64 40, i1 false)
  br label %4062

4062:                                             ; preds = %4059
  %4063 = load i32, ptr @test_count, align 4, !tbaa !5
  %4064 = add nsw i32 %4063, 1
  store i32 %4064, ptr @test_count, align 4, !tbaa !5
  %4065 = call i32 @s2n_stuffer_init(ptr noundef %112, ptr noundef %110)
  %4066 = icmp eq i32 %4065, -1
  br i1 %4066, label %4067, label %4120

4067:                                             ; preds = %4062
  br label %4068

4068:                                             ; preds = %4067
  br label %4069

4069:                                             ; preds = %4068
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #10
  %4070 = call ptr @__errno_location() #11
  %4071 = load i32, ptr %4070, align 4, !tbaa !5
  store i32 %4071, ptr %113, align 4, !tbaa !5
  %4072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4073 = call i32 @s2n_print_stacktrace(ptr noundef %4072)
  %4074 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4075 = trunc i8 %4074 to i1
  br i1 %4075, label %4076, label %4098

4076:                                             ; preds = %4069
  %4077 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4078 = call i32 @fileno(ptr noundef %4077) #10
  %4079 = call i32 @isatty(i32 noundef %4078) #10
  %4080 = icmp ne i32 %4079, 0
  br i1 %4080, label %4081, label %4098

4081:                                             ; preds = %4076
  %4082 = load i32, ptr %113, align 4, !tbaa !5
  %4083 = call ptr @__errno_location() #11
  store i32 %4082, ptr %4083, align 4, !tbaa !5
  %4084 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4085 = load i32, ptr @test_count, align 4, !tbaa !5
  %4086 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4087 = load i32, ptr %4086, align 4, !tbaa !5
  %4088 = call ptr @s2n_strerror(i32 noundef %4087, ptr noundef @.str.3)
  %4089 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4090 = load i32, ptr %4089, align 4, !tbaa !5
  %4091 = call ptr @s2n_strerror_debug(i32 noundef %4090, ptr noundef @.str.3)
  %4092 = call ptr @__errno_location() #11
  %4093 = load i32, ptr %4092, align 4, !tbaa !5
  %4094 = call ptr @strerror(i32 noundef %4093) #10
  %4095 = call ptr @__errno_location() #11
  %4096 = load i32, ptr %4095, align 4, !tbaa !5
  %4097 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4084, ptr noundef @.str, i32 noundef %4085, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 258, ptr noundef %4088, ptr noundef %4091, ptr noundef %4094, i32 noundef %4096) #10
  br label %4115

4098:                                             ; preds = %4076, %4069
  %4099 = load i32, ptr %113, align 4, !tbaa !5
  %4100 = call ptr @__errno_location() #11
  store i32 %4099, ptr %4100, align 4, !tbaa !5
  %4101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4102 = load i32, ptr @test_count, align 4, !tbaa !5
  %4103 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4104 = load i32, ptr %4103, align 4, !tbaa !5
  %4105 = call ptr @s2n_strerror(i32 noundef %4104, ptr noundef @.str.3)
  %4106 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4107 = load i32, ptr %4106, align 4, !tbaa !5
  %4108 = call ptr @s2n_strerror_debug(i32 noundef %4107, ptr noundef @.str.3)
  %4109 = call ptr @__errno_location() #11
  %4110 = load i32, ptr %4109, align 4, !tbaa !5
  %4111 = call ptr @strerror(i32 noundef %4110) #10
  %4112 = call ptr @__errno_location() #11
  %4113 = load i32, ptr %4112, align 4, !tbaa !5
  %4114 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4101, ptr noundef @.str.4, i32 noundef %4102, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 258, ptr noundef %4105, ptr noundef %4108, ptr noundef %4111, i32 noundef %4113) #10
  br label %4115

4115:                                             ; preds = %4098, %4081
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #10
  br label %4116

4116:                                             ; preds = %4115
  br label %4117

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

4118:                                             ; No predecessors!
  br label %4119

4119:                                             ; preds = %4118
  br label %4120

4120:                                             ; preds = %4119, %4062
  br label %4121

4121:                                             ; preds = %4120
  br label %4122

4122:                                             ; preds = %4121
  call void @llvm.lifetime.start.p0(i64 2, ptr %114) #10
  store i16 3, ptr %114, align 2, !tbaa !16
  br label %4123

4123:                                             ; preds = %4122
  %4124 = load i32, ptr @test_count, align 4, !tbaa !5
  %4125 = add nsw i32 %4124, 1
  store i32 %4125, ptr @test_count, align 4, !tbaa !5
  %4126 = load i16, ptr %114, align 2, !tbaa !16
  %4127 = call i32 @s2n_stuffer_write_uint16(ptr noundef %112, i16 noundef zeroext %4126)
  %4128 = icmp eq i32 %4127, -1
  br i1 %4128, label %4129, label %4182

4129:                                             ; preds = %4123
  br label %4130

4130:                                             ; preds = %4129
  br label %4131

4131:                                             ; preds = %4130
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #10
  %4132 = call ptr @__errno_location() #11
  %4133 = load i32, ptr %4132, align 4, !tbaa !5
  store i32 %4133, ptr %115, align 4, !tbaa !5
  %4134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4135 = call i32 @s2n_print_stacktrace(ptr noundef %4134)
  %4136 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4137 = trunc i8 %4136 to i1
  br i1 %4137, label %4138, label %4160

4138:                                             ; preds = %4131
  %4139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4140 = call i32 @fileno(ptr noundef %4139) #10
  %4141 = call i32 @isatty(i32 noundef %4140) #10
  %4142 = icmp ne i32 %4141, 0
  br i1 %4142, label %4143, label %4160

4143:                                             ; preds = %4138
  %4144 = load i32, ptr %115, align 4, !tbaa !5
  %4145 = call ptr @__errno_location() #11
  store i32 %4144, ptr %4145, align 4, !tbaa !5
  %4146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4147 = load i32, ptr @test_count, align 4, !tbaa !5
  %4148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4149 = load i32, ptr %4148, align 4, !tbaa !5
  %4150 = call ptr @s2n_strerror(i32 noundef %4149, ptr noundef @.str.3)
  %4151 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4152 = load i32, ptr %4151, align 4, !tbaa !5
  %4153 = call ptr @s2n_strerror_debug(i32 noundef %4152, ptr noundef @.str.3)
  %4154 = call ptr @__errno_location() #11
  %4155 = load i32, ptr %4154, align 4, !tbaa !5
  %4156 = call ptr @strerror(i32 noundef %4155) #10
  %4157 = call ptr @__errno_location() #11
  %4158 = load i32, ptr %4157, align 4, !tbaa !5
  %4159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4146, ptr noundef @.str, i32 noundef %4147, ptr noundef @.str.49, ptr noundef @.str.2, i32 noundef 261, ptr noundef %4150, ptr noundef %4153, ptr noundef %4156, i32 noundef %4158) #10
  br label %4177

4160:                                             ; preds = %4138, %4131
  %4161 = load i32, ptr %115, align 4, !tbaa !5
  %4162 = call ptr @__errno_location() #11
  store i32 %4161, ptr %4162, align 4, !tbaa !5
  %4163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4164 = load i32, ptr @test_count, align 4, !tbaa !5
  %4165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4166 = load i32, ptr %4165, align 4, !tbaa !5
  %4167 = call ptr @s2n_strerror(i32 noundef %4166, ptr noundef @.str.3)
  %4168 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4169 = load i32, ptr %4168, align 4, !tbaa !5
  %4170 = call ptr @s2n_strerror_debug(i32 noundef %4169, ptr noundef @.str.3)
  %4171 = call ptr @__errno_location() #11
  %4172 = load i32, ptr %4171, align 4, !tbaa !5
  %4173 = call ptr @strerror(i32 noundef %4172) #10
  %4174 = call ptr @__errno_location() #11
  %4175 = load i32, ptr %4174, align 4, !tbaa !5
  %4176 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4163, ptr noundef @.str.4, i32 noundef %4164, ptr noundef @.str.49, ptr noundef @.str.2, i32 noundef 261, ptr noundef %4167, ptr noundef %4170, ptr noundef %4173, i32 noundef %4175) #10
  br label %4177

4177:                                             ; preds = %4160, %4143
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #10
  br label %4178

4178:                                             ; preds = %4177
  br label %4179

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

4180:                                             ; No predecessors!
  br label %4181

4181:                                             ; preds = %4180
  br label %4182

4182:                                             ; preds = %4181, %4123
  br label %4183

4183:                                             ; preds = %4182
  br label %4184

4184:                                             ; preds = %4183
  call void @llvm.lifetime.start.p0(i64 32, ptr %116) #10
  call void @llvm.memset.p0.i64(ptr align 16 %116, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %117) #10
  store i16 0, ptr %117, align 2, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #10
  %4185 = getelementptr inbounds [16 x i16], ptr %116, i64 0, i64 0
  %4186 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %83, ptr noundef %4185, i16 noundef zeroext 16, ptr noundef %117)
  store i32 %4186, ptr %118, align 4, !tbaa !5
  br label %4187

4187:                                             ; preds = %4184
  br label %4188

4188:                                             ; preds = %4187
  br label %4189

4189:                                             ; preds = %4188
  %4190 = load i32, ptr @test_count, align 4, !tbaa !5
  %4191 = add nsw i32 %4190, 1
  store i32 %4191, ptr @test_count, align 4, !tbaa !5
  %4192 = load i32, ptr %118, align 4, !tbaa !5
  %4193 = icmp eq i32 %4192, -1
  br i1 %4193, label %4247, label %4194

4194:                                             ; preds = %4189
  br label %4195

4195:                                             ; preds = %4194
  br label %4196

4196:                                             ; preds = %4195
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #10
  %4197 = call ptr @__errno_location() #11
  %4198 = load i32, ptr %4197, align 4, !tbaa !5
  store i32 %4198, ptr %119, align 4, !tbaa !5
  %4199 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4200 = call i32 @s2n_print_stacktrace(ptr noundef %4199)
  %4201 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4202 = trunc i8 %4201 to i1
  br i1 %4202, label %4203, label %4225

4203:                                             ; preds = %4196
  %4204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4205 = call i32 @fileno(ptr noundef %4204) #10
  %4206 = call i32 @isatty(i32 noundef %4205) #10
  %4207 = icmp ne i32 %4206, 0
  br i1 %4207, label %4208, label %4225

4208:                                             ; preds = %4203
  %4209 = load i32, ptr %119, align 4, !tbaa !5
  %4210 = call ptr @__errno_location() #11
  store i32 %4209, ptr %4210, align 4, !tbaa !5
  %4211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4212 = load i32, ptr @test_count, align 4, !tbaa !5
  %4213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4214 = load i32, ptr %4213, align 4, !tbaa !5
  %4215 = call ptr @s2n_strerror(i32 noundef %4214, ptr noundef @.str.3)
  %4216 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4217 = load i32, ptr %4216, align 4, !tbaa !5
  %4218 = call ptr @s2n_strerror_debug(i32 noundef %4217, ptr noundef @.str.3)
  %4219 = call ptr @__errno_location() #11
  %4220 = load i32, ptr %4219, align 4, !tbaa !5
  %4221 = call ptr @strerror(i32 noundef %4220) #10
  %4222 = call ptr @__errno_location() #11
  %4223 = load i32, ptr %4222, align 4, !tbaa !5
  %4224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4211, ptr noundef @.str, i32 noundef %4212, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 267, ptr noundef %4215, ptr noundef %4218, ptr noundef %4221, i32 noundef %4223) #10
  br label %4242

4225:                                             ; preds = %4203, %4196
  %4226 = load i32, ptr %119, align 4, !tbaa !5
  %4227 = call ptr @__errno_location() #11
  store i32 %4226, ptr %4227, align 4, !tbaa !5
  %4228 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4229 = load i32, ptr @test_count, align 4, !tbaa !5
  %4230 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4231 = load i32, ptr %4230, align 4, !tbaa !5
  %4232 = call ptr @s2n_strerror(i32 noundef %4231, ptr noundef @.str.3)
  %4233 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4234 = load i32, ptr %4233, align 4, !tbaa !5
  %4235 = call ptr @s2n_strerror_debug(i32 noundef %4234, ptr noundef @.str.3)
  %4236 = call ptr @__errno_location() #11
  %4237 = load i32, ptr %4236, align 4, !tbaa !5
  %4238 = call ptr @strerror(i32 noundef %4237) #10
  %4239 = call ptr @__errno_location() #11
  %4240 = load i32, ptr %4239, align 4, !tbaa !5
  %4241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4228, ptr noundef @.str.4, i32 noundef %4229, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 267, ptr noundef %4232, ptr noundef %4235, ptr noundef %4238, i32 noundef %4240) #10
  br label %4242

4242:                                             ; preds = %4225, %4208
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #10
  br label %4243

4243:                                             ; preds = %4242
  br label %4244

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

4245:                                             ; No predecessors!
  br label %4246

4246:                                             ; preds = %4245
  br label %4247

4247:                                             ; preds = %4246, %4189
  br label %4248

4248:                                             ; preds = %4247
  br label %4249

4249:                                             ; preds = %4248
  br label %4250

4250:                                             ; preds = %4249
  %4251 = load i32, ptr @test_count, align 4, !tbaa !5
  %4252 = add nsw i32 %4251, 1
  store i32 %4252, ptr @test_count, align 4, !tbaa !5
  %4253 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4254 = load i32, ptr %4253, align 4, !tbaa !5
  %4255 = icmp eq i32 %4254, 402653257
  br i1 %4255, label %4309, label %4256

4256:                                             ; preds = %4250
  br label %4257

4257:                                             ; preds = %4256
  br label %4258

4258:                                             ; preds = %4257
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #10
  %4259 = call ptr @__errno_location() #11
  %4260 = load i32, ptr %4259, align 4, !tbaa !5
  store i32 %4260, ptr %120, align 4, !tbaa !5
  %4261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4262 = call i32 @s2n_print_stacktrace(ptr noundef %4261)
  %4263 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4264 = trunc i8 %4263 to i1
  br i1 %4264, label %4265, label %4287

4265:                                             ; preds = %4258
  %4266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4267 = call i32 @fileno(ptr noundef %4266) #10
  %4268 = call i32 @isatty(i32 noundef %4267) #10
  %4269 = icmp ne i32 %4268, 0
  br i1 %4269, label %4270, label %4287

4270:                                             ; preds = %4265
  %4271 = load i32, ptr %120, align 4, !tbaa !5
  %4272 = call ptr @__errno_location() #11
  store i32 %4271, ptr %4272, align 4, !tbaa !5
  %4273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4274 = load i32, ptr @test_count, align 4, !tbaa !5
  %4275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4276 = load i32, ptr %4275, align 4, !tbaa !5
  %4277 = call ptr @s2n_strerror(i32 noundef %4276, ptr noundef @.str.3)
  %4278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4279 = load i32, ptr %4278, align 4, !tbaa !5
  %4280 = call ptr @s2n_strerror_debug(i32 noundef %4279, ptr noundef @.str.3)
  %4281 = call ptr @__errno_location() #11
  %4282 = load i32, ptr %4281, align 4, !tbaa !5
  %4283 = call ptr @strerror(i32 noundef %4282) #10
  %4284 = call ptr @__errno_location() #11
  %4285 = load i32, ptr %4284, align 4, !tbaa !5
  %4286 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4273, ptr noundef @.str, i32 noundef %4274, ptr noundef @.str.48, ptr noundef @.str.2, i32 noundef 267, ptr noundef %4277, ptr noundef %4280, ptr noundef %4283, i32 noundef %4285) #10
  br label %4304

4287:                                             ; preds = %4265, %4258
  %4288 = load i32, ptr %120, align 4, !tbaa !5
  %4289 = call ptr @__errno_location() #11
  store i32 %4288, ptr %4289, align 4, !tbaa !5
  %4290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4291 = load i32, ptr @test_count, align 4, !tbaa !5
  %4292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4293 = load i32, ptr %4292, align 4, !tbaa !5
  %4294 = call ptr @s2n_strerror(i32 noundef %4293, ptr noundef @.str.3)
  %4295 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4296 = load i32, ptr %4295, align 4, !tbaa !5
  %4297 = call ptr @s2n_strerror_debug(i32 noundef %4296, ptr noundef @.str.3)
  %4298 = call ptr @__errno_location() #11
  %4299 = load i32, ptr %4298, align 4, !tbaa !5
  %4300 = call ptr @strerror(i32 noundef %4299) #10
  %4301 = call ptr @__errno_location() #11
  %4302 = load i32, ptr %4301, align 4, !tbaa !5
  %4303 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4290, ptr noundef @.str.4, i32 noundef %4291, ptr noundef @.str.48, ptr noundef @.str.2, i32 noundef 267, ptr noundef %4294, ptr noundef %4297, ptr noundef %4300, i32 noundef %4302) #10
  br label %4304

4304:                                             ; preds = %4287, %4270
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #10
  br label %4305

4305:                                             ; preds = %4304
  br label %4306

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

4307:                                             ; No predecessors!
  br label %4308

4308:                                             ; preds = %4307
  br label %4309

4309:                                             ; preds = %4308, %4250
  br label %4310

4310:                                             ; preds = %4309
  br label %4311

4311:                                             ; preds = %4310
  br label %4312

4312:                                             ; preds = %4311
  %4313 = load i32, ptr @test_count, align 4, !tbaa !5
  %4314 = add nsw i32 %4313, 1
  store i32 %4314, ptr @test_count, align 4, !tbaa !5
  %4315 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4316 = load i32, ptr %4315, align 4, !tbaa !5
  %4317 = call ptr @s2n_strerror_debug(i32 noundef %4316, ptr noundef @.str.3)
  %4318 = icmp eq ptr %4317, null
  br i1 %4318, label %4319, label %4372

4319:                                             ; preds = %4312
  br label %4320

4320:                                             ; preds = %4319
  br label %4321

4321:                                             ; preds = %4320
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #10
  %4322 = call ptr @__errno_location() #11
  %4323 = load i32, ptr %4322, align 4, !tbaa !5
  store i32 %4323, ptr %121, align 4, !tbaa !5
  %4324 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4325 = call i32 @s2n_print_stacktrace(ptr noundef %4324)
  %4326 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4327 = trunc i8 %4326 to i1
  br i1 %4327, label %4328, label %4350

4328:                                             ; preds = %4321
  %4329 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4330 = call i32 @fileno(ptr noundef %4329) #10
  %4331 = call i32 @isatty(i32 noundef %4330) #10
  %4332 = icmp ne i32 %4331, 0
  br i1 %4332, label %4333, label %4350

4333:                                             ; preds = %4328
  %4334 = load i32, ptr %121, align 4, !tbaa !5
  %4335 = call ptr @__errno_location() #11
  store i32 %4334, ptr %4335, align 4, !tbaa !5
  %4336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4337 = load i32, ptr @test_count, align 4, !tbaa !5
  %4338 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4339 = load i32, ptr %4338, align 4, !tbaa !5
  %4340 = call ptr @s2n_strerror(i32 noundef %4339, ptr noundef @.str.3)
  %4341 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4342 = load i32, ptr %4341, align 4, !tbaa !5
  %4343 = call ptr @s2n_strerror_debug(i32 noundef %4342, ptr noundef @.str.3)
  %4344 = call ptr @__errno_location() #11
  %4345 = load i32, ptr %4344, align 4, !tbaa !5
  %4346 = call ptr @strerror(i32 noundef %4345) #10
  %4347 = call ptr @__errno_location() #11
  %4348 = load i32, ptr %4347, align 4, !tbaa !5
  %4349 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4336, ptr noundef @.str, i32 noundef %4337, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 267, ptr noundef %4340, ptr noundef %4343, ptr noundef %4346, i32 noundef %4348) #10
  br label %4367

4350:                                             ; preds = %4328, %4321
  %4351 = load i32, ptr %121, align 4, !tbaa !5
  %4352 = call ptr @__errno_location() #11
  store i32 %4351, ptr %4352, align 4, !tbaa !5
  %4353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4354 = load i32, ptr @test_count, align 4, !tbaa !5
  %4355 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4356 = load i32, ptr %4355, align 4, !tbaa !5
  %4357 = call ptr @s2n_strerror(i32 noundef %4356, ptr noundef @.str.3)
  %4358 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4359 = load i32, ptr %4358, align 4, !tbaa !5
  %4360 = call ptr @s2n_strerror_debug(i32 noundef %4359, ptr noundef @.str.3)
  %4361 = call ptr @__errno_location() #11
  %4362 = load i32, ptr %4361, align 4, !tbaa !5
  %4363 = call ptr @strerror(i32 noundef %4362) #10
  %4364 = call ptr @__errno_location() #11
  %4365 = load i32, ptr %4364, align 4, !tbaa !5
  %4366 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4353, ptr noundef @.str.4, i32 noundef %4354, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 267, ptr noundef %4357, ptr noundef %4360, ptr noundef %4363, i32 noundef %4365) #10
  br label %4367

4367:                                             ; preds = %4350, %4333
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #10
  br label %4368

4368:                                             ; preds = %4367
  br label %4369

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

4370:                                             ; No predecessors!
  br label %4371

4371:                                             ; preds = %4370
  br label %4372

4372:                                             ; preds = %4371, %4312
  br label %4373

4373:                                             ; preds = %4372
  br label %4374

4374:                                             ; preds = %4373
  br label %4375

4375:                                             ; preds = %4374
  br label %4376

4376:                                             ; preds = %4375
  br label %4377

4377:                                             ; preds = %4376
  %4378 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  store i32 0, ptr %4378, align 4, !tbaa !5
  call void @s2n_debug_info_reset()
  %4379 = call ptr @__errno_location() #11
  store i32 0, ptr %4379, align 4, !tbaa !5
  br label %4380

4380:                                             ; preds = %4377
  br label %4381

4381:                                             ; preds = %4380
  br label %4382

4382:                                             ; preds = %4381
  br label %4383

4383:                                             ; preds = %4382
  br label %4384

4384:                                             ; preds = %4383
  %4385 = load i32, ptr @test_count, align 4, !tbaa !5
  %4386 = add nsw i32 %4385, 1
  store i32 %4386, ptr @test_count, align 4, !tbaa !5
  %4387 = load i16, ptr %117, align 2, !tbaa !16
  %4388 = zext i16 %4387 to i32
  %4389 = icmp eq i32 %4388, 0
  br i1 %4389, label %4443, label %4390

4390:                                             ; preds = %4384
  br label %4391

4391:                                             ; preds = %4390
  br label %4392

4392:                                             ; preds = %4391
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #10
  %4393 = call ptr @__errno_location() #11
  %4394 = load i32, ptr %4393, align 4, !tbaa !5
  store i32 %4394, ptr %122, align 4, !tbaa !5
  %4395 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4396 = call i32 @s2n_print_stacktrace(ptr noundef %4395)
  %4397 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4398 = trunc i8 %4397 to i1
  br i1 %4398, label %4399, label %4421

4399:                                             ; preds = %4392
  %4400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4401 = call i32 @fileno(ptr noundef %4400) #10
  %4402 = call i32 @isatty(i32 noundef %4401) #10
  %4403 = icmp ne i32 %4402, 0
  br i1 %4403, label %4404, label %4421

4404:                                             ; preds = %4399
  %4405 = load i32, ptr %122, align 4, !tbaa !5
  %4406 = call ptr @__errno_location() #11
  store i32 %4405, ptr %4406, align 4, !tbaa !5
  %4407 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4408 = load i32, ptr @test_count, align 4, !tbaa !5
  %4409 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4410 = load i32, ptr %4409, align 4, !tbaa !5
  %4411 = call ptr @s2n_strerror(i32 noundef %4410, ptr noundef @.str.3)
  %4412 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4413 = load i32, ptr %4412, align 4, !tbaa !5
  %4414 = call ptr @s2n_strerror_debug(i32 noundef %4413, ptr noundef @.str.3)
  %4415 = call ptr @__errno_location() #11
  %4416 = load i32, ptr %4415, align 4, !tbaa !5
  %4417 = call ptr @strerror(i32 noundef %4416) #10
  %4418 = call ptr @__errno_location() #11
  %4419 = load i32, ptr %4418, align 4, !tbaa !5
  %4420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4407, ptr noundef @.str, i32 noundef %4408, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 269, ptr noundef %4411, ptr noundef %4414, ptr noundef %4417, i32 noundef %4419) #10
  br label %4438

4421:                                             ; preds = %4399, %4392
  %4422 = load i32, ptr %122, align 4, !tbaa !5
  %4423 = call ptr @__errno_location() #11
  store i32 %4422, ptr %4423, align 4, !tbaa !5
  %4424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4425 = load i32, ptr @test_count, align 4, !tbaa !5
  %4426 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4427 = load i32, ptr %4426, align 4, !tbaa !5
  %4428 = call ptr @s2n_strerror(i32 noundef %4427, ptr noundef @.str.3)
  %4429 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4430 = load i32, ptr %4429, align 4, !tbaa !5
  %4431 = call ptr @s2n_strerror_debug(i32 noundef %4430, ptr noundef @.str.3)
  %4432 = call ptr @__errno_location() #11
  %4433 = load i32, ptr %4432, align 4, !tbaa !5
  %4434 = call ptr @strerror(i32 noundef %4433) #10
  %4435 = call ptr @__errno_location() #11
  %4436 = load i32, ptr %4435, align 4, !tbaa !5
  %4437 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4424, ptr noundef @.str.4, i32 noundef %4425, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 269, ptr noundef %4428, ptr noundef %4431, ptr noundef %4434, i32 noundef %4436) #10
  br label %4438

4438:                                             ; preds = %4421, %4404
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #10
  br label %4439

4439:                                             ; preds = %4438
  br label %4440

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

4441:                                             ; No predecessors!
  br label %4442

4442:                                             ; preds = %4441
  br label %4443

4443:                                             ; preds = %4442, %4384
  br label %4444

4444:                                             ; preds = %4443
  br label %4445

4445:                                             ; preds = %4444
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %117) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %116) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %114) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %112) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %110) #10
  call void @llvm.lifetime.end.p0(i64 34, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 808, ptr %83) #10
  call void @llvm.lifetime.start.p0(i64 808, ptr %123) #10
  call void @llvm.memset.p0.i64(ptr align 8 %123, i8 0, i64 808, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #10
  %4446 = getelementptr inbounds %struct.s2n_client_hello, ptr %123, i32 0, i32 1
  %4447 = getelementptr inbounds %struct.s2n_parsed_extensions_list, ptr %4446, i32 0, i32 0
  %4448 = load i8, ptr %11, align 1, !tbaa !15
  %4449 = zext i8 %4448 to i64
  %4450 = getelementptr inbounds [21 x %struct.s2n_parsed_extension], ptr %4447, i64 0, i64 %4449
  store ptr %4450, ptr %124, align 8, !tbaa !9
  %4451 = load ptr, ptr %124, align 8, !tbaa !9
  %4452 = getelementptr inbounds %struct.s2n_parsed_extension, ptr %4451, i32 0, i32 1
  store i16 10, ptr %4452, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 2, ptr %125) #10
  store i16 0, ptr %125, align 2, !tbaa !16
  br label %4453

4453:                                             ; preds = %5165, %4445
  %4454 = load i16, ptr %125, align 2, !tbaa !16
  %4455 = zext i16 %4454 to i32
  %4456 = icmp slt i32 %4455, 16
  br i1 %4456, label %4458, label %4457

4457:                                             ; preds = %4453
  store i32 453, ptr %126, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %125) #10
  br label %5168

4458:                                             ; preds = %4453
  call void @llvm.lifetime.start.p0(i64 2, ptr %127) #10
  %4459 = load i16, ptr %125, align 2, !tbaa !16
  %4460 = zext i16 %4459 to i32
  %4461 = mul nsw i32 %4460, 2
  %4462 = trunc i32 %4461 to i16
  store i16 %4462, ptr %127, align 2, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #10
  call void @llvm.memset.p0.i64(ptr align 16 %128, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %129) #10
  call void @llvm.memset.p0.i64(ptr align 8 %129, i8 0, i64 24, i1 false)
  br label %4463

4463:                                             ; preds = %4458
  %4464 = load i32, ptr @test_count, align 4, !tbaa !5
  %4465 = add nsw i32 %4464, 1
  store i32 %4465, ptr @test_count, align 4, !tbaa !5
  %4466 = getelementptr inbounds [32 x i8], ptr %128, i64 0, i64 0
  %4467 = load i16, ptr %127, align 2, !tbaa !16
  %4468 = zext i16 %4467 to i32
  %4469 = call i32 @s2n_blob_init(ptr noundef %129, ptr noundef %4466, i32 noundef %4468)
  %4470 = icmp eq i32 %4469, -1
  br i1 %4470, label %4471, label %4524

4471:                                             ; preds = %4463
  br label %4472

4472:                                             ; preds = %4471
  br label %4473

4473:                                             ; preds = %4472
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #10
  %4474 = call ptr @__errno_location() #11
  %4475 = load i32, ptr %4474, align 4, !tbaa !5
  store i32 %4475, ptr %130, align 4, !tbaa !5
  %4476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4477 = call i32 @s2n_print_stacktrace(ptr noundef %4476)
  %4478 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4479 = trunc i8 %4478 to i1
  br i1 %4479, label %4480, label %4502

4480:                                             ; preds = %4473
  %4481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4482 = call i32 @fileno(ptr noundef %4481) #10
  %4483 = call i32 @isatty(i32 noundef %4482) #10
  %4484 = icmp ne i32 %4483, 0
  br i1 %4484, label %4485, label %4502

4485:                                             ; preds = %4480
  %4486 = load i32, ptr %130, align 4, !tbaa !5
  %4487 = call ptr @__errno_location() #11
  store i32 %4486, ptr %4487, align 4, !tbaa !5
  %4488 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4489 = load i32, ptr @test_count, align 4, !tbaa !5
  %4490 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4491 = load i32, ptr %4490, align 4, !tbaa !5
  %4492 = call ptr @s2n_strerror(i32 noundef %4491, ptr noundef @.str.3)
  %4493 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4494 = load i32, ptr %4493, align 4, !tbaa !5
  %4495 = call ptr @s2n_strerror_debug(i32 noundef %4494, ptr noundef @.str.3)
  %4496 = call ptr @__errno_location() #11
  %4497 = load i32, ptr %4496, align 4, !tbaa !5
  %4498 = call ptr @strerror(i32 noundef %4497) #10
  %4499 = call ptr @__errno_location() #11
  %4500 = load i32, ptr %4499, align 4, !tbaa !5
  %4501 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4488, ptr noundef @.str, i32 noundef %4489, ptr noundef @.str.50, ptr noundef @.str.2, i32 noundef 285, ptr noundef %4492, ptr noundef %4495, ptr noundef %4498, i32 noundef %4500) #10
  br label %4519

4502:                                             ; preds = %4480, %4473
  %4503 = load i32, ptr %130, align 4, !tbaa !5
  %4504 = call ptr @__errno_location() #11
  store i32 %4503, ptr %4504, align 4, !tbaa !5
  %4505 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4506 = load i32, ptr @test_count, align 4, !tbaa !5
  %4507 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4508 = load i32, ptr %4507, align 4, !tbaa !5
  %4509 = call ptr @s2n_strerror(i32 noundef %4508, ptr noundef @.str.3)
  %4510 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4511 = load i32, ptr %4510, align 4, !tbaa !5
  %4512 = call ptr @s2n_strerror_debug(i32 noundef %4511, ptr noundef @.str.3)
  %4513 = call ptr @__errno_location() #11
  %4514 = load i32, ptr %4513, align 4, !tbaa !5
  %4515 = call ptr @strerror(i32 noundef %4514) #10
  %4516 = call ptr @__errno_location() #11
  %4517 = load i32, ptr %4516, align 4, !tbaa !5
  %4518 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4505, ptr noundef @.str.4, i32 noundef %4506, ptr noundef @.str.50, ptr noundef @.str.2, i32 noundef 285, ptr noundef %4509, ptr noundef %4512, ptr noundef %4515, i32 noundef %4517) #10
  br label %4519

4519:                                             ; preds = %4502, %4485
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #10
  br label %4520

4520:                                             ; preds = %4519
  br label %4521

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

4522:                                             ; No predecessors!
  br label %4523

4523:                                             ; preds = %4522
  br label %4524

4524:                                             ; preds = %4523, %4463
  br label %4525

4525:                                             ; preds = %4524
  br label %4526

4526:                                             ; preds = %4525
  br label %4527

4527:                                             ; preds = %4526
  %4528 = load i32, ptr @test_count, align 4, !tbaa !5
  %4529 = add nsw i32 %4528, 1
  store i32 %4529, ptr @test_count, align 4, !tbaa !5
  %4530 = call i32 @s2n_get_public_random_data(ptr noundef %129)
  %4531 = getelementptr inbounds %struct.s2n_result, ptr %131, i32 0, i32 0
  store i32 %4530, ptr %4531, align 4
  %4532 = getelementptr inbounds %struct.s2n_result, ptr %131, i32 0, i32 0
  %4533 = load i32, ptr %4532, align 4
  %4534 = call zeroext i1 @s2n_result_is_ok(i32 %4533)
  br i1 %4534, label %4588, label %4535

4535:                                             ; preds = %4527
  br label %4536

4536:                                             ; preds = %4535
  br label %4537

4537:                                             ; preds = %4536
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #10
  %4538 = call ptr @__errno_location() #11
  %4539 = load i32, ptr %4538, align 4, !tbaa !5
  store i32 %4539, ptr %132, align 4, !tbaa !5
  %4540 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4541 = call i32 @s2n_print_stacktrace(ptr noundef %4540)
  %4542 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4543 = trunc i8 %4542 to i1
  br i1 %4543, label %4544, label %4566

4544:                                             ; preds = %4537
  %4545 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4546 = call i32 @fileno(ptr noundef %4545) #10
  %4547 = call i32 @isatty(i32 noundef %4546) #10
  %4548 = icmp ne i32 %4547, 0
  br i1 %4548, label %4549, label %4566

4549:                                             ; preds = %4544
  %4550 = load i32, ptr %132, align 4, !tbaa !5
  %4551 = call ptr @__errno_location() #11
  store i32 %4550, ptr %4551, align 4, !tbaa !5
  %4552 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4553 = load i32, ptr @test_count, align 4, !tbaa !5
  %4554 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4555 = load i32, ptr %4554, align 4, !tbaa !5
  %4556 = call ptr @s2n_strerror(i32 noundef %4555, ptr noundef @.str.3)
  %4557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4558 = load i32, ptr %4557, align 4, !tbaa !5
  %4559 = call ptr @s2n_strerror_debug(i32 noundef %4558, ptr noundef @.str.3)
  %4560 = call ptr @__errno_location() #11
  %4561 = load i32, ptr %4560, align 4, !tbaa !5
  %4562 = call ptr @strerror(i32 noundef %4561) #10
  %4563 = call ptr @__errno_location() #11
  %4564 = load i32, ptr %4563, align 4, !tbaa !5
  %4565 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4552, ptr noundef @.str, i32 noundef %4553, ptr noundef @.str.51, ptr noundef @.str.2, i32 noundef 286, ptr noundef %4556, ptr noundef %4559, ptr noundef %4562, i32 noundef %4564) #10
  br label %4583

4566:                                             ; preds = %4544, %4537
  %4567 = load i32, ptr %132, align 4, !tbaa !5
  %4568 = call ptr @__errno_location() #11
  store i32 %4567, ptr %4568, align 4, !tbaa !5
  %4569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4570 = load i32, ptr @test_count, align 4, !tbaa !5
  %4571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4572 = load i32, ptr %4571, align 4, !tbaa !5
  %4573 = call ptr @s2n_strerror(i32 noundef %4572, ptr noundef @.str.3)
  %4574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4575 = load i32, ptr %4574, align 4, !tbaa !5
  %4576 = call ptr @s2n_strerror_debug(i32 noundef %4575, ptr noundef @.str.3)
  %4577 = call ptr @__errno_location() #11
  %4578 = load i32, ptr %4577, align 4, !tbaa !5
  %4579 = call ptr @strerror(i32 noundef %4578) #10
  %4580 = call ptr @__errno_location() #11
  %4581 = load i32, ptr %4580, align 4, !tbaa !5
  %4582 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4569, ptr noundef @.str.4, i32 noundef %4570, ptr noundef @.str.51, ptr noundef @.str.2, i32 noundef 286, ptr noundef %4573, ptr noundef %4576, ptr noundef %4579, i32 noundef %4581) #10
  br label %4583

4583:                                             ; preds = %4566, %4549
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #10
  br label %4584

4584:                                             ; preds = %4583
  br label %4585

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

4586:                                             ; No predecessors!
  br label %4587

4587:                                             ; preds = %4586
  br label %4588

4588:                                             ; preds = %4587, %4527
  br label %4589

4589:                                             ; preds = %4588
  br label %4590

4590:                                             ; preds = %4589
  call void @llvm.lifetime.start.p0(i64 34, ptr %133) #10
  call void @llvm.memset.p0.i64(ptr align 16 %133, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %134) #10
  call void @llvm.memset.p0.i64(ptr align 8 %134, i8 0, i64 24, i1 false)
  br label %4591

4591:                                             ; preds = %4590
  %4592 = load i32, ptr @test_count, align 4, !tbaa !5
  %4593 = add nsw i32 %4592, 1
  store i32 %4593, ptr @test_count, align 4, !tbaa !5
  %4594 = getelementptr inbounds [34 x i8], ptr %133, i64 0, i64 0
  %4595 = call i32 @s2n_blob_init(ptr noundef %134, ptr noundef %4594, i32 noundef 34)
  %4596 = icmp eq i32 %4595, -1
  br i1 %4596, label %4597, label %4650

4597:                                             ; preds = %4591
  br label %4598

4598:                                             ; preds = %4597
  br label %4599

4599:                                             ; preds = %4598
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #10
  %4600 = call ptr @__errno_location() #11
  %4601 = load i32, ptr %4600, align 4, !tbaa !5
  store i32 %4601, ptr %135, align 4, !tbaa !5
  %4602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4603 = call i32 @s2n_print_stacktrace(ptr noundef %4602)
  %4604 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4605 = trunc i8 %4604 to i1
  br i1 %4605, label %4606, label %4628

4606:                                             ; preds = %4599
  %4607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4608 = call i32 @fileno(ptr noundef %4607) #10
  %4609 = call i32 @isatty(i32 noundef %4608) #10
  %4610 = icmp ne i32 %4609, 0
  br i1 %4610, label %4611, label %4628

4611:                                             ; preds = %4606
  %4612 = load i32, ptr %135, align 4, !tbaa !5
  %4613 = call ptr @__errno_location() #11
  store i32 %4612, ptr %4613, align 4, !tbaa !5
  %4614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4615 = load i32, ptr @test_count, align 4, !tbaa !5
  %4616 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4617 = load i32, ptr %4616, align 4, !tbaa !5
  %4618 = call ptr @s2n_strerror(i32 noundef %4617, ptr noundef @.str.3)
  %4619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4620 = load i32, ptr %4619, align 4, !tbaa !5
  %4621 = call ptr @s2n_strerror_debug(i32 noundef %4620, ptr noundef @.str.3)
  %4622 = call ptr @__errno_location() #11
  %4623 = load i32, ptr %4622, align 4, !tbaa !5
  %4624 = call ptr @strerror(i32 noundef %4623) #10
  %4625 = call ptr @__errno_location() #11
  %4626 = load i32, ptr %4625, align 4, !tbaa !5
  %4627 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4614, ptr noundef @.str, i32 noundef %4615, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 290, ptr noundef %4618, ptr noundef %4621, ptr noundef %4624, i32 noundef %4626) #10
  br label %4645

4628:                                             ; preds = %4606, %4599
  %4629 = load i32, ptr %135, align 4, !tbaa !5
  %4630 = call ptr @__errno_location() #11
  store i32 %4629, ptr %4630, align 4, !tbaa !5
  %4631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4632 = load i32, ptr @test_count, align 4, !tbaa !5
  %4633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4634 = load i32, ptr %4633, align 4, !tbaa !5
  %4635 = call ptr @s2n_strerror(i32 noundef %4634, ptr noundef @.str.3)
  %4636 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4637 = load i32, ptr %4636, align 4, !tbaa !5
  %4638 = call ptr @s2n_strerror_debug(i32 noundef %4637, ptr noundef @.str.3)
  %4639 = call ptr @__errno_location() #11
  %4640 = load i32, ptr %4639, align 4, !tbaa !5
  %4641 = call ptr @strerror(i32 noundef %4640) #10
  %4642 = call ptr @__errno_location() #11
  %4643 = load i32, ptr %4642, align 4, !tbaa !5
  %4644 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4631, ptr noundef @.str.4, i32 noundef %4632, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 290, ptr noundef %4635, ptr noundef %4638, ptr noundef %4641, i32 noundef %4643) #10
  br label %4645

4645:                                             ; preds = %4628, %4611
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #10
  br label %4646

4646:                                             ; preds = %4645
  br label %4647

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

4648:                                             ; No predecessors!
  br label %4649

4649:                                             ; preds = %4648
  br label %4650

4650:                                             ; preds = %4649, %4591
  br label %4651

4651:                                             ; preds = %4650
  br label %4652

4652:                                             ; preds = %4651
  %4653 = load ptr, ptr %124, align 8, !tbaa !9
  %4654 = getelementptr inbounds %struct.s2n_parsed_extension, ptr %4653, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4654, ptr align 8 %134, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr %136) #10
  call void @llvm.memset.p0.i64(ptr align 8 %136, i8 0, i64 40, i1 false)
  br label %4655

4655:                                             ; preds = %4652
  %4656 = load i32, ptr @test_count, align 4, !tbaa !5
  %4657 = add nsw i32 %4656, 1
  store i32 %4657, ptr @test_count, align 4, !tbaa !5
  %4658 = call i32 @s2n_stuffer_init(ptr noundef %136, ptr noundef %134)
  %4659 = icmp eq i32 %4658, -1
  br i1 %4659, label %4660, label %4713

4660:                                             ; preds = %4655
  br label %4661

4661:                                             ; preds = %4660
  br label %4662

4662:                                             ; preds = %4661
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #10
  %4663 = call ptr @__errno_location() #11
  %4664 = load i32, ptr %4663, align 4, !tbaa !5
  store i32 %4664, ptr %137, align 4, !tbaa !5
  %4665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4666 = call i32 @s2n_print_stacktrace(ptr noundef %4665)
  %4667 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4668 = trunc i8 %4667 to i1
  br i1 %4668, label %4669, label %4691

4669:                                             ; preds = %4662
  %4670 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4671 = call i32 @fileno(ptr noundef %4670) #10
  %4672 = call i32 @isatty(i32 noundef %4671) #10
  %4673 = icmp ne i32 %4672, 0
  br i1 %4673, label %4674, label %4691

4674:                                             ; preds = %4669
  %4675 = load i32, ptr %137, align 4, !tbaa !5
  %4676 = call ptr @__errno_location() #11
  store i32 %4675, ptr %4676, align 4, !tbaa !5
  %4677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4678 = load i32, ptr @test_count, align 4, !tbaa !5
  %4679 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4680 = load i32, ptr %4679, align 4, !tbaa !5
  %4681 = call ptr @s2n_strerror(i32 noundef %4680, ptr noundef @.str.3)
  %4682 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4683 = load i32, ptr %4682, align 4, !tbaa !5
  %4684 = call ptr @s2n_strerror_debug(i32 noundef %4683, ptr noundef @.str.3)
  %4685 = call ptr @__errno_location() #11
  %4686 = load i32, ptr %4685, align 4, !tbaa !5
  %4687 = call ptr @strerror(i32 noundef %4686) #10
  %4688 = call ptr @__errno_location() #11
  %4689 = load i32, ptr %4688, align 4, !tbaa !5
  %4690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4677, ptr noundef @.str, i32 noundef %4678, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 294, ptr noundef %4681, ptr noundef %4684, ptr noundef %4687, i32 noundef %4689) #10
  br label %4708

4691:                                             ; preds = %4669, %4662
  %4692 = load i32, ptr %137, align 4, !tbaa !5
  %4693 = call ptr @__errno_location() #11
  store i32 %4692, ptr %4693, align 4, !tbaa !5
  %4694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4695 = load i32, ptr @test_count, align 4, !tbaa !5
  %4696 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4697 = load i32, ptr %4696, align 4, !tbaa !5
  %4698 = call ptr @s2n_strerror(i32 noundef %4697, ptr noundef @.str.3)
  %4699 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4700 = load i32, ptr %4699, align 4, !tbaa !5
  %4701 = call ptr @s2n_strerror_debug(i32 noundef %4700, ptr noundef @.str.3)
  %4702 = call ptr @__errno_location() #11
  %4703 = load i32, ptr %4702, align 4, !tbaa !5
  %4704 = call ptr @strerror(i32 noundef %4703) #10
  %4705 = call ptr @__errno_location() #11
  %4706 = load i32, ptr %4705, align 4, !tbaa !5
  %4707 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4694, ptr noundef @.str.4, i32 noundef %4695, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 294, ptr noundef %4698, ptr noundef %4701, ptr noundef %4704, i32 noundef %4706) #10
  br label %4708

4708:                                             ; preds = %4691, %4674
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #10
  br label %4709

4709:                                             ; preds = %4708
  br label %4710

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

4711:                                             ; No predecessors!
  br label %4712

4712:                                             ; preds = %4711
  br label %4713

4713:                                             ; preds = %4712, %4655
  br label %4714

4714:                                             ; preds = %4713
  br label %4715

4715:                                             ; preds = %4714
  br label %4716

4716:                                             ; preds = %4715
  %4717 = load i32, ptr @test_count, align 4, !tbaa !5
  %4718 = add nsw i32 %4717, 1
  store i32 %4718, ptr @test_count, align 4, !tbaa !5
  %4719 = load i16, ptr %127, align 2, !tbaa !16
  %4720 = call i32 @s2n_stuffer_write_uint16(ptr noundef %136, i16 noundef zeroext %4719)
  %4721 = icmp eq i32 %4720, -1
  br i1 %4721, label %4722, label %4775

4722:                                             ; preds = %4716
  br label %4723

4723:                                             ; preds = %4722
  br label %4724

4724:                                             ; preds = %4723
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #10
  %4725 = call ptr @__errno_location() #11
  %4726 = load i32, ptr %4725, align 4, !tbaa !5
  store i32 %4726, ptr %138, align 4, !tbaa !5
  %4727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4728 = call i32 @s2n_print_stacktrace(ptr noundef %4727)
  %4729 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4730 = trunc i8 %4729 to i1
  br i1 %4730, label %4731, label %4753

4731:                                             ; preds = %4724
  %4732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4733 = call i32 @fileno(ptr noundef %4732) #10
  %4734 = call i32 @isatty(i32 noundef %4733) #10
  %4735 = icmp ne i32 %4734, 0
  br i1 %4735, label %4736, label %4753

4736:                                             ; preds = %4731
  %4737 = load i32, ptr %138, align 4, !tbaa !5
  %4738 = call ptr @__errno_location() #11
  store i32 %4737, ptr %4738, align 4, !tbaa !5
  %4739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4740 = load i32, ptr @test_count, align 4, !tbaa !5
  %4741 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4742 = load i32, ptr %4741, align 4, !tbaa !5
  %4743 = call ptr @s2n_strerror(i32 noundef %4742, ptr noundef @.str.3)
  %4744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4745 = load i32, ptr %4744, align 4, !tbaa !5
  %4746 = call ptr @s2n_strerror_debug(i32 noundef %4745, ptr noundef @.str.3)
  %4747 = call ptr @__errno_location() #11
  %4748 = load i32, ptr %4747, align 4, !tbaa !5
  %4749 = call ptr @strerror(i32 noundef %4748) #10
  %4750 = call ptr @__errno_location() #11
  %4751 = load i32, ptr %4750, align 4, !tbaa !5
  %4752 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4739, ptr noundef @.str, i32 noundef %4740, ptr noundef @.str.52, ptr noundef @.str.2, i32 noundef 295, ptr noundef %4743, ptr noundef %4746, ptr noundef %4749, i32 noundef %4751) #10
  br label %4770

4753:                                             ; preds = %4731, %4724
  %4754 = load i32, ptr %138, align 4, !tbaa !5
  %4755 = call ptr @__errno_location() #11
  store i32 %4754, ptr %4755, align 4, !tbaa !5
  %4756 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4757 = load i32, ptr @test_count, align 4, !tbaa !5
  %4758 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4759 = load i32, ptr %4758, align 4, !tbaa !5
  %4760 = call ptr @s2n_strerror(i32 noundef %4759, ptr noundef @.str.3)
  %4761 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4762 = load i32, ptr %4761, align 4, !tbaa !5
  %4763 = call ptr @s2n_strerror_debug(i32 noundef %4762, ptr noundef @.str.3)
  %4764 = call ptr @__errno_location() #11
  %4765 = load i32, ptr %4764, align 4, !tbaa !5
  %4766 = call ptr @strerror(i32 noundef %4765) #10
  %4767 = call ptr @__errno_location() #11
  %4768 = load i32, ptr %4767, align 4, !tbaa !5
  %4769 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4756, ptr noundef @.str.4, i32 noundef %4757, ptr noundef @.str.52, ptr noundef @.str.2, i32 noundef 295, ptr noundef %4760, ptr noundef %4763, ptr noundef %4766, i32 noundef %4768) #10
  br label %4770

4770:                                             ; preds = %4753, %4736
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #10
  br label %4771

4771:                                             ; preds = %4770
  br label %4772

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

4773:                                             ; No predecessors!
  br label %4774

4774:                                             ; preds = %4773
  br label %4775

4775:                                             ; preds = %4774, %4716
  br label %4776

4776:                                             ; preds = %4775
  br label %4777

4777:                                             ; preds = %4776
  br label %4778

4778:                                             ; preds = %4777
  %4779 = load i32, ptr @test_count, align 4, !tbaa !5
  %4780 = add nsw i32 %4779, 1
  store i32 %4780, ptr @test_count, align 4, !tbaa !5
  %4781 = call i32 @s2n_stuffer_write(ptr noundef %136, ptr noundef %129)
  %4782 = icmp eq i32 %4781, -1
  br i1 %4782, label %4783, label %4836

4783:                                             ; preds = %4778
  br label %4784

4784:                                             ; preds = %4783
  br label %4785

4785:                                             ; preds = %4784
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #10
  %4786 = call ptr @__errno_location() #11
  %4787 = load i32, ptr %4786, align 4, !tbaa !5
  store i32 %4787, ptr %139, align 4, !tbaa !5
  %4788 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4789 = call i32 @s2n_print_stacktrace(ptr noundef %4788)
  %4790 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4791 = trunc i8 %4790 to i1
  br i1 %4791, label %4792, label %4814

4792:                                             ; preds = %4785
  %4793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4794 = call i32 @fileno(ptr noundef %4793) #10
  %4795 = call i32 @isatty(i32 noundef %4794) #10
  %4796 = icmp ne i32 %4795, 0
  br i1 %4796, label %4797, label %4814

4797:                                             ; preds = %4792
  %4798 = load i32, ptr %139, align 4, !tbaa !5
  %4799 = call ptr @__errno_location() #11
  store i32 %4798, ptr %4799, align 4, !tbaa !5
  %4800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4801 = load i32, ptr @test_count, align 4, !tbaa !5
  %4802 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4803 = load i32, ptr %4802, align 4, !tbaa !5
  %4804 = call ptr @s2n_strerror(i32 noundef %4803, ptr noundef @.str.3)
  %4805 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4806 = load i32, ptr %4805, align 4, !tbaa !5
  %4807 = call ptr @s2n_strerror_debug(i32 noundef %4806, ptr noundef @.str.3)
  %4808 = call ptr @__errno_location() #11
  %4809 = load i32, ptr %4808, align 4, !tbaa !5
  %4810 = call ptr @strerror(i32 noundef %4809) #10
  %4811 = call ptr @__errno_location() #11
  %4812 = load i32, ptr %4811, align 4, !tbaa !5
  %4813 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4800, ptr noundef @.str, i32 noundef %4801, ptr noundef @.str.53, ptr noundef @.str.2, i32 noundef 296, ptr noundef %4804, ptr noundef %4807, ptr noundef %4810, i32 noundef %4812) #10
  br label %4831

4814:                                             ; preds = %4792, %4785
  %4815 = load i32, ptr %139, align 4, !tbaa !5
  %4816 = call ptr @__errno_location() #11
  store i32 %4815, ptr %4816, align 4, !tbaa !5
  %4817 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4818 = load i32, ptr @test_count, align 4, !tbaa !5
  %4819 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4820 = load i32, ptr %4819, align 4, !tbaa !5
  %4821 = call ptr @s2n_strerror(i32 noundef %4820, ptr noundef @.str.3)
  %4822 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4823 = load i32, ptr %4822, align 4, !tbaa !5
  %4824 = call ptr @s2n_strerror_debug(i32 noundef %4823, ptr noundef @.str.3)
  %4825 = call ptr @__errno_location() #11
  %4826 = load i32, ptr %4825, align 4, !tbaa !5
  %4827 = call ptr @strerror(i32 noundef %4826) #10
  %4828 = call ptr @__errno_location() #11
  %4829 = load i32, ptr %4828, align 4, !tbaa !5
  %4830 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4817, ptr noundef @.str.4, i32 noundef %4818, ptr noundef @.str.53, ptr noundef @.str.2, i32 noundef 296, ptr noundef %4821, ptr noundef %4824, ptr noundef %4827, i32 noundef %4829) #10
  br label %4831

4831:                                             ; preds = %4814, %4797
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #10
  br label %4832

4832:                                             ; preds = %4831
  br label %4833

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

4834:                                             ; No predecessors!
  br label %4835

4835:                                             ; preds = %4834
  br label %4836

4836:                                             ; preds = %4835, %4778
  br label %4837

4837:                                             ; preds = %4836
  br label %4838

4838:                                             ; preds = %4837
  call void @llvm.lifetime.start.p0(i64 32, ptr %140) #10
  call void @llvm.memset.p0.i64(ptr align 16 %140, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr %141) #10
  store i16 0, ptr %141, align 2, !tbaa !16
  br label %4839

4839:                                             ; preds = %4838
  %4840 = load i32, ptr @test_count, align 4, !tbaa !5
  %4841 = add nsw i32 %4840, 1
  store i32 %4841, ptr @test_count, align 4, !tbaa !5
  %4842 = getelementptr inbounds [16 x i16], ptr %140, i64 0, i64 0
  %4843 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef %123, ptr noundef %4842, i16 noundef zeroext 16, ptr noundef %141)
  %4844 = icmp eq i32 %4843, -1
  br i1 %4844, label %4845, label %4898

4845:                                             ; preds = %4839
  br label %4846

4846:                                             ; preds = %4845
  br label %4847

4847:                                             ; preds = %4846
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #10
  %4848 = call ptr @__errno_location() #11
  %4849 = load i32, ptr %4848, align 4, !tbaa !5
  store i32 %4849, ptr %142, align 4, !tbaa !5
  %4850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4851 = call i32 @s2n_print_stacktrace(ptr noundef %4850)
  %4852 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4853 = trunc i8 %4852 to i1
  br i1 %4853, label %4854, label %4876

4854:                                             ; preds = %4847
  %4855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4856 = call i32 @fileno(ptr noundef %4855) #10
  %4857 = call i32 @isatty(i32 noundef %4856) #10
  %4858 = icmp ne i32 %4857, 0
  br i1 %4858, label %4859, label %4876

4859:                                             ; preds = %4854
  %4860 = load i32, ptr %142, align 4, !tbaa !5
  %4861 = call ptr @__errno_location() #11
  store i32 %4860, ptr %4861, align 4, !tbaa !5
  %4862 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4863 = load i32, ptr @test_count, align 4, !tbaa !5
  %4864 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4865 = load i32, ptr %4864, align 4, !tbaa !5
  %4866 = call ptr @s2n_strerror(i32 noundef %4865, ptr noundef @.str.3)
  %4867 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4868 = load i32, ptr %4867, align 4, !tbaa !5
  %4869 = call ptr @s2n_strerror_debug(i32 noundef %4868, ptr noundef @.str.3)
  %4870 = call ptr @__errno_location() #11
  %4871 = load i32, ptr %4870, align 4, !tbaa !5
  %4872 = call ptr @strerror(i32 noundef %4871) #10
  %4873 = call ptr @__errno_location() #11
  %4874 = load i32, ptr %4873, align 4, !tbaa !5
  %4875 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4862, ptr noundef @.str, i32 noundef %4863, ptr noundef @.str.46, ptr noundef @.str.2, i32 noundef 301, ptr noundef %4866, ptr noundef %4869, ptr noundef %4872, i32 noundef %4874) #10
  br label %4893

4876:                                             ; preds = %4854, %4847
  %4877 = load i32, ptr %142, align 4, !tbaa !5
  %4878 = call ptr @__errno_location() #11
  store i32 %4877, ptr %4878, align 4, !tbaa !5
  %4879 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4880 = load i32, ptr @test_count, align 4, !tbaa !5
  %4881 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4882 = load i32, ptr %4881, align 4, !tbaa !5
  %4883 = call ptr @s2n_strerror(i32 noundef %4882, ptr noundef @.str.3)
  %4884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4885 = load i32, ptr %4884, align 4, !tbaa !5
  %4886 = call ptr @s2n_strerror_debug(i32 noundef %4885, ptr noundef @.str.3)
  %4887 = call ptr @__errno_location() #11
  %4888 = load i32, ptr %4887, align 4, !tbaa !5
  %4889 = call ptr @strerror(i32 noundef %4888) #10
  %4890 = call ptr @__errno_location() #11
  %4891 = load i32, ptr %4890, align 4, !tbaa !5
  %4892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4879, ptr noundef @.str.4, i32 noundef %4880, ptr noundef @.str.46, ptr noundef @.str.2, i32 noundef 301, ptr noundef %4883, ptr noundef %4886, ptr noundef %4889, i32 noundef %4891) #10
  br label %4893

4893:                                             ; preds = %4876, %4859
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #10
  br label %4894

4894:                                             ; preds = %4893
  br label %4895

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

4896:                                             ; No predecessors!
  br label %4897

4897:                                             ; preds = %4896
  br label %4898

4898:                                             ; preds = %4897, %4839
  br label %4899

4899:                                             ; preds = %4898
  br label %4900

4900:                                             ; preds = %4899
  br label %4901

4901:                                             ; preds = %4900
  %4902 = load i32, ptr @test_count, align 4, !tbaa !5
  %4903 = add nsw i32 %4902, 1
  store i32 %4903, ptr @test_count, align 4, !tbaa !5
  %4904 = load i16, ptr %141, align 2, !tbaa !16
  %4905 = zext i16 %4904 to i32
  %4906 = load i16, ptr %125, align 2, !tbaa !16
  %4907 = zext i16 %4906 to i32
  %4908 = icmp eq i32 %4905, %4907
  br i1 %4908, label %4962, label %4909

4909:                                             ; preds = %4901
  br label %4910

4910:                                             ; preds = %4909
  br label %4911

4911:                                             ; preds = %4910
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #10
  %4912 = call ptr @__errno_location() #11
  %4913 = load i32, ptr %4912, align 4, !tbaa !5
  store i32 %4913, ptr %143, align 4, !tbaa !5
  %4914 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4915 = call i32 @s2n_print_stacktrace(ptr noundef %4914)
  %4916 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4917 = trunc i8 %4916 to i1
  br i1 %4917, label %4918, label %4940

4918:                                             ; preds = %4911
  %4919 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4920 = call i32 @fileno(ptr noundef %4919) #10
  %4921 = call i32 @isatty(i32 noundef %4920) #10
  %4922 = icmp ne i32 %4921, 0
  br i1 %4922, label %4923, label %4940

4923:                                             ; preds = %4918
  %4924 = load i32, ptr %143, align 4, !tbaa !5
  %4925 = call ptr @__errno_location() #11
  store i32 %4924, ptr %4925, align 4, !tbaa !5
  %4926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4927 = load i32, ptr @test_count, align 4, !tbaa !5
  %4928 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4929 = load i32, ptr %4928, align 4, !tbaa !5
  %4930 = call ptr @s2n_strerror(i32 noundef %4929, ptr noundef @.str.3)
  %4931 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4932 = load i32, ptr %4931, align 4, !tbaa !5
  %4933 = call ptr @s2n_strerror_debug(i32 noundef %4932, ptr noundef @.str.3)
  %4934 = call ptr @__errno_location() #11
  %4935 = load i32, ptr %4934, align 4, !tbaa !5
  %4936 = call ptr @strerror(i32 noundef %4935) #10
  %4937 = call ptr @__errno_location() #11
  %4938 = load i32, ptr %4937, align 4, !tbaa !5
  %4939 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4926, ptr noundef @.str, i32 noundef %4927, ptr noundef @.str.54, ptr noundef @.str.2, i32 noundef 302, ptr noundef %4930, ptr noundef %4933, ptr noundef %4936, i32 noundef %4938) #10
  br label %4957

4940:                                             ; preds = %4918, %4911
  %4941 = load i32, ptr %143, align 4, !tbaa !5
  %4942 = call ptr @__errno_location() #11
  store i32 %4941, ptr %4942, align 4, !tbaa !5
  %4943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4944 = load i32, ptr @test_count, align 4, !tbaa !5
  %4945 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4946 = load i32, ptr %4945, align 4, !tbaa !5
  %4947 = call ptr @s2n_strerror(i32 noundef %4946, ptr noundef @.str.3)
  %4948 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4949 = load i32, ptr %4948, align 4, !tbaa !5
  %4950 = call ptr @s2n_strerror_debug(i32 noundef %4949, ptr noundef @.str.3)
  %4951 = call ptr @__errno_location() #11
  %4952 = load i32, ptr %4951, align 4, !tbaa !5
  %4953 = call ptr @strerror(i32 noundef %4952) #10
  %4954 = call ptr @__errno_location() #11
  %4955 = load i32, ptr %4954, align 4, !tbaa !5
  %4956 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4943, ptr noundef @.str.4, i32 noundef %4944, ptr noundef @.str.54, ptr noundef @.str.2, i32 noundef 302, ptr noundef %4947, ptr noundef %4950, ptr noundef %4953, i32 noundef %4955) #10
  br label %4957

4957:                                             ; preds = %4940, %4923
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #10
  br label %4958

4958:                                             ; preds = %4957
  br label %4959

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

4960:                                             ; No predecessors!
  br label %4961

4961:                                             ; preds = %4960
  br label %4962

4962:                                             ; preds = %4961, %4901
  br label %4963

4963:                                             ; preds = %4962
  br label %4964

4964:                                             ; preds = %4963
  call void @llvm.lifetime.start.p0(i64 40, ptr %144) #10
  call void @llvm.memset.p0.i64(ptr align 8 %144, i8 0, i64 40, i1 false)
  br label %4965

4965:                                             ; preds = %4964
  %4966 = load i32, ptr @test_count, align 4, !tbaa !5
  %4967 = add nsw i32 %4966, 1
  store i32 %4967, ptr @test_count, align 4, !tbaa !5
  %4968 = call i32 @s2n_stuffer_init_written(ptr noundef %144, ptr noundef %129)
  %4969 = icmp eq i32 %4968, -1
  br i1 %4969, label %4970, label %5023

4970:                                             ; preds = %4965
  br label %4971

4971:                                             ; preds = %4970
  br label %4972

4972:                                             ; preds = %4971
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #10
  %4973 = call ptr @__errno_location() #11
  %4974 = load i32, ptr %4973, align 4, !tbaa !5
  store i32 %4974, ptr %145, align 4, !tbaa !5
  %4975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4976 = call i32 @s2n_print_stacktrace(ptr noundef %4975)
  %4977 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4978 = trunc i8 %4977 to i1
  br i1 %4978, label %4979, label %5001

4979:                                             ; preds = %4972
  %4980 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4981 = call i32 @fileno(ptr noundef %4980) #10
  %4982 = call i32 @isatty(i32 noundef %4981) #10
  %4983 = icmp ne i32 %4982, 0
  br i1 %4983, label %4984, label %5001

4984:                                             ; preds = %4979
  %4985 = load i32, ptr %145, align 4, !tbaa !5
  %4986 = call ptr @__errno_location() #11
  store i32 %4985, ptr %4986, align 4, !tbaa !5
  %4987 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4988 = load i32, ptr @test_count, align 4, !tbaa !5
  %4989 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4990 = load i32, ptr %4989, align 4, !tbaa !5
  %4991 = call ptr @s2n_strerror(i32 noundef %4990, ptr noundef @.str.3)
  %4992 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4993 = load i32, ptr %4992, align 4, !tbaa !5
  %4994 = call ptr @s2n_strerror_debug(i32 noundef %4993, ptr noundef @.str.3)
  %4995 = call ptr @__errno_location() #11
  %4996 = load i32, ptr %4995, align 4, !tbaa !5
  %4997 = call ptr @strerror(i32 noundef %4996) #10
  %4998 = call ptr @__errno_location() #11
  %4999 = load i32, ptr %4998, align 4, !tbaa !5
  %5000 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4987, ptr noundef @.str, i32 noundef %4988, ptr noundef @.str.55, ptr noundef @.str.2, i32 noundef 305, ptr noundef %4991, ptr noundef %4994, ptr noundef %4997, i32 noundef %4999) #10
  br label %5018

5001:                                             ; preds = %4979, %4972
  %5002 = load i32, ptr %145, align 4, !tbaa !5
  %5003 = call ptr @__errno_location() #11
  store i32 %5002, ptr %5003, align 4, !tbaa !5
  %5004 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5005 = load i32, ptr @test_count, align 4, !tbaa !5
  %5006 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5007 = load i32, ptr %5006, align 4, !tbaa !5
  %5008 = call ptr @s2n_strerror(i32 noundef %5007, ptr noundef @.str.3)
  %5009 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5010 = load i32, ptr %5009, align 4, !tbaa !5
  %5011 = call ptr @s2n_strerror_debug(i32 noundef %5010, ptr noundef @.str.3)
  %5012 = call ptr @__errno_location() #11
  %5013 = load i32, ptr %5012, align 4, !tbaa !5
  %5014 = call ptr @strerror(i32 noundef %5013) #10
  %5015 = call ptr @__errno_location() #11
  %5016 = load i32, ptr %5015, align 4, !tbaa !5
  %5017 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5004, ptr noundef @.str.4, i32 noundef %5005, ptr noundef @.str.55, ptr noundef @.str.2, i32 noundef 305, ptr noundef %5008, ptr noundef %5011, ptr noundef %5014, i32 noundef %5016) #10
  br label %5018

5018:                                             ; preds = %5001, %4984
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #10
  br label %5019

5019:                                             ; preds = %5018
  br label %5020

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

5021:                                             ; No predecessors!
  br label %5022

5022:                                             ; preds = %5021
  br label %5023

5023:                                             ; preds = %5022, %4965
  br label %5024

5024:                                             ; preds = %5023
  br label %5025

5025:                                             ; preds = %5024
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #10
  store i64 0, ptr %146, align 8, !tbaa !50
  br label %5026

5026:                                             ; preds = %5161, %5025
  %5027 = load i64, ptr %146, align 8, !tbaa !50
  %5028 = load i16, ptr %141, align 2, !tbaa !16
  %5029 = zext i16 %5028 to i64
  %5030 = icmp ult i64 %5027, %5029
  br i1 %5030, label %5032, label %5031

5031:                                             ; preds = %5026
  store i32 510, ptr %126, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #10
  br label %5164

5032:                                             ; preds = %5026
  call void @llvm.lifetime.start.p0(i64 2, ptr %147) #10
  store i16 0, ptr %147, align 2, !tbaa !16
  br label %5033

5033:                                             ; preds = %5032
  %5034 = load i32, ptr @test_count, align 4, !tbaa !5
  %5035 = add nsw i32 %5034, 1
  store i32 %5035, ptr @test_count, align 4, !tbaa !5
  %5036 = call i32 @s2n_stuffer_read_uint16(ptr noundef %144, ptr noundef %147)
  %5037 = icmp eq i32 %5036, -1
  br i1 %5037, label %5038, label %5091

5038:                                             ; preds = %5033
  br label %5039

5039:                                             ; preds = %5038
  br label %5040

5040:                                             ; preds = %5039
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #10
  %5041 = call ptr @__errno_location() #11
  %5042 = load i32, ptr %5041, align 4, !tbaa !5
  store i32 %5042, ptr %148, align 4, !tbaa !5
  %5043 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5044 = call i32 @s2n_print_stacktrace(ptr noundef %5043)
  %5045 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5046 = trunc i8 %5045 to i1
  br i1 %5046, label %5047, label %5069

5047:                                             ; preds = %5040
  %5048 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5049 = call i32 @fileno(ptr noundef %5048) #10
  %5050 = call i32 @isatty(i32 noundef %5049) #10
  %5051 = icmp ne i32 %5050, 0
  br i1 %5051, label %5052, label %5069

5052:                                             ; preds = %5047
  %5053 = load i32, ptr %148, align 4, !tbaa !5
  %5054 = call ptr @__errno_location() #11
  store i32 %5053, ptr %5054, align 4, !tbaa !5
  %5055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5056 = load i32, ptr @test_count, align 4, !tbaa !5
  %5057 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5058 = load i32, ptr %5057, align 4, !tbaa !5
  %5059 = call ptr @s2n_strerror(i32 noundef %5058, ptr noundef @.str.3)
  %5060 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5061 = load i32, ptr %5060, align 4, !tbaa !5
  %5062 = call ptr @s2n_strerror_debug(i32 noundef %5061, ptr noundef @.str.3)
  %5063 = call ptr @__errno_location() #11
  %5064 = load i32, ptr %5063, align 4, !tbaa !5
  %5065 = call ptr @strerror(i32 noundef %5064) #10
  %5066 = call ptr @__errno_location() #11
  %5067 = load i32, ptr %5066, align 4, !tbaa !5
  %5068 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5055, ptr noundef @.str, i32 noundef %5056, ptr noundef @.str.56, ptr noundef @.str.2, i32 noundef 309, ptr noundef %5059, ptr noundef %5062, ptr noundef %5065, i32 noundef %5067) #10
  br label %5086

5069:                                             ; preds = %5047, %5040
  %5070 = load i32, ptr %148, align 4, !tbaa !5
  %5071 = call ptr @__errno_location() #11
  store i32 %5070, ptr %5071, align 4, !tbaa !5
  %5072 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5073 = load i32, ptr @test_count, align 4, !tbaa !5
  %5074 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5075 = load i32, ptr %5074, align 4, !tbaa !5
  %5076 = call ptr @s2n_strerror(i32 noundef %5075, ptr noundef @.str.3)
  %5077 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5078 = load i32, ptr %5077, align 4, !tbaa !5
  %5079 = call ptr @s2n_strerror_debug(i32 noundef %5078, ptr noundef @.str.3)
  %5080 = call ptr @__errno_location() #11
  %5081 = load i32, ptr %5080, align 4, !tbaa !5
  %5082 = call ptr @strerror(i32 noundef %5081) #10
  %5083 = call ptr @__errno_location() #11
  %5084 = load i32, ptr %5083, align 4, !tbaa !5
  %5085 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5072, ptr noundef @.str.4, i32 noundef %5073, ptr noundef @.str.56, ptr noundef @.str.2, i32 noundef 309, ptr noundef %5076, ptr noundef %5079, ptr noundef %5082, i32 noundef %5084) #10
  br label %5086

5086:                                             ; preds = %5069, %5052
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #10
  br label %5087

5087:                                             ; preds = %5086
  br label %5088

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

5089:                                             ; No predecessors!
  br label %5090

5090:                                             ; preds = %5089
  br label %5091

5091:                                             ; preds = %5090, %5033
  br label %5092

5092:                                             ; preds = %5091
  br label %5093

5093:                                             ; preds = %5092
  call void @llvm.lifetime.start.p0(i64 2, ptr %149) #10
  %5094 = load i64, ptr %146, align 8, !tbaa !50
  %5095 = getelementptr inbounds [16 x i16], ptr %140, i64 0, i64 %5094
  %5096 = load i16, ptr %5095, align 2, !tbaa !16
  store i16 %5096, ptr %149, align 2, !tbaa !16
  br label %5097

5097:                                             ; preds = %5093
  %5098 = load i32, ptr @test_count, align 4, !tbaa !5
  %5099 = add nsw i32 %5098, 1
  store i32 %5099, ptr @test_count, align 4, !tbaa !5
  %5100 = load i16, ptr %147, align 2, !tbaa !16
  %5101 = zext i16 %5100 to i32
  %5102 = load i16, ptr %149, align 2, !tbaa !16
  %5103 = zext i16 %5102 to i32
  %5104 = icmp eq i32 %5101, %5103
  br i1 %5104, label %5158, label %5105

5105:                                             ; preds = %5097
  br label %5106

5106:                                             ; preds = %5105
  br label %5107

5107:                                             ; preds = %5106
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #10
  %5108 = call ptr @__errno_location() #11
  %5109 = load i32, ptr %5108, align 4, !tbaa !5
  store i32 %5109, ptr %150, align 4, !tbaa !5
  %5110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5111 = call i32 @s2n_print_stacktrace(ptr noundef %5110)
  %5112 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5113 = trunc i8 %5112 to i1
  br i1 %5113, label %5114, label %5136

5114:                                             ; preds = %5107
  %5115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5116 = call i32 @fileno(ptr noundef %5115) #10
  %5117 = call i32 @isatty(i32 noundef %5116) #10
  %5118 = icmp ne i32 %5117, 0
  br i1 %5118, label %5119, label %5136

5119:                                             ; preds = %5114
  %5120 = load i32, ptr %150, align 4, !tbaa !5
  %5121 = call ptr @__errno_location() #11
  store i32 %5120, ptr %5121, align 4, !tbaa !5
  %5122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5123 = load i32, ptr @test_count, align 4, !tbaa !5
  %5124 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5125 = load i32, ptr %5124, align 4, !tbaa !5
  %5126 = call ptr @s2n_strerror(i32 noundef %5125, ptr noundef @.str.3)
  %5127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5128 = load i32, ptr %5127, align 4, !tbaa !5
  %5129 = call ptr @s2n_strerror_debug(i32 noundef %5128, ptr noundef @.str.3)
  %5130 = call ptr @__errno_location() #11
  %5131 = load i32, ptr %5130, align 4, !tbaa !5
  %5132 = call ptr @strerror(i32 noundef %5131) #10
  %5133 = call ptr @__errno_location() #11
  %5134 = load i32, ptr %5133, align 4, !tbaa !5
  %5135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5122, ptr noundef @.str, i32 noundef %5123, ptr noundef @.str.57, ptr noundef @.str.2, i32 noundef 312, ptr noundef %5126, ptr noundef %5129, ptr noundef %5132, i32 noundef %5134) #10
  br label %5153

5136:                                             ; preds = %5114, %5107
  %5137 = load i32, ptr %150, align 4, !tbaa !5
  %5138 = call ptr @__errno_location() #11
  store i32 %5137, ptr %5138, align 4, !tbaa !5
  %5139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5140 = load i32, ptr @test_count, align 4, !tbaa !5
  %5141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5142 = load i32, ptr %5141, align 4, !tbaa !5
  %5143 = call ptr @s2n_strerror(i32 noundef %5142, ptr noundef @.str.3)
  %5144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5145 = load i32, ptr %5144, align 4, !tbaa !5
  %5146 = call ptr @s2n_strerror_debug(i32 noundef %5145, ptr noundef @.str.3)
  %5147 = call ptr @__errno_location() #11
  %5148 = load i32, ptr %5147, align 4, !tbaa !5
  %5149 = call ptr @strerror(i32 noundef %5148) #10
  %5150 = call ptr @__errno_location() #11
  %5151 = load i32, ptr %5150, align 4, !tbaa !5
  %5152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5139, ptr noundef @.str.4, i32 noundef %5140, ptr noundef @.str.57, ptr noundef @.str.2, i32 noundef 312, ptr noundef %5143, ptr noundef %5146, ptr noundef %5149, i32 noundef %5151) #10
  br label %5153

5153:                                             ; preds = %5136, %5119
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #10
  br label %5154

5154:                                             ; preds = %5153
  br label %5155

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

5156:                                             ; No predecessors!
  br label %5157

5157:                                             ; preds = %5156
  br label %5158

5158:                                             ; preds = %5157, %5097
  br label %5159

5159:                                             ; preds = %5158
  br label %5160

5160:                                             ; preds = %5159
  call void @llvm.lifetime.end.p0(i64 2, ptr %149) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %147) #10
  br label %5161

5161:                                             ; preds = %5160
  %5162 = load i64, ptr %146, align 8, !tbaa !50
  %5163 = add i64 %5162, 1
  store i64 %5163, ptr %146, align 8, !tbaa !50
  br label %5026, !llvm.loop !51

5164:                                             ; preds = %5031
  call void @llvm.lifetime.end.p0(i64 40, ptr %144) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %141) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %140) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %136) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 34, ptr %133) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %127) #10
  br label %5165

5165:                                             ; preds = %5164
  %5166 = load i16, ptr %125, align 2, !tbaa !16
  %5167 = add i16 %5166, 1
  store i16 %5167, ptr %125, align 2, !tbaa !16
  br label %4453, !llvm.loop !52

5168:                                             ; preds = %4457
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  call void @llvm.lifetime.end.p0(i64 808, ptr %123) #10
  call void @llvm.lifetime.start.p0(i64 56, ptr %151) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %151, ptr align 16 @__const.main.policies, i64 56, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #10
  store i32 0, ptr %152, align 4, !tbaa !5
  br label %5169

5169:                                             ; preds = %6499, %5168
  %5170 = load i32, ptr %152, align 4, !tbaa !5
  %5171 = sext i32 %5170 to i64
  %5172 = icmp ult i64 %5171, 7
  br i1 %5172, label %5174, label %5173

5173:                                             ; preds = %5169
  store i32 525, ptr %126, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #10
  br label %6502

5174:                                             ; preds = %5169
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #10
  %5175 = load i32, ptr %152, align 4, !tbaa !5
  %5176 = sext i32 %5175 to i64
  %5177 = getelementptr inbounds [7 x ptr], ptr %151, i64 0, i64 %5176
  %5178 = load ptr, ptr %5177, align 8, !tbaa !9
  store ptr %5178, ptr %153, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #10
  %5179 = call ptr @s2n_config_new()
  store ptr %5179, ptr %154, align 8, !tbaa !9
  br label %5180

5180:                                             ; preds = %5174
  %5181 = load i32, ptr @test_count, align 4, !tbaa !5
  %5182 = add nsw i32 %5181, 1
  store i32 %5182, ptr @test_count, align 4, !tbaa !5
  %5183 = load ptr, ptr %154, align 8, !tbaa !9
  %5184 = icmp eq ptr %5183, null
  br i1 %5184, label %5185, label %5238

5185:                                             ; preds = %5180
  br label %5186

5186:                                             ; preds = %5185
  br label %5187

5187:                                             ; preds = %5186
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #10
  %5188 = call ptr @__errno_location() #11
  %5189 = load i32, ptr %5188, align 4, !tbaa !5
  store i32 %5189, ptr %155, align 4, !tbaa !5
  %5190 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5191 = call i32 @s2n_print_stacktrace(ptr noundef %5190)
  %5192 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5193 = trunc i8 %5192 to i1
  br i1 %5193, label %5194, label %5216

5194:                                             ; preds = %5187
  %5195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5196 = call i32 @fileno(ptr noundef %5195) #10
  %5197 = call i32 @isatty(i32 noundef %5196) #10
  %5198 = icmp ne i32 %5197, 0
  br i1 %5198, label %5199, label %5216

5199:                                             ; preds = %5194
  %5200 = load i32, ptr %155, align 4, !tbaa !5
  %5201 = call ptr @__errno_location() #11
  store i32 %5200, ptr %5201, align 4, !tbaa !5
  %5202 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5203 = load i32, ptr @test_count, align 4, !tbaa !5
  %5204 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5205 = load i32, ptr %5204, align 4, !tbaa !5
  %5206 = call ptr @s2n_strerror(i32 noundef %5205, ptr noundef @.str.3)
  %5207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5208 = load i32, ptr %5207, align 4, !tbaa !5
  %5209 = call ptr @s2n_strerror_debug(i32 noundef %5208, ptr noundef @.str.3)
  %5210 = call ptr @__errno_location() #11
  %5211 = load i32, ptr %5210, align 4, !tbaa !5
  %5212 = call ptr @strerror(i32 noundef %5211) #10
  %5213 = call ptr @__errno_location() #11
  %5214 = load i32, ptr %5213, align 4, !tbaa !5
  %5215 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5202, ptr noundef @.str, i32 noundef %5203, ptr noundef @.str.64, ptr noundef @.str.2, i32 noundef 338, ptr noundef %5206, ptr noundef %5209, ptr noundef %5212, i32 noundef %5214) #10
  br label %5233

5216:                                             ; preds = %5194, %5187
  %5217 = load i32, ptr %155, align 4, !tbaa !5
  %5218 = call ptr @__errno_location() #11
  store i32 %5217, ptr %5218, align 4, !tbaa !5
  %5219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5220 = load i32, ptr @test_count, align 4, !tbaa !5
  %5221 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5222 = load i32, ptr %5221, align 4, !tbaa !5
  %5223 = call ptr @s2n_strerror(i32 noundef %5222, ptr noundef @.str.3)
  %5224 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5225 = load i32, ptr %5224, align 4, !tbaa !5
  %5226 = call ptr @s2n_strerror_debug(i32 noundef %5225, ptr noundef @.str.3)
  %5227 = call ptr @__errno_location() #11
  %5228 = load i32, ptr %5227, align 4, !tbaa !5
  %5229 = call ptr @strerror(i32 noundef %5228) #10
  %5230 = call ptr @__errno_location() #11
  %5231 = load i32, ptr %5230, align 4, !tbaa !5
  %5232 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5219, ptr noundef @.str.4, i32 noundef %5220, ptr noundef @.str.64, ptr noundef @.str.2, i32 noundef 338, ptr noundef %5223, ptr noundef %5226, ptr noundef %5229, i32 noundef %5231) #10
  br label %5233

5233:                                             ; preds = %5216, %5199
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #10
  br label %5234

5234:                                             ; preds = %5233
  br label %5235

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

5236:                                             ; No predecessors!
  br label %5237

5237:                                             ; preds = %5236
  br label %5238

5238:                                             ; preds = %5237, %5180
  br label %5239

5239:                                             ; preds = %5238
  br label %5240

5240:                                             ; preds = %5239
  br label %5241

5241:                                             ; preds = %5240
  %5242 = load i32, ptr @test_count, align 4, !tbaa !5
  %5243 = add nsw i32 %5242, 1
  store i32 %5243, ptr @test_count, align 4, !tbaa !5
  %5244 = load ptr, ptr %154, align 8, !tbaa !9
  %5245 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef %5244)
  %5246 = icmp eq i32 %5245, -1
  br i1 %5246, label %5247, label %5300

5247:                                             ; preds = %5241
  br label %5248

5248:                                             ; preds = %5247
  br label %5249

5249:                                             ; preds = %5248
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #10
  %5250 = call ptr @__errno_location() #11
  %5251 = load i32, ptr %5250, align 4, !tbaa !5
  store i32 %5251, ptr %156, align 4, !tbaa !5
  %5252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5253 = call i32 @s2n_print_stacktrace(ptr noundef %5252)
  %5254 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5255 = trunc i8 %5254 to i1
  br i1 %5255, label %5256, label %5278

5256:                                             ; preds = %5249
  %5257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5258 = call i32 @fileno(ptr noundef %5257) #10
  %5259 = call i32 @isatty(i32 noundef %5258) #10
  %5260 = icmp ne i32 %5259, 0
  br i1 %5260, label %5261, label %5278

5261:                                             ; preds = %5256
  %5262 = load i32, ptr %156, align 4, !tbaa !5
  %5263 = call ptr @__errno_location() #11
  store i32 %5262, ptr %5263, align 4, !tbaa !5
  %5264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5265 = load i32, ptr @test_count, align 4, !tbaa !5
  %5266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5267 = load i32, ptr %5266, align 4, !tbaa !5
  %5268 = call ptr @s2n_strerror(i32 noundef %5267, ptr noundef @.str.3)
  %5269 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5270 = load i32, ptr %5269, align 4, !tbaa !5
  %5271 = call ptr @s2n_strerror_debug(i32 noundef %5270, ptr noundef @.str.3)
  %5272 = call ptr @__errno_location() #11
  %5273 = load i32, ptr %5272, align 4, !tbaa !5
  %5274 = call ptr @strerror(i32 noundef %5273) #10
  %5275 = call ptr @__errno_location() #11
  %5276 = load i32, ptr %5275, align 4, !tbaa !5
  %5277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5264, ptr noundef @.str, i32 noundef %5265, ptr noundef @.str.65, ptr noundef @.str.2, i32 noundef 339, ptr noundef %5268, ptr noundef %5271, ptr noundef %5274, i32 noundef %5276) #10
  br label %5295

5278:                                             ; preds = %5256, %5249
  %5279 = load i32, ptr %156, align 4, !tbaa !5
  %5280 = call ptr @__errno_location() #11
  store i32 %5279, ptr %5280, align 4, !tbaa !5
  %5281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5282 = load i32, ptr @test_count, align 4, !tbaa !5
  %5283 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5284 = load i32, ptr %5283, align 4, !tbaa !5
  %5285 = call ptr @s2n_strerror(i32 noundef %5284, ptr noundef @.str.3)
  %5286 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5287 = load i32, ptr %5286, align 4, !tbaa !5
  %5288 = call ptr @s2n_strerror_debug(i32 noundef %5287, ptr noundef @.str.3)
  %5289 = call ptr @__errno_location() #11
  %5290 = load i32, ptr %5289, align 4, !tbaa !5
  %5291 = call ptr @strerror(i32 noundef %5290) #10
  %5292 = call ptr @__errno_location() #11
  %5293 = load i32, ptr %5292, align 4, !tbaa !5
  %5294 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5281, ptr noundef @.str.4, i32 noundef %5282, ptr noundef @.str.65, ptr noundef @.str.2, i32 noundef 339, ptr noundef %5285, ptr noundef %5288, ptr noundef %5291, i32 noundef %5293) #10
  br label %5295

5295:                                             ; preds = %5278, %5261
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #10
  br label %5296

5296:                                             ; preds = %5295
  br label %5297

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

5298:                                             ; No predecessors!
  br label %5299

5299:                                             ; preds = %5298
  br label %5300

5300:                                             ; preds = %5299, %5241
  br label %5301

5301:                                             ; preds = %5300
  br label %5302

5302:                                             ; preds = %5301
  br label %5303

5303:                                             ; preds = %5302
  %5304 = load i32, ptr @test_count, align 4, !tbaa !5
  %5305 = add nsw i32 %5304, 1
  store i32 %5305, ptr @test_count, align 4, !tbaa !5
  %5306 = load ptr, ptr %154, align 8, !tbaa !9
  %5307 = load ptr, ptr %153, align 8, !tbaa !9
  %5308 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %5306, ptr noundef %5307)
  %5309 = icmp eq i32 %5308, -1
  br i1 %5309, label %5310, label %5363

5310:                                             ; preds = %5303
  br label %5311

5311:                                             ; preds = %5310
  br label %5312

5312:                                             ; preds = %5311
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #10
  %5313 = call ptr @__errno_location() #11
  %5314 = load i32, ptr %5313, align 4, !tbaa !5
  store i32 %5314, ptr %157, align 4, !tbaa !5
  %5315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5316 = call i32 @s2n_print_stacktrace(ptr noundef %5315)
  %5317 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5318 = trunc i8 %5317 to i1
  br i1 %5318, label %5319, label %5341

5319:                                             ; preds = %5312
  %5320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5321 = call i32 @fileno(ptr noundef %5320) #10
  %5322 = call i32 @isatty(i32 noundef %5321) #10
  %5323 = icmp ne i32 %5322, 0
  br i1 %5323, label %5324, label %5341

5324:                                             ; preds = %5319
  %5325 = load i32, ptr %157, align 4, !tbaa !5
  %5326 = call ptr @__errno_location() #11
  store i32 %5325, ptr %5326, align 4, !tbaa !5
  %5327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5328 = load i32, ptr @test_count, align 4, !tbaa !5
  %5329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5330 = load i32, ptr %5329, align 4, !tbaa !5
  %5331 = call ptr @s2n_strerror(i32 noundef %5330, ptr noundef @.str.3)
  %5332 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5333 = load i32, ptr %5332, align 4, !tbaa !5
  %5334 = call ptr @s2n_strerror_debug(i32 noundef %5333, ptr noundef @.str.3)
  %5335 = call ptr @__errno_location() #11
  %5336 = load i32, ptr %5335, align 4, !tbaa !5
  %5337 = call ptr @strerror(i32 noundef %5336) #10
  %5338 = call ptr @__errno_location() #11
  %5339 = load i32, ptr %5338, align 4, !tbaa !5
  %5340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5327, ptr noundef @.str, i32 noundef %5328, ptr noundef @.str.66, ptr noundef @.str.2, i32 noundef 340, ptr noundef %5331, ptr noundef %5334, ptr noundef %5337, i32 noundef %5339) #10
  br label %5358

5341:                                             ; preds = %5319, %5312
  %5342 = load i32, ptr %157, align 4, !tbaa !5
  %5343 = call ptr @__errno_location() #11
  store i32 %5342, ptr %5343, align 4, !tbaa !5
  %5344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5345 = load i32, ptr @test_count, align 4, !tbaa !5
  %5346 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5347 = load i32, ptr %5346, align 4, !tbaa !5
  %5348 = call ptr @s2n_strerror(i32 noundef %5347, ptr noundef @.str.3)
  %5349 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5350 = load i32, ptr %5349, align 4, !tbaa !5
  %5351 = call ptr @s2n_strerror_debug(i32 noundef %5350, ptr noundef @.str.3)
  %5352 = call ptr @__errno_location() #11
  %5353 = load i32, ptr %5352, align 4, !tbaa !5
  %5354 = call ptr @strerror(i32 noundef %5353) #10
  %5355 = call ptr @__errno_location() #11
  %5356 = load i32, ptr %5355, align 4, !tbaa !5
  %5357 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5344, ptr noundef @.str.4, i32 noundef %5345, ptr noundef @.str.66, ptr noundef @.str.2, i32 noundef 340, ptr noundef %5348, ptr noundef %5351, ptr noundef %5354, i32 noundef %5356) #10
  br label %5358

5358:                                             ; preds = %5341, %5324
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #10
  br label %5359

5359:                                             ; preds = %5358
  br label %5360

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

5361:                                             ; No predecessors!
  br label %5362

5362:                                             ; preds = %5361
  br label %5363

5363:                                             ; preds = %5362, %5303
  br label %5364

5364:                                             ; preds = %5363
  br label %5365

5365:                                             ; preds = %5364
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #10
  %5366 = call ptr @s2n_config_new()
  store ptr %5366, ptr %158, align 8, !tbaa !9
  br label %5367

5367:                                             ; preds = %5365
  %5368 = load i32, ptr @test_count, align 4, !tbaa !5
  %5369 = add nsw i32 %5368, 1
  store i32 %5369, ptr @test_count, align 4, !tbaa !5
  %5370 = load ptr, ptr %158, align 8, !tbaa !9
  %5371 = icmp eq ptr %5370, null
  br i1 %5371, label %5372, label %5425

5372:                                             ; preds = %5367
  br label %5373

5373:                                             ; preds = %5372
  br label %5374

5374:                                             ; preds = %5373
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #10
  %5375 = call ptr @__errno_location() #11
  %5376 = load i32, ptr %5375, align 4, !tbaa !5
  store i32 %5376, ptr %159, align 4, !tbaa !5
  %5377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5378 = call i32 @s2n_print_stacktrace(ptr noundef %5377)
  %5379 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5380 = trunc i8 %5379 to i1
  br i1 %5380, label %5381, label %5403

5381:                                             ; preds = %5374
  %5382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5383 = call i32 @fileno(ptr noundef %5382) #10
  %5384 = call i32 @isatty(i32 noundef %5383) #10
  %5385 = icmp ne i32 %5384, 0
  br i1 %5385, label %5386, label %5403

5386:                                             ; preds = %5381
  %5387 = load i32, ptr %159, align 4, !tbaa !5
  %5388 = call ptr @__errno_location() #11
  store i32 %5387, ptr %5388, align 4, !tbaa !5
  %5389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5390 = load i32, ptr @test_count, align 4, !tbaa !5
  %5391 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5392 = load i32, ptr %5391, align 4, !tbaa !5
  %5393 = call ptr @s2n_strerror(i32 noundef %5392, ptr noundef @.str.3)
  %5394 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5395 = load i32, ptr %5394, align 4, !tbaa !5
  %5396 = call ptr @s2n_strerror_debug(i32 noundef %5395, ptr noundef @.str.3)
  %5397 = call ptr @__errno_location() #11
  %5398 = load i32, ptr %5397, align 4, !tbaa !5
  %5399 = call ptr @strerror(i32 noundef %5398) #10
  %5400 = call ptr @__errno_location() #11
  %5401 = load i32, ptr %5400, align 4, !tbaa !5
  %5402 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5389, ptr noundef @.str, i32 noundef %5390, ptr noundef @.str.67, ptr noundef @.str.2, i32 noundef 343, ptr noundef %5393, ptr noundef %5396, ptr noundef %5399, i32 noundef %5401) #10
  br label %5420

5403:                                             ; preds = %5381, %5374
  %5404 = load i32, ptr %159, align 4, !tbaa !5
  %5405 = call ptr @__errno_location() #11
  store i32 %5404, ptr %5405, align 4, !tbaa !5
  %5406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5407 = load i32, ptr @test_count, align 4, !tbaa !5
  %5408 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5409 = load i32, ptr %5408, align 4, !tbaa !5
  %5410 = call ptr @s2n_strerror(i32 noundef %5409, ptr noundef @.str.3)
  %5411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5412 = load i32, ptr %5411, align 4, !tbaa !5
  %5413 = call ptr @s2n_strerror_debug(i32 noundef %5412, ptr noundef @.str.3)
  %5414 = call ptr @__errno_location() #11
  %5415 = load i32, ptr %5414, align 4, !tbaa !5
  %5416 = call ptr @strerror(i32 noundef %5415) #10
  %5417 = call ptr @__errno_location() #11
  %5418 = load i32, ptr %5417, align 4, !tbaa !5
  %5419 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5406, ptr noundef @.str.4, i32 noundef %5407, ptr noundef @.str.67, ptr noundef @.str.2, i32 noundef 343, ptr noundef %5410, ptr noundef %5413, ptr noundef %5416, i32 noundef %5418) #10
  br label %5420

5420:                                             ; preds = %5403, %5386
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #10
  br label %5421

5421:                                             ; preds = %5420
  br label %5422

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

5423:                                             ; No predecessors!
  br label %5424

5424:                                             ; preds = %5423
  br label %5425

5425:                                             ; preds = %5424, %5367
  br label %5426

5426:                                             ; preds = %5425
  br label %5427

5427:                                             ; preds = %5426
  br label %5428

5428:                                             ; preds = %5427
  %5429 = load i32, ptr @test_count, align 4, !tbaa !5
  %5430 = add nsw i32 %5429, 1
  store i32 %5430, ptr @test_count, align 4, !tbaa !5
  %5431 = load ptr, ptr %158, align 8, !tbaa !9
  %5432 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef %5431)
  %5433 = icmp eq i32 %5432, -1
  br i1 %5433, label %5434, label %5487

5434:                                             ; preds = %5428
  br label %5435

5435:                                             ; preds = %5434
  br label %5436

5436:                                             ; preds = %5435
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #10
  %5437 = call ptr @__errno_location() #11
  %5438 = load i32, ptr %5437, align 4, !tbaa !5
  store i32 %5438, ptr %160, align 4, !tbaa !5
  %5439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5440 = call i32 @s2n_print_stacktrace(ptr noundef %5439)
  %5441 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5442 = trunc i8 %5441 to i1
  br i1 %5442, label %5443, label %5465

5443:                                             ; preds = %5436
  %5444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5445 = call i32 @fileno(ptr noundef %5444) #10
  %5446 = call i32 @isatty(i32 noundef %5445) #10
  %5447 = icmp ne i32 %5446, 0
  br i1 %5447, label %5448, label %5465

5448:                                             ; preds = %5443
  %5449 = load i32, ptr %160, align 4, !tbaa !5
  %5450 = call ptr @__errno_location() #11
  store i32 %5449, ptr %5450, align 4, !tbaa !5
  %5451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5452 = load i32, ptr @test_count, align 4, !tbaa !5
  %5453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5454 = load i32, ptr %5453, align 4, !tbaa !5
  %5455 = call ptr @s2n_strerror(i32 noundef %5454, ptr noundef @.str.3)
  %5456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5457 = load i32, ptr %5456, align 4, !tbaa !5
  %5458 = call ptr @s2n_strerror_debug(i32 noundef %5457, ptr noundef @.str.3)
  %5459 = call ptr @__errno_location() #11
  %5460 = load i32, ptr %5459, align 4, !tbaa !5
  %5461 = call ptr @strerror(i32 noundef %5460) #10
  %5462 = call ptr @__errno_location() #11
  %5463 = load i32, ptr %5462, align 4, !tbaa !5
  %5464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5451, ptr noundef @.str, i32 noundef %5452, ptr noundef @.str.68, ptr noundef @.str.2, i32 noundef 344, ptr noundef %5455, ptr noundef %5458, ptr noundef %5461, i32 noundef %5463) #10
  br label %5482

5465:                                             ; preds = %5443, %5436
  %5466 = load i32, ptr %160, align 4, !tbaa !5
  %5467 = call ptr @__errno_location() #11
  store i32 %5466, ptr %5467, align 4, !tbaa !5
  %5468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5469 = load i32, ptr @test_count, align 4, !tbaa !5
  %5470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5471 = load i32, ptr %5470, align 4, !tbaa !5
  %5472 = call ptr @s2n_strerror(i32 noundef %5471, ptr noundef @.str.3)
  %5473 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5474 = load i32, ptr %5473, align 4, !tbaa !5
  %5475 = call ptr @s2n_strerror_debug(i32 noundef %5474, ptr noundef @.str.3)
  %5476 = call ptr @__errno_location() #11
  %5477 = load i32, ptr %5476, align 4, !tbaa !5
  %5478 = call ptr @strerror(i32 noundef %5477) #10
  %5479 = call ptr @__errno_location() #11
  %5480 = load i32, ptr %5479, align 4, !tbaa !5
  %5481 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5468, ptr noundef @.str.4, i32 noundef %5469, ptr noundef @.str.68, ptr noundef @.str.2, i32 noundef 344, ptr noundef %5472, ptr noundef %5475, ptr noundef %5478, i32 noundef %5480) #10
  br label %5482

5482:                                             ; preds = %5465, %5448
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #10
  br label %5483

5483:                                             ; preds = %5482
  br label %5484

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

5485:                                             ; No predecessors!
  br label %5486

5486:                                             ; preds = %5485
  br label %5487

5487:                                             ; preds = %5486, %5428
  br label %5488

5488:                                             ; preds = %5487
  br label %5489

5489:                                             ; preds = %5488
  br label %5490

5490:                                             ; preds = %5489
  %5491 = load i32, ptr @test_count, align 4, !tbaa !5
  %5492 = add nsw i32 %5491, 1
  store i32 %5492, ptr @test_count, align 4, !tbaa !5
  %5493 = load ptr, ptr %158, align 8, !tbaa !9
  %5494 = load ptr, ptr %153, align 8, !tbaa !9
  %5495 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %5493, ptr noundef %5494)
  %5496 = icmp eq i32 %5495, -1
  br i1 %5496, label %5497, label %5550

5497:                                             ; preds = %5490
  br label %5498

5498:                                             ; preds = %5497
  br label %5499

5499:                                             ; preds = %5498
  call void @llvm.lifetime.start.p0(i64 4, ptr %161) #10
  %5500 = call ptr @__errno_location() #11
  %5501 = load i32, ptr %5500, align 4, !tbaa !5
  store i32 %5501, ptr %161, align 4, !tbaa !5
  %5502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5503 = call i32 @s2n_print_stacktrace(ptr noundef %5502)
  %5504 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5505 = trunc i8 %5504 to i1
  br i1 %5505, label %5506, label %5528

5506:                                             ; preds = %5499
  %5507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5508 = call i32 @fileno(ptr noundef %5507) #10
  %5509 = call i32 @isatty(i32 noundef %5508) #10
  %5510 = icmp ne i32 %5509, 0
  br i1 %5510, label %5511, label %5528

5511:                                             ; preds = %5506
  %5512 = load i32, ptr %161, align 4, !tbaa !5
  %5513 = call ptr @__errno_location() #11
  store i32 %5512, ptr %5513, align 4, !tbaa !5
  %5514 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5515 = load i32, ptr @test_count, align 4, !tbaa !5
  %5516 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5517 = load i32, ptr %5516, align 4, !tbaa !5
  %5518 = call ptr @s2n_strerror(i32 noundef %5517, ptr noundef @.str.3)
  %5519 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5520 = load i32, ptr %5519, align 4, !tbaa !5
  %5521 = call ptr @s2n_strerror_debug(i32 noundef %5520, ptr noundef @.str.3)
  %5522 = call ptr @__errno_location() #11
  %5523 = load i32, ptr %5522, align 4, !tbaa !5
  %5524 = call ptr @strerror(i32 noundef %5523) #10
  %5525 = call ptr @__errno_location() #11
  %5526 = load i32, ptr %5525, align 4, !tbaa !5
  %5527 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5514, ptr noundef @.str, i32 noundef %5515, ptr noundef @.str.69, ptr noundef @.str.2, i32 noundef 345, ptr noundef %5518, ptr noundef %5521, ptr noundef %5524, i32 noundef %5526) #10
  br label %5545

5528:                                             ; preds = %5506, %5499
  %5529 = load i32, ptr %161, align 4, !tbaa !5
  %5530 = call ptr @__errno_location() #11
  store i32 %5529, ptr %5530, align 4, !tbaa !5
  %5531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5532 = load i32, ptr @test_count, align 4, !tbaa !5
  %5533 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5534 = load i32, ptr %5533, align 4, !tbaa !5
  %5535 = call ptr @s2n_strerror(i32 noundef %5534, ptr noundef @.str.3)
  %5536 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5537 = load i32, ptr %5536, align 4, !tbaa !5
  %5538 = call ptr @s2n_strerror_debug(i32 noundef %5537, ptr noundef @.str.3)
  %5539 = call ptr @__errno_location() #11
  %5540 = load i32, ptr %5539, align 4, !tbaa !5
  %5541 = call ptr @strerror(i32 noundef %5540) #10
  %5542 = call ptr @__errno_location() #11
  %5543 = load i32, ptr %5542, align 4, !tbaa !5
  %5544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5531, ptr noundef @.str.4, i32 noundef %5532, ptr noundef @.str.69, ptr noundef @.str.2, i32 noundef 345, ptr noundef %5535, ptr noundef %5538, ptr noundef %5541, i32 noundef %5543) #10
  br label %5545

5545:                                             ; preds = %5528, %5511
  call void @llvm.lifetime.end.p0(i64 4, ptr %161) #10
  br label %5546

5546:                                             ; preds = %5545
  br label %5547

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

5548:                                             ; No predecessors!
  br label %5549

5549:                                             ; preds = %5548
  br label %5550

5550:                                             ; preds = %5549, %5490
  br label %5551

5551:                                             ; preds = %5550
  br label %5552

5552:                                             ; preds = %5551
  br label %5553

5553:                                             ; preds = %5552
  %5554 = load i32, ptr @test_count, align 4, !tbaa !5
  %5555 = add nsw i32 %5554, 1
  store i32 %5555, ptr @test_count, align 4, !tbaa !5
  %5556 = load ptr, ptr %158, align 8, !tbaa !9
  %5557 = load ptr, ptr %9, align 8, !tbaa !9
  %5558 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %5556, ptr noundef %5557)
  %5559 = icmp eq i32 %5558, -1
  br i1 %5559, label %5560, label %5613

5560:                                             ; preds = %5553
  br label %5561

5561:                                             ; preds = %5560
  br label %5562

5562:                                             ; preds = %5561
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #10
  %5563 = call ptr @__errno_location() #11
  %5564 = load i32, ptr %5563, align 4, !tbaa !5
  store i32 %5564, ptr %162, align 4, !tbaa !5
  %5565 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5566 = call i32 @s2n_print_stacktrace(ptr noundef %5565)
  %5567 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5568 = trunc i8 %5567 to i1
  br i1 %5568, label %5569, label %5591

5569:                                             ; preds = %5562
  %5570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5571 = call i32 @fileno(ptr noundef %5570) #10
  %5572 = call i32 @isatty(i32 noundef %5571) #10
  %5573 = icmp ne i32 %5572, 0
  br i1 %5573, label %5574, label %5591

5574:                                             ; preds = %5569
  %5575 = load i32, ptr %162, align 4, !tbaa !5
  %5576 = call ptr @__errno_location() #11
  store i32 %5575, ptr %5576, align 4, !tbaa !5
  %5577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5578 = load i32, ptr @test_count, align 4, !tbaa !5
  %5579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5580 = load i32, ptr %5579, align 4, !tbaa !5
  %5581 = call ptr @s2n_strerror(i32 noundef %5580, ptr noundef @.str.3)
  %5582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5583 = load i32, ptr %5582, align 4, !tbaa !5
  %5584 = call ptr @s2n_strerror_debug(i32 noundef %5583, ptr noundef @.str.3)
  %5585 = call ptr @__errno_location() #11
  %5586 = load i32, ptr %5585, align 4, !tbaa !5
  %5587 = call ptr @strerror(i32 noundef %5586) #10
  %5588 = call ptr @__errno_location() #11
  %5589 = load i32, ptr %5588, align 4, !tbaa !5
  %5590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5577, ptr noundef @.str, i32 noundef %5578, ptr noundef @.str.70, ptr noundef @.str.2, i32 noundef 346, ptr noundef %5581, ptr noundef %5584, ptr noundef %5587, i32 noundef %5589) #10
  br label %5608

5591:                                             ; preds = %5569, %5562
  %5592 = load i32, ptr %162, align 4, !tbaa !5
  %5593 = call ptr @__errno_location() #11
  store i32 %5592, ptr %5593, align 4, !tbaa !5
  %5594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5595 = load i32, ptr @test_count, align 4, !tbaa !5
  %5596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5597 = load i32, ptr %5596, align 4, !tbaa !5
  %5598 = call ptr @s2n_strerror(i32 noundef %5597, ptr noundef @.str.3)
  %5599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5600 = load i32, ptr %5599, align 4, !tbaa !5
  %5601 = call ptr @s2n_strerror_debug(i32 noundef %5600, ptr noundef @.str.3)
  %5602 = call ptr @__errno_location() #11
  %5603 = load i32, ptr %5602, align 4, !tbaa !5
  %5604 = call ptr @strerror(i32 noundef %5603) #10
  %5605 = call ptr @__errno_location() #11
  %5606 = load i32, ptr %5605, align 4, !tbaa !5
  %5607 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5594, ptr noundef @.str.4, i32 noundef %5595, ptr noundef @.str.70, ptr noundef @.str.2, i32 noundef 346, ptr noundef %5598, ptr noundef %5601, ptr noundef %5604, i32 noundef %5606) #10
  br label %5608

5608:                                             ; preds = %5591, %5574
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #10
  br label %5609

5609:                                             ; preds = %5608
  br label %5610

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

5611:                                             ; No predecessors!
  br label %5612

5612:                                             ; preds = %5611
  br label %5613

5613:                                             ; preds = %5612, %5553
  br label %5614

5614:                                             ; preds = %5613
  br label %5615

5615:                                             ; preds = %5614
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #10
  call void @llvm.memset.p0.i64(ptr align 8 %163, i8 0, i64 16, i1 false)
  br label %5616

5616:                                             ; preds = %5615
  %5617 = load i32, ptr @test_count, align 4, !tbaa !5
  %5618 = add nsw i32 %5617, 1
  store i32 %5618, ptr @test_count, align 4, !tbaa !5
  %5619 = load ptr, ptr %158, align 8, !tbaa !9
  %5620 = call i32 @s2n_config_set_client_hello_cb(ptr noundef %5619, ptr noundef @s2n_check_received_supported_groups_cb, ptr noundef %163)
  %5621 = icmp eq i32 %5620, -1
  br i1 %5621, label %5622, label %5675

5622:                                             ; preds = %5616
  br label %5623

5623:                                             ; preds = %5622
  br label %5624

5624:                                             ; preds = %5623
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #10
  %5625 = call ptr @__errno_location() #11
  %5626 = load i32, ptr %5625, align 4, !tbaa !5
  store i32 %5626, ptr %164, align 4, !tbaa !5
  %5627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5628 = call i32 @s2n_print_stacktrace(ptr noundef %5627)
  %5629 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5630 = trunc i8 %5629 to i1
  br i1 %5630, label %5631, label %5653

5631:                                             ; preds = %5624
  %5632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5633 = call i32 @fileno(ptr noundef %5632) #10
  %5634 = call i32 @isatty(i32 noundef %5633) #10
  %5635 = icmp ne i32 %5634, 0
  br i1 %5635, label %5636, label %5653

5636:                                             ; preds = %5631
  %5637 = load i32, ptr %164, align 4, !tbaa !5
  %5638 = call ptr @__errno_location() #11
  store i32 %5637, ptr %5638, align 4, !tbaa !5
  %5639 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5640 = load i32, ptr @test_count, align 4, !tbaa !5
  %5641 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5642 = load i32, ptr %5641, align 4, !tbaa !5
  %5643 = call ptr @s2n_strerror(i32 noundef %5642, ptr noundef @.str.3)
  %5644 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5645 = load i32, ptr %5644, align 4, !tbaa !5
  %5646 = call ptr @s2n_strerror_debug(i32 noundef %5645, ptr noundef @.str.3)
  %5647 = call ptr @__errno_location() #11
  %5648 = load i32, ptr %5647, align 4, !tbaa !5
  %5649 = call ptr @strerror(i32 noundef %5648) #10
  %5650 = call ptr @__errno_location() #11
  %5651 = load i32, ptr %5650, align 4, !tbaa !5
  %5652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5639, ptr noundef @.str, i32 noundef %5640, ptr noundef @.str.71, ptr noundef @.str.2, i32 noundef 352, ptr noundef %5643, ptr noundef %5646, ptr noundef %5649, i32 noundef %5651) #10
  br label %5670

5653:                                             ; preds = %5631, %5624
  %5654 = load i32, ptr %164, align 4, !tbaa !5
  %5655 = call ptr @__errno_location() #11
  store i32 %5654, ptr %5655, align 4, !tbaa !5
  %5656 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5657 = load i32, ptr @test_count, align 4, !tbaa !5
  %5658 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5659 = load i32, ptr %5658, align 4, !tbaa !5
  %5660 = call ptr @s2n_strerror(i32 noundef %5659, ptr noundef @.str.3)
  %5661 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5662 = load i32, ptr %5661, align 4, !tbaa !5
  %5663 = call ptr @s2n_strerror_debug(i32 noundef %5662, ptr noundef @.str.3)
  %5664 = call ptr @__errno_location() #11
  %5665 = load i32, ptr %5664, align 4, !tbaa !5
  %5666 = call ptr @strerror(i32 noundef %5665) #10
  %5667 = call ptr @__errno_location() #11
  %5668 = load i32, ptr %5667, align 4, !tbaa !5
  %5669 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5656, ptr noundef @.str.4, i32 noundef %5657, ptr noundef @.str.71, ptr noundef @.str.2, i32 noundef 352, ptr noundef %5660, ptr noundef %5663, ptr noundef %5666, i32 noundef %5668) #10
  br label %5670

5670:                                             ; preds = %5653, %5636
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #10
  br label %5671

5671:                                             ; preds = %5670
  br label %5672

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

5673:                                             ; No predecessors!
  br label %5674

5674:                                             ; preds = %5673
  br label %5675

5675:                                             ; preds = %5674, %5616
  br label %5676

5676:                                             ; preds = %5675
  br label %5677

5677:                                             ; preds = %5676
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #10
  %5678 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %5678, ptr %165, align 8, !tbaa !9
  br label %5679

5679:                                             ; preds = %5677
  %5680 = load i32, ptr @test_count, align 4, !tbaa !5
  %5681 = add nsw i32 %5680, 1
  store i32 %5681, ptr @test_count, align 4, !tbaa !5
  %5682 = load ptr, ptr %165, align 8, !tbaa !9
  %5683 = icmp eq ptr %5682, null
  br i1 %5683, label %5684, label %5737

5684:                                             ; preds = %5679
  br label %5685

5685:                                             ; preds = %5684
  br label %5686

5686:                                             ; preds = %5685
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #10
  %5687 = call ptr @__errno_location() #11
  %5688 = load i32, ptr %5687, align 4, !tbaa !5
  store i32 %5688, ptr %166, align 4, !tbaa !5
  %5689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5690 = call i32 @s2n_print_stacktrace(ptr noundef %5689)
  %5691 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5692 = trunc i8 %5691 to i1
  br i1 %5692, label %5693, label %5715

5693:                                             ; preds = %5686
  %5694 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5695 = call i32 @fileno(ptr noundef %5694) #10
  %5696 = call i32 @isatty(i32 noundef %5695) #10
  %5697 = icmp ne i32 %5696, 0
  br i1 %5697, label %5698, label %5715

5698:                                             ; preds = %5693
  %5699 = load i32, ptr %166, align 4, !tbaa !5
  %5700 = call ptr @__errno_location() #11
  store i32 %5699, ptr %5700, align 4, !tbaa !5
  %5701 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5702 = load i32, ptr @test_count, align 4, !tbaa !5
  %5703 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5704 = load i32, ptr %5703, align 4, !tbaa !5
  %5705 = call ptr @s2n_strerror(i32 noundef %5704, ptr noundef @.str.3)
  %5706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5707 = load i32, ptr %5706, align 4, !tbaa !5
  %5708 = call ptr @s2n_strerror_debug(i32 noundef %5707, ptr noundef @.str.3)
  %5709 = call ptr @__errno_location() #11
  %5710 = load i32, ptr %5709, align 4, !tbaa !5
  %5711 = call ptr @strerror(i32 noundef %5710) #10
  %5712 = call ptr @__errno_location() #11
  %5713 = load i32, ptr %5712, align 4, !tbaa !5
  %5714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5701, ptr noundef @.str, i32 noundef %5702, ptr noundef @.str.72, ptr noundef @.str.2, i32 noundef 355, ptr noundef %5705, ptr noundef %5708, ptr noundef %5711, i32 noundef %5713) #10
  br label %5732

5715:                                             ; preds = %5693, %5686
  %5716 = load i32, ptr %166, align 4, !tbaa !5
  %5717 = call ptr @__errno_location() #11
  store i32 %5716, ptr %5717, align 4, !tbaa !5
  %5718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5719 = load i32, ptr @test_count, align 4, !tbaa !5
  %5720 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5721 = load i32, ptr %5720, align 4, !tbaa !5
  %5722 = call ptr @s2n_strerror(i32 noundef %5721, ptr noundef @.str.3)
  %5723 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5724 = load i32, ptr %5723, align 4, !tbaa !5
  %5725 = call ptr @s2n_strerror_debug(i32 noundef %5724, ptr noundef @.str.3)
  %5726 = call ptr @__errno_location() #11
  %5727 = load i32, ptr %5726, align 4, !tbaa !5
  %5728 = call ptr @strerror(i32 noundef %5727) #10
  %5729 = call ptr @__errno_location() #11
  %5730 = load i32, ptr %5729, align 4, !tbaa !5
  %5731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5718, ptr noundef @.str.4, i32 noundef %5719, ptr noundef @.str.72, ptr noundef @.str.2, i32 noundef 355, ptr noundef %5722, ptr noundef %5725, ptr noundef %5728, i32 noundef %5730) #10
  br label %5732

5732:                                             ; preds = %5715, %5698
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #10
  br label %5733

5733:                                             ; preds = %5732
  br label %5734

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

5735:                                             ; No predecessors!
  br label %5736

5736:                                             ; preds = %5735
  br label %5737

5737:                                             ; preds = %5736, %5679
  br label %5738

5738:                                             ; preds = %5737
  br label %5739

5739:                                             ; preds = %5738
  br label %5740

5740:                                             ; preds = %5739
  %5741 = load i32, ptr @test_count, align 4, !tbaa !5
  %5742 = add nsw i32 %5741, 1
  store i32 %5742, ptr @test_count, align 4, !tbaa !5
  %5743 = load ptr, ptr %165, align 8, !tbaa !9
  %5744 = load ptr, ptr %154, align 8, !tbaa !9
  %5745 = call i32 @s2n_connection_set_config(ptr noundef %5743, ptr noundef %5744)
  %5746 = icmp eq i32 %5745, -1
  br i1 %5746, label %5747, label %5800

5747:                                             ; preds = %5740
  br label %5748

5748:                                             ; preds = %5747
  br label %5749

5749:                                             ; preds = %5748
  call void @llvm.lifetime.start.p0(i64 4, ptr %167) #10
  %5750 = call ptr @__errno_location() #11
  %5751 = load i32, ptr %5750, align 4, !tbaa !5
  store i32 %5751, ptr %167, align 4, !tbaa !5
  %5752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5753 = call i32 @s2n_print_stacktrace(ptr noundef %5752)
  %5754 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5755 = trunc i8 %5754 to i1
  br i1 %5755, label %5756, label %5778

5756:                                             ; preds = %5749
  %5757 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5758 = call i32 @fileno(ptr noundef %5757) #10
  %5759 = call i32 @isatty(i32 noundef %5758) #10
  %5760 = icmp ne i32 %5759, 0
  br i1 %5760, label %5761, label %5778

5761:                                             ; preds = %5756
  %5762 = load i32, ptr %167, align 4, !tbaa !5
  %5763 = call ptr @__errno_location() #11
  store i32 %5762, ptr %5763, align 4, !tbaa !5
  %5764 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5765 = load i32, ptr @test_count, align 4, !tbaa !5
  %5766 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5767 = load i32, ptr %5766, align 4, !tbaa !5
  %5768 = call ptr @s2n_strerror(i32 noundef %5767, ptr noundef @.str.3)
  %5769 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5770 = load i32, ptr %5769, align 4, !tbaa !5
  %5771 = call ptr @s2n_strerror_debug(i32 noundef %5770, ptr noundef @.str.3)
  %5772 = call ptr @__errno_location() #11
  %5773 = load i32, ptr %5772, align 4, !tbaa !5
  %5774 = call ptr @strerror(i32 noundef %5773) #10
  %5775 = call ptr @__errno_location() #11
  %5776 = load i32, ptr %5775, align 4, !tbaa !5
  %5777 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5764, ptr noundef @.str, i32 noundef %5765, ptr noundef @.str.73, ptr noundef @.str.2, i32 noundef 356, ptr noundef %5768, ptr noundef %5771, ptr noundef %5774, i32 noundef %5776) #10
  br label %5795

5778:                                             ; preds = %5756, %5749
  %5779 = load i32, ptr %167, align 4, !tbaa !5
  %5780 = call ptr @__errno_location() #11
  store i32 %5779, ptr %5780, align 4, !tbaa !5
  %5781 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5782 = load i32, ptr @test_count, align 4, !tbaa !5
  %5783 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5784 = load i32, ptr %5783, align 4, !tbaa !5
  %5785 = call ptr @s2n_strerror(i32 noundef %5784, ptr noundef @.str.3)
  %5786 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5787 = load i32, ptr %5786, align 4, !tbaa !5
  %5788 = call ptr @s2n_strerror_debug(i32 noundef %5787, ptr noundef @.str.3)
  %5789 = call ptr @__errno_location() #11
  %5790 = load i32, ptr %5789, align 4, !tbaa !5
  %5791 = call ptr @strerror(i32 noundef %5790) #10
  %5792 = call ptr @__errno_location() #11
  %5793 = load i32, ptr %5792, align 4, !tbaa !5
  %5794 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5781, ptr noundef @.str.4, i32 noundef %5782, ptr noundef @.str.73, ptr noundef @.str.2, i32 noundef 356, ptr noundef %5785, ptr noundef %5788, ptr noundef %5791, i32 noundef %5793) #10
  br label %5795

5795:                                             ; preds = %5778, %5761
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #10
  br label %5796

5796:                                             ; preds = %5795
  br label %5797

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

5798:                                             ; No predecessors!
  br label %5799

5799:                                             ; preds = %5798
  br label %5800

5800:                                             ; preds = %5799, %5740
  br label %5801

5801:                                             ; preds = %5800
  br label %5802

5802:                                             ; preds = %5801
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #10
  %5803 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %5803, ptr %168, align 8, !tbaa !9
  br label %5804

5804:                                             ; preds = %5802
  %5805 = load i32, ptr @test_count, align 4, !tbaa !5
  %5806 = add nsw i32 %5805, 1
  store i32 %5806, ptr @test_count, align 4, !tbaa !5
  %5807 = load ptr, ptr %168, align 8, !tbaa !9
  %5808 = icmp eq ptr %5807, null
  br i1 %5808, label %5809, label %5862

5809:                                             ; preds = %5804
  br label %5810

5810:                                             ; preds = %5809
  br label %5811

5811:                                             ; preds = %5810
  call void @llvm.lifetime.start.p0(i64 4, ptr %169) #10
  %5812 = call ptr @__errno_location() #11
  %5813 = load i32, ptr %5812, align 4, !tbaa !5
  store i32 %5813, ptr %169, align 4, !tbaa !5
  %5814 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5815 = call i32 @s2n_print_stacktrace(ptr noundef %5814)
  %5816 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5817 = trunc i8 %5816 to i1
  br i1 %5817, label %5818, label %5840

5818:                                             ; preds = %5811
  %5819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5820 = call i32 @fileno(ptr noundef %5819) #10
  %5821 = call i32 @isatty(i32 noundef %5820) #10
  %5822 = icmp ne i32 %5821, 0
  br i1 %5822, label %5823, label %5840

5823:                                             ; preds = %5818
  %5824 = load i32, ptr %169, align 4, !tbaa !5
  %5825 = call ptr @__errno_location() #11
  store i32 %5824, ptr %5825, align 4, !tbaa !5
  %5826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5827 = load i32, ptr @test_count, align 4, !tbaa !5
  %5828 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5829 = load i32, ptr %5828, align 4, !tbaa !5
  %5830 = call ptr @s2n_strerror(i32 noundef %5829, ptr noundef @.str.3)
  %5831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5832 = load i32, ptr %5831, align 4, !tbaa !5
  %5833 = call ptr @s2n_strerror_debug(i32 noundef %5832, ptr noundef @.str.3)
  %5834 = call ptr @__errno_location() #11
  %5835 = load i32, ptr %5834, align 4, !tbaa !5
  %5836 = call ptr @strerror(i32 noundef %5835) #10
  %5837 = call ptr @__errno_location() #11
  %5838 = load i32, ptr %5837, align 4, !tbaa !5
  %5839 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5826, ptr noundef @.str, i32 noundef %5827, ptr noundef @.str.74, ptr noundef @.str.2, i32 noundef 359, ptr noundef %5830, ptr noundef %5833, ptr noundef %5836, i32 noundef %5838) #10
  br label %5857

5840:                                             ; preds = %5818, %5811
  %5841 = load i32, ptr %169, align 4, !tbaa !5
  %5842 = call ptr @__errno_location() #11
  store i32 %5841, ptr %5842, align 4, !tbaa !5
  %5843 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5844 = load i32, ptr @test_count, align 4, !tbaa !5
  %5845 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5846 = load i32, ptr %5845, align 4, !tbaa !5
  %5847 = call ptr @s2n_strerror(i32 noundef %5846, ptr noundef @.str.3)
  %5848 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5849 = load i32, ptr %5848, align 4, !tbaa !5
  %5850 = call ptr @s2n_strerror_debug(i32 noundef %5849, ptr noundef @.str.3)
  %5851 = call ptr @__errno_location() #11
  %5852 = load i32, ptr %5851, align 4, !tbaa !5
  %5853 = call ptr @strerror(i32 noundef %5852) #10
  %5854 = call ptr @__errno_location() #11
  %5855 = load i32, ptr %5854, align 4, !tbaa !5
  %5856 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5843, ptr noundef @.str.4, i32 noundef %5844, ptr noundef @.str.74, ptr noundef @.str.2, i32 noundef 359, ptr noundef %5847, ptr noundef %5850, ptr noundef %5853, i32 noundef %5855) #10
  br label %5857

5857:                                             ; preds = %5840, %5823
  call void @llvm.lifetime.end.p0(i64 4, ptr %169) #10
  br label %5858

5858:                                             ; preds = %5857
  br label %5859

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

5860:                                             ; No predecessors!
  br label %5861

5861:                                             ; preds = %5860
  br label %5862

5862:                                             ; preds = %5861, %5804
  br label %5863

5863:                                             ; preds = %5862
  br label %5864

5864:                                             ; preds = %5863
  br label %5865

5865:                                             ; preds = %5864
  %5866 = load i32, ptr @test_count, align 4, !tbaa !5
  %5867 = add nsw i32 %5866, 1
  store i32 %5867, ptr @test_count, align 4, !tbaa !5
  %5868 = load ptr, ptr %168, align 8, !tbaa !9
  %5869 = load ptr, ptr %158, align 8, !tbaa !9
  %5870 = call i32 @s2n_connection_set_config(ptr noundef %5868, ptr noundef %5869)
  %5871 = icmp eq i32 %5870, -1
  br i1 %5871, label %5872, label %5925

5872:                                             ; preds = %5865
  br label %5873

5873:                                             ; preds = %5872
  br label %5874

5874:                                             ; preds = %5873
  call void @llvm.lifetime.start.p0(i64 4, ptr %170) #10
  %5875 = call ptr @__errno_location() #11
  %5876 = load i32, ptr %5875, align 4, !tbaa !5
  store i32 %5876, ptr %170, align 4, !tbaa !5
  %5877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5878 = call i32 @s2n_print_stacktrace(ptr noundef %5877)
  %5879 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5880 = trunc i8 %5879 to i1
  br i1 %5880, label %5881, label %5903

5881:                                             ; preds = %5874
  %5882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5883 = call i32 @fileno(ptr noundef %5882) #10
  %5884 = call i32 @isatty(i32 noundef %5883) #10
  %5885 = icmp ne i32 %5884, 0
  br i1 %5885, label %5886, label %5903

5886:                                             ; preds = %5881
  %5887 = load i32, ptr %170, align 4, !tbaa !5
  %5888 = call ptr @__errno_location() #11
  store i32 %5887, ptr %5888, align 4, !tbaa !5
  %5889 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5890 = load i32, ptr @test_count, align 4, !tbaa !5
  %5891 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5892 = load i32, ptr %5891, align 4, !tbaa !5
  %5893 = call ptr @s2n_strerror(i32 noundef %5892, ptr noundef @.str.3)
  %5894 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5895 = load i32, ptr %5894, align 4, !tbaa !5
  %5896 = call ptr @s2n_strerror_debug(i32 noundef %5895, ptr noundef @.str.3)
  %5897 = call ptr @__errno_location() #11
  %5898 = load i32, ptr %5897, align 4, !tbaa !5
  %5899 = call ptr @strerror(i32 noundef %5898) #10
  %5900 = call ptr @__errno_location() #11
  %5901 = load i32, ptr %5900, align 4, !tbaa !5
  %5902 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5889, ptr noundef @.str, i32 noundef %5890, ptr noundef @.str.75, ptr noundef @.str.2, i32 noundef 360, ptr noundef %5893, ptr noundef %5896, ptr noundef %5899, i32 noundef %5901) #10
  br label %5920

5903:                                             ; preds = %5881, %5874
  %5904 = load i32, ptr %170, align 4, !tbaa !5
  %5905 = call ptr @__errno_location() #11
  store i32 %5904, ptr %5905, align 4, !tbaa !5
  %5906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5907 = load i32, ptr @test_count, align 4, !tbaa !5
  %5908 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5909 = load i32, ptr %5908, align 4, !tbaa !5
  %5910 = call ptr @s2n_strerror(i32 noundef %5909, ptr noundef @.str.3)
  %5911 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5912 = load i32, ptr %5911, align 4, !tbaa !5
  %5913 = call ptr @s2n_strerror_debug(i32 noundef %5912, ptr noundef @.str.3)
  %5914 = call ptr @__errno_location() #11
  %5915 = load i32, ptr %5914, align 4, !tbaa !5
  %5916 = call ptr @strerror(i32 noundef %5915) #10
  %5917 = call ptr @__errno_location() #11
  %5918 = load i32, ptr %5917, align 4, !tbaa !5
  %5919 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5906, ptr noundef @.str.4, i32 noundef %5907, ptr noundef @.str.75, ptr noundef @.str.2, i32 noundef 360, ptr noundef %5910, ptr noundef %5913, ptr noundef %5916, i32 noundef %5918) #10
  br label %5920

5920:                                             ; preds = %5903, %5886
  call void @llvm.lifetime.end.p0(i64 4, ptr %170) #10
  br label %5921

5921:                                             ; preds = %5920
  br label %5922

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

5923:                                             ; No predecessors!
  br label %5924

5924:                                             ; preds = %5923
  br label %5925

5925:                                             ; preds = %5924, %5865
  br label %5926

5926:                                             ; preds = %5925
  br label %5927

5927:                                             ; preds = %5926
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #10
  call void @llvm.memset.p0.i64(ptr align 4 %171, i8 0, i64 8, i1 false)
  br label %5928

5928:                                             ; preds = %5927
  %5929 = load i32, ptr @test_count, align 4, !tbaa !5
  %5930 = add nsw i32 %5929, 1
  store i32 %5930, ptr @test_count, align 4, !tbaa !5
  %5931 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef %171)
  %5932 = icmp eq i32 %5931, -1
  br i1 %5932, label %5933, label %5986

5933:                                             ; preds = %5928
  br label %5934

5934:                                             ; preds = %5933
  br label %5935

5935:                                             ; preds = %5934
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #10
  %5936 = call ptr @__errno_location() #11
  %5937 = load i32, ptr %5936, align 4, !tbaa !5
  store i32 %5937, ptr %172, align 4, !tbaa !5
  %5938 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5939 = call i32 @s2n_print_stacktrace(ptr noundef %5938)
  %5940 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5941 = trunc i8 %5940 to i1
  br i1 %5941, label %5942, label %5964

5942:                                             ; preds = %5935
  %5943 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5944 = call i32 @fileno(ptr noundef %5943) #10
  %5945 = call i32 @isatty(i32 noundef %5944) #10
  %5946 = icmp ne i32 %5945, 0
  br i1 %5946, label %5947, label %5964

5947:                                             ; preds = %5942
  %5948 = load i32, ptr %172, align 4, !tbaa !5
  %5949 = call ptr @__errno_location() #11
  store i32 %5948, ptr %5949, align 4, !tbaa !5
  %5950 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5951 = load i32, ptr @test_count, align 4, !tbaa !5
  %5952 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5953 = load i32, ptr %5952, align 4, !tbaa !5
  %5954 = call ptr @s2n_strerror(i32 noundef %5953, ptr noundef @.str.3)
  %5955 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5956 = load i32, ptr %5955, align 4, !tbaa !5
  %5957 = call ptr @s2n_strerror_debug(i32 noundef %5956, ptr noundef @.str.3)
  %5958 = call ptr @__errno_location() #11
  %5959 = load i32, ptr %5958, align 4, !tbaa !5
  %5960 = call ptr @strerror(i32 noundef %5959) #10
  %5961 = call ptr @__errno_location() #11
  %5962 = load i32, ptr %5961, align 4, !tbaa !5
  %5963 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5950, ptr noundef @.str, i32 noundef %5951, ptr noundef @.str.76, ptr noundef @.str.2, i32 noundef 363, ptr noundef %5954, ptr noundef %5957, ptr noundef %5960, i32 noundef %5962) #10
  br label %5981

5964:                                             ; preds = %5942, %5935
  %5965 = load i32, ptr %172, align 4, !tbaa !5
  %5966 = call ptr @__errno_location() #11
  store i32 %5965, ptr %5966, align 4, !tbaa !5
  %5967 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5968 = load i32, ptr @test_count, align 4, !tbaa !5
  %5969 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5970 = load i32, ptr %5969, align 4, !tbaa !5
  %5971 = call ptr @s2n_strerror(i32 noundef %5970, ptr noundef @.str.3)
  %5972 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5973 = load i32, ptr %5972, align 4, !tbaa !5
  %5974 = call ptr @s2n_strerror_debug(i32 noundef %5973, ptr noundef @.str.3)
  %5975 = call ptr @__errno_location() #11
  %5976 = load i32, ptr %5975, align 4, !tbaa !5
  %5977 = call ptr @strerror(i32 noundef %5976) #10
  %5978 = call ptr @__errno_location() #11
  %5979 = load i32, ptr %5978, align 4, !tbaa !5
  %5980 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5967, ptr noundef @.str.4, i32 noundef %5968, ptr noundef @.str.76, ptr noundef @.str.2, i32 noundef 363, ptr noundef %5971, ptr noundef %5974, ptr noundef %5977, i32 noundef %5979) #10
  br label %5981

5981:                                             ; preds = %5964, %5947
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #10
  br label %5982

5982:                                             ; preds = %5981
  br label %5983

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

5984:                                             ; No predecessors!
  br label %5985

5985:                                             ; preds = %5984
  br label %5986

5986:                                             ; preds = %5985, %5928
  br label %5987

5987:                                             ; preds = %5986
  br label %5988

5988:                                             ; preds = %5987
  br label %5989

5989:                                             ; preds = %5988
  %5990 = load i32, ptr @test_count, align 4, !tbaa !5
  %5991 = add nsw i32 %5990, 1
  store i32 %5991, ptr @test_count, align 4, !tbaa !5
  %5992 = load ptr, ptr %165, align 8, !tbaa !9
  %5993 = call i32 @s2n_connection_set_io_pair(ptr noundef %5992, ptr noundef %171)
  %5994 = icmp eq i32 %5993, -1
  br i1 %5994, label %5995, label %6048

5995:                                             ; preds = %5989
  br label %5996

5996:                                             ; preds = %5995
  br label %5997

5997:                                             ; preds = %5996
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #10
  %5998 = call ptr @__errno_location() #11
  %5999 = load i32, ptr %5998, align 4, !tbaa !5
  store i32 %5999, ptr %173, align 4, !tbaa !5
  %6000 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6001 = call i32 @s2n_print_stacktrace(ptr noundef %6000)
  %6002 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6003 = trunc i8 %6002 to i1
  br i1 %6003, label %6004, label %6026

6004:                                             ; preds = %5997
  %6005 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6006 = call i32 @fileno(ptr noundef %6005) #10
  %6007 = call i32 @isatty(i32 noundef %6006) #10
  %6008 = icmp ne i32 %6007, 0
  br i1 %6008, label %6009, label %6026

6009:                                             ; preds = %6004
  %6010 = load i32, ptr %173, align 4, !tbaa !5
  %6011 = call ptr @__errno_location() #11
  store i32 %6010, ptr %6011, align 4, !tbaa !5
  %6012 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6013 = load i32, ptr @test_count, align 4, !tbaa !5
  %6014 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6015 = load i32, ptr %6014, align 4, !tbaa !5
  %6016 = call ptr @s2n_strerror(i32 noundef %6015, ptr noundef @.str.3)
  %6017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6018 = load i32, ptr %6017, align 4, !tbaa !5
  %6019 = call ptr @s2n_strerror_debug(i32 noundef %6018, ptr noundef @.str.3)
  %6020 = call ptr @__errno_location() #11
  %6021 = load i32, ptr %6020, align 4, !tbaa !5
  %6022 = call ptr @strerror(i32 noundef %6021) #10
  %6023 = call ptr @__errno_location() #11
  %6024 = load i32, ptr %6023, align 4, !tbaa !5
  %6025 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6012, ptr noundef @.str, i32 noundef %6013, ptr noundef @.str.77, ptr noundef @.str.2, i32 noundef 364, ptr noundef %6016, ptr noundef %6019, ptr noundef %6022, i32 noundef %6024) #10
  br label %6043

6026:                                             ; preds = %6004, %5997
  %6027 = load i32, ptr %173, align 4, !tbaa !5
  %6028 = call ptr @__errno_location() #11
  store i32 %6027, ptr %6028, align 4, !tbaa !5
  %6029 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6030 = load i32, ptr @test_count, align 4, !tbaa !5
  %6031 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6032 = load i32, ptr %6031, align 4, !tbaa !5
  %6033 = call ptr @s2n_strerror(i32 noundef %6032, ptr noundef @.str.3)
  %6034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6035 = load i32, ptr %6034, align 4, !tbaa !5
  %6036 = call ptr @s2n_strerror_debug(i32 noundef %6035, ptr noundef @.str.3)
  %6037 = call ptr @__errno_location() #11
  %6038 = load i32, ptr %6037, align 4, !tbaa !5
  %6039 = call ptr @strerror(i32 noundef %6038) #10
  %6040 = call ptr @__errno_location() #11
  %6041 = load i32, ptr %6040, align 4, !tbaa !5
  %6042 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6029, ptr noundef @.str.4, i32 noundef %6030, ptr noundef @.str.77, ptr noundef @.str.2, i32 noundef 364, ptr noundef %6033, ptr noundef %6036, ptr noundef %6039, i32 noundef %6041) #10
  br label %6043

6043:                                             ; preds = %6026, %6009
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #10
  br label %6044

6044:                                             ; preds = %6043
  br label %6045

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

6046:                                             ; No predecessors!
  br label %6047

6047:                                             ; preds = %6046
  br label %6048

6048:                                             ; preds = %6047, %5989
  br label %6049

6049:                                             ; preds = %6048
  br label %6050

6050:                                             ; preds = %6049
  br label %6051

6051:                                             ; preds = %6050
  %6052 = load i32, ptr @test_count, align 4, !tbaa !5
  %6053 = add nsw i32 %6052, 1
  store i32 %6053, ptr @test_count, align 4, !tbaa !5
  %6054 = load ptr, ptr %168, align 8, !tbaa !9
  %6055 = call i32 @s2n_connection_set_io_pair(ptr noundef %6054, ptr noundef %171)
  %6056 = icmp eq i32 %6055, -1
  br i1 %6056, label %6057, label %6110

6057:                                             ; preds = %6051
  br label %6058

6058:                                             ; preds = %6057
  br label %6059

6059:                                             ; preds = %6058
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #10
  %6060 = call ptr @__errno_location() #11
  %6061 = load i32, ptr %6060, align 4, !tbaa !5
  store i32 %6061, ptr %174, align 4, !tbaa !5
  %6062 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6063 = call i32 @s2n_print_stacktrace(ptr noundef %6062)
  %6064 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6065 = trunc i8 %6064 to i1
  br i1 %6065, label %6066, label %6088

6066:                                             ; preds = %6059
  %6067 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6068 = call i32 @fileno(ptr noundef %6067) #10
  %6069 = call i32 @isatty(i32 noundef %6068) #10
  %6070 = icmp ne i32 %6069, 0
  br i1 %6070, label %6071, label %6088

6071:                                             ; preds = %6066
  %6072 = load i32, ptr %174, align 4, !tbaa !5
  %6073 = call ptr @__errno_location() #11
  store i32 %6072, ptr %6073, align 4, !tbaa !5
  %6074 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6075 = load i32, ptr @test_count, align 4, !tbaa !5
  %6076 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6077 = load i32, ptr %6076, align 4, !tbaa !5
  %6078 = call ptr @s2n_strerror(i32 noundef %6077, ptr noundef @.str.3)
  %6079 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6080 = load i32, ptr %6079, align 4, !tbaa !5
  %6081 = call ptr @s2n_strerror_debug(i32 noundef %6080, ptr noundef @.str.3)
  %6082 = call ptr @__errno_location() #11
  %6083 = load i32, ptr %6082, align 4, !tbaa !5
  %6084 = call ptr @strerror(i32 noundef %6083) #10
  %6085 = call ptr @__errno_location() #11
  %6086 = load i32, ptr %6085, align 4, !tbaa !5
  %6087 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6074, ptr noundef @.str, i32 noundef %6075, ptr noundef @.str.78, ptr noundef @.str.2, i32 noundef 365, ptr noundef %6078, ptr noundef %6081, ptr noundef %6084, i32 noundef %6086) #10
  br label %6105

6088:                                             ; preds = %6066, %6059
  %6089 = load i32, ptr %174, align 4, !tbaa !5
  %6090 = call ptr @__errno_location() #11
  store i32 %6089, ptr %6090, align 4, !tbaa !5
  %6091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6092 = load i32, ptr @test_count, align 4, !tbaa !5
  %6093 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6094 = load i32, ptr %6093, align 4, !tbaa !5
  %6095 = call ptr @s2n_strerror(i32 noundef %6094, ptr noundef @.str.3)
  %6096 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6097 = load i32, ptr %6096, align 4, !tbaa !5
  %6098 = call ptr @s2n_strerror_debug(i32 noundef %6097, ptr noundef @.str.3)
  %6099 = call ptr @__errno_location() #11
  %6100 = load i32, ptr %6099, align 4, !tbaa !5
  %6101 = call ptr @strerror(i32 noundef %6100) #10
  %6102 = call ptr @__errno_location() #11
  %6103 = load i32, ptr %6102, align 4, !tbaa !5
  %6104 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6091, ptr noundef @.str.4, i32 noundef %6092, ptr noundef @.str.78, ptr noundef @.str.2, i32 noundef 365, ptr noundef %6095, ptr noundef %6098, ptr noundef %6101, i32 noundef %6103) #10
  br label %6105

6105:                                             ; preds = %6088, %6071
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #10
  br label %6106

6106:                                             ; preds = %6105
  br label %6107

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

6108:                                             ; No predecessors!
  br label %6109

6109:                                             ; preds = %6108
  br label %6110

6110:                                             ; preds = %6109, %6051
  br label %6111

6111:                                             ; preds = %6110
  br label %6112

6112:                                             ; preds = %6111
  call void @llvm.lifetime.start.p0(i64 4, ptr %175) #10
  store i32 0, ptr %175, align 4, !tbaa !5
  br label %6113

6113:                                             ; preds = %6112
  %6114 = load i32, ptr @test_count, align 4, !tbaa !5
  %6115 = add nsw i32 %6114, 1
  store i32 %6115, ptr @test_count, align 4, !tbaa !5
  %6116 = load ptr, ptr %165, align 8, !tbaa !9
  %6117 = call i32 @s2n_negotiate_until_message(ptr noundef %6116, ptr noundef %175, i32 noundef 1)
  %6118 = getelementptr inbounds %struct.s2n_result, ptr %176, i32 0, i32 0
  store i32 %6117, ptr %6118, align 4
  %6119 = getelementptr inbounds %struct.s2n_result, ptr %176, i32 0, i32 0
  %6120 = load i32, ptr %6119, align 4
  %6121 = call zeroext i1 @s2n_result_is_ok(i32 %6120)
  br i1 %6121, label %6175, label %6122

6122:                                             ; preds = %6113
  br label %6123

6123:                                             ; preds = %6122
  br label %6124

6124:                                             ; preds = %6123
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #10
  %6125 = call ptr @__errno_location() #11
  %6126 = load i32, ptr %6125, align 4, !tbaa !5
  store i32 %6126, ptr %177, align 4, !tbaa !5
  %6127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6128 = call i32 @s2n_print_stacktrace(ptr noundef %6127)
  %6129 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6130 = trunc i8 %6129 to i1
  br i1 %6130, label %6131, label %6153

6131:                                             ; preds = %6124
  %6132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6133 = call i32 @fileno(ptr noundef %6132) #10
  %6134 = call i32 @isatty(i32 noundef %6133) #10
  %6135 = icmp ne i32 %6134, 0
  br i1 %6135, label %6136, label %6153

6136:                                             ; preds = %6131
  %6137 = load i32, ptr %177, align 4, !tbaa !5
  %6138 = call ptr @__errno_location() #11
  store i32 %6137, ptr %6138, align 4, !tbaa !5
  %6139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6140 = load i32, ptr @test_count, align 4, !tbaa !5
  %6141 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6142 = load i32, ptr %6141, align 4, !tbaa !5
  %6143 = call ptr @s2n_strerror(i32 noundef %6142, ptr noundef @.str.3)
  %6144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6145 = load i32, ptr %6144, align 4, !tbaa !5
  %6146 = call ptr @s2n_strerror_debug(i32 noundef %6145, ptr noundef @.str.3)
  %6147 = call ptr @__errno_location() #11
  %6148 = load i32, ptr %6147, align 4, !tbaa !5
  %6149 = call ptr @strerror(i32 noundef %6148) #10
  %6150 = call ptr @__errno_location() #11
  %6151 = load i32, ptr %6150, align 4, !tbaa !5
  %6152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6139, ptr noundef @.str, i32 noundef %6140, ptr noundef @.str.79, ptr noundef @.str.2, i32 noundef 368, ptr noundef %6143, ptr noundef %6146, ptr noundef %6149, i32 noundef %6151) #10
  br label %6170

6153:                                             ; preds = %6131, %6124
  %6154 = load i32, ptr %177, align 4, !tbaa !5
  %6155 = call ptr @__errno_location() #11
  store i32 %6154, ptr %6155, align 4, !tbaa !5
  %6156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6157 = load i32, ptr @test_count, align 4, !tbaa !5
  %6158 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6159 = load i32, ptr %6158, align 4, !tbaa !5
  %6160 = call ptr @s2n_strerror(i32 noundef %6159, ptr noundef @.str.3)
  %6161 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6162 = load i32, ptr %6161, align 4, !tbaa !5
  %6163 = call ptr @s2n_strerror_debug(i32 noundef %6162, ptr noundef @.str.3)
  %6164 = call ptr @__errno_location() #11
  %6165 = load i32, ptr %6164, align 4, !tbaa !5
  %6166 = call ptr @strerror(i32 noundef %6165) #10
  %6167 = call ptr @__errno_location() #11
  %6168 = load i32, ptr %6167, align 4, !tbaa !5
  %6169 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6156, ptr noundef @.str.4, i32 noundef %6157, ptr noundef @.str.79, ptr noundef @.str.2, i32 noundef 368, ptr noundef %6160, ptr noundef %6163, ptr noundef %6166, i32 noundef %6168) #10
  br label %6170

6170:                                             ; preds = %6153, %6136
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #10
  br label %6171

6171:                                             ; preds = %6170
  br label %6172

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

6173:                                             ; No predecessors!
  br label %6174

6174:                                             ; preds = %6173
  br label %6175

6175:                                             ; preds = %6174, %6113
  br label %6176

6176:                                             ; preds = %6175
  br label %6177

6177:                                             ; preds = %6176
  call void @llvm.lifetime.start.p0(i64 34, ptr %178) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %179) #10
  call void @llvm.memset.p0.i64(ptr align 8 %179, i8 0, i64 24, i1 false)
  br label %6178

6178:                                             ; preds = %6177
  %6179 = load i32, ptr @test_count, align 4, !tbaa !5
  %6180 = add nsw i32 %6179, 1
  store i32 %6180, ptr @test_count, align 4, !tbaa !5
  %6181 = getelementptr inbounds [34 x i8], ptr %178, i64 0, i64 0
  %6182 = call i32 @s2n_blob_init(ptr noundef %179, ptr noundef %6181, i32 noundef 34)
  %6183 = icmp eq i32 %6182, -1
  br i1 %6183, label %6184, label %6237

6184:                                             ; preds = %6178
  br label %6185

6185:                                             ; preds = %6184
  br label %6186

6186:                                             ; preds = %6185
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #10
  %6187 = call ptr @__errno_location() #11
  %6188 = load i32, ptr %6187, align 4, !tbaa !5
  store i32 %6188, ptr %180, align 4, !tbaa !5
  %6189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6190 = call i32 @s2n_print_stacktrace(ptr noundef %6189)
  %6191 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6192 = trunc i8 %6191 to i1
  br i1 %6192, label %6193, label %6215

6193:                                             ; preds = %6186
  %6194 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6195 = call i32 @fileno(ptr noundef %6194) #10
  %6196 = call i32 @isatty(i32 noundef %6195) #10
  %6197 = icmp ne i32 %6196, 0
  br i1 %6197, label %6198, label %6215

6198:                                             ; preds = %6193
  %6199 = load i32, ptr %180, align 4, !tbaa !5
  %6200 = call ptr @__errno_location() #11
  store i32 %6199, ptr %6200, align 4, !tbaa !5
  %6201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6202 = load i32, ptr @test_count, align 4, !tbaa !5
  %6203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6204 = load i32, ptr %6203, align 4, !tbaa !5
  %6205 = call ptr @s2n_strerror(i32 noundef %6204, ptr noundef @.str.3)
  %6206 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6207 = load i32, ptr %6206, align 4, !tbaa !5
  %6208 = call ptr @s2n_strerror_debug(i32 noundef %6207, ptr noundef @.str.3)
  %6209 = call ptr @__errno_location() #11
  %6210 = load i32, ptr %6209, align 4, !tbaa !5
  %6211 = call ptr @strerror(i32 noundef %6210) #10
  %6212 = call ptr @__errno_location() #11
  %6213 = load i32, ptr %6212, align 4, !tbaa !5
  %6214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6201, ptr noundef @.str, i32 noundef %6202, ptr noundef @.str.80, ptr noundef @.str.2, i32 noundef 373, ptr noundef %6205, ptr noundef %6208, ptr noundef %6211, i32 noundef %6213) #10
  br label %6232

6215:                                             ; preds = %6193, %6186
  %6216 = load i32, ptr %180, align 4, !tbaa !5
  %6217 = call ptr @__errno_location() #11
  store i32 %6216, ptr %6217, align 4, !tbaa !5
  %6218 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6219 = load i32, ptr @test_count, align 4, !tbaa !5
  %6220 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6221 = load i32, ptr %6220, align 4, !tbaa !5
  %6222 = call ptr @s2n_strerror(i32 noundef %6221, ptr noundef @.str.3)
  %6223 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6224 = load i32, ptr %6223, align 4, !tbaa !5
  %6225 = call ptr @s2n_strerror_debug(i32 noundef %6224, ptr noundef @.str.3)
  %6226 = call ptr @__errno_location() #11
  %6227 = load i32, ptr %6226, align 4, !tbaa !5
  %6228 = call ptr @strerror(i32 noundef %6227) #10
  %6229 = call ptr @__errno_location() #11
  %6230 = load i32, ptr %6229, align 4, !tbaa !5
  %6231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6218, ptr noundef @.str.4, i32 noundef %6219, ptr noundef @.str.80, ptr noundef @.str.2, i32 noundef 373, ptr noundef %6222, ptr noundef %6225, ptr noundef %6228, i32 noundef %6230) #10
  br label %6232

6232:                                             ; preds = %6215, %6198
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #10
  br label %6233

6233:                                             ; preds = %6232
  br label %6234

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

6235:                                             ; No predecessors!
  br label %6236

6236:                                             ; preds = %6235
  br label %6237

6237:                                             ; preds = %6236, %6178
  br label %6238

6238:                                             ; preds = %6237
  br label %6239

6239:                                             ; preds = %6238
  call void @llvm.lifetime.start.p0(i64 40, ptr %181) #10
  call void @llvm.memset.p0.i64(ptr align 8 %181, i8 0, i64 40, i1 false)
  br label %6240

6240:                                             ; preds = %6239
  %6241 = load i32, ptr @test_count, align 4, !tbaa !5
  %6242 = add nsw i32 %6241, 1
  store i32 %6242, ptr @test_count, align 4, !tbaa !5
  %6243 = call i32 @s2n_stuffer_init(ptr noundef %181, ptr noundef %179)
  %6244 = icmp eq i32 %6243, -1
  br i1 %6244, label %6245, label %6298

6245:                                             ; preds = %6240
  br label %6246

6246:                                             ; preds = %6245
  br label %6247

6247:                                             ; preds = %6246
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #10
  %6248 = call ptr @__errno_location() #11
  %6249 = load i32, ptr %6248, align 4, !tbaa !5
  store i32 %6249, ptr %182, align 4, !tbaa !5
  %6250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6251 = call i32 @s2n_print_stacktrace(ptr noundef %6250)
  %6252 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6253 = trunc i8 %6252 to i1
  br i1 %6253, label %6254, label %6276

6254:                                             ; preds = %6247
  %6255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6256 = call i32 @fileno(ptr noundef %6255) #10
  %6257 = call i32 @isatty(i32 noundef %6256) #10
  %6258 = icmp ne i32 %6257, 0
  br i1 %6258, label %6259, label %6276

6259:                                             ; preds = %6254
  %6260 = load i32, ptr %182, align 4, !tbaa !5
  %6261 = call ptr @__errno_location() #11
  store i32 %6260, ptr %6261, align 4, !tbaa !5
  %6262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6263 = load i32, ptr @test_count, align 4, !tbaa !5
  %6264 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6265 = load i32, ptr %6264, align 4, !tbaa !5
  %6266 = call ptr @s2n_strerror(i32 noundef %6265, ptr noundef @.str.3)
  %6267 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6268 = load i32, ptr %6267, align 4, !tbaa !5
  %6269 = call ptr @s2n_strerror_debug(i32 noundef %6268, ptr noundef @.str.3)
  %6270 = call ptr @__errno_location() #11
  %6271 = load i32, ptr %6270, align 4, !tbaa !5
  %6272 = call ptr @strerror(i32 noundef %6271) #10
  %6273 = call ptr @__errno_location() #11
  %6274 = load i32, ptr %6273, align 4, !tbaa !5
  %6275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6262, ptr noundef @.str, i32 noundef %6263, ptr noundef @.str.81, ptr noundef @.str.2, i32 noundef 376, ptr noundef %6266, ptr noundef %6269, ptr noundef %6272, i32 noundef %6274) #10
  br label %6293

6276:                                             ; preds = %6254, %6247
  %6277 = load i32, ptr %182, align 4, !tbaa !5
  %6278 = call ptr @__errno_location() #11
  store i32 %6277, ptr %6278, align 4, !tbaa !5
  %6279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6280 = load i32, ptr @test_count, align 4, !tbaa !5
  %6281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6282 = load i32, ptr %6281, align 4, !tbaa !5
  %6283 = call ptr @s2n_strerror(i32 noundef %6282, ptr noundef @.str.3)
  %6284 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6285 = load i32, ptr %6284, align 4, !tbaa !5
  %6286 = call ptr @s2n_strerror_debug(i32 noundef %6285, ptr noundef @.str.3)
  %6287 = call ptr @__errno_location() #11
  %6288 = load i32, ptr %6287, align 4, !tbaa !5
  %6289 = call ptr @strerror(i32 noundef %6288) #10
  %6290 = call ptr @__errno_location() #11
  %6291 = load i32, ptr %6290, align 4, !tbaa !5
  %6292 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6279, ptr noundef @.str.4, i32 noundef %6280, ptr noundef @.str.81, ptr noundef @.str.2, i32 noundef 376, ptr noundef %6283, ptr noundef %6286, ptr noundef %6289, i32 noundef %6291) #10
  br label %6293

6293:                                             ; preds = %6276, %6259
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #10
  br label %6294

6294:                                             ; preds = %6293
  br label %6295

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

6296:                                             ; No predecessors!
  br label %6297

6297:                                             ; preds = %6296
  br label %6298

6298:                                             ; preds = %6297, %6240
  br label %6299

6299:                                             ; preds = %6298
  br label %6300

6300:                                             ; preds = %6299
  br label %6301

6301:                                             ; preds = %6300
  %6302 = load i32, ptr @test_count, align 4, !tbaa !5
  %6303 = add nsw i32 %6302, 1
  store i32 %6303, ptr @test_count, align 4, !tbaa !5
  %6304 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_client_supported_groups_extension, i32 0, i32 3), align 8, !tbaa !53
  %6305 = load ptr, ptr %165, align 8, !tbaa !9
  %6306 = call i32 %6304(ptr noundef %6305, ptr noundef %181)
  %6307 = icmp eq i32 %6306, -1
  br i1 %6307, label %6308, label %6361

6308:                                             ; preds = %6301
  br label %6309

6309:                                             ; preds = %6308
  br label %6310

6310:                                             ; preds = %6309
  call void @llvm.lifetime.start.p0(i64 4, ptr %183) #10
  %6311 = call ptr @__errno_location() #11
  %6312 = load i32, ptr %6311, align 4, !tbaa !5
  store i32 %6312, ptr %183, align 4, !tbaa !5
  %6313 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6314 = call i32 @s2n_print_stacktrace(ptr noundef %6313)
  %6315 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6316 = trunc i8 %6315 to i1
  br i1 %6316, label %6317, label %6339

6317:                                             ; preds = %6310
  %6318 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6319 = call i32 @fileno(ptr noundef %6318) #10
  %6320 = call i32 @isatty(i32 noundef %6319) #10
  %6321 = icmp ne i32 %6320, 0
  br i1 %6321, label %6322, label %6339

6322:                                             ; preds = %6317
  %6323 = load i32, ptr %183, align 4, !tbaa !5
  %6324 = call ptr @__errno_location() #11
  store i32 %6323, ptr %6324, align 4, !tbaa !5
  %6325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6326 = load i32, ptr @test_count, align 4, !tbaa !5
  %6327 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6328 = load i32, ptr %6327, align 4, !tbaa !5
  %6329 = call ptr @s2n_strerror(i32 noundef %6328, ptr noundef @.str.3)
  %6330 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6331 = load i32, ptr %6330, align 4, !tbaa !5
  %6332 = call ptr @s2n_strerror_debug(i32 noundef %6331, ptr noundef @.str.3)
  %6333 = call ptr @__errno_location() #11
  %6334 = load i32, ptr %6333, align 4, !tbaa !5
  %6335 = call ptr @strerror(i32 noundef %6334) #10
  %6336 = call ptr @__errno_location() #11
  %6337 = load i32, ptr %6336, align 4, !tbaa !5
  %6338 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6325, ptr noundef @.str, i32 noundef %6326, ptr noundef @.str.82, ptr noundef @.str.2, i32 noundef 377, ptr noundef %6329, ptr noundef %6332, ptr noundef %6335, i32 noundef %6337) #10
  br label %6356

6339:                                             ; preds = %6317, %6310
  %6340 = load i32, ptr %183, align 4, !tbaa !5
  %6341 = call ptr @__errno_location() #11
  store i32 %6340, ptr %6341, align 4, !tbaa !5
  %6342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6343 = load i32, ptr @test_count, align 4, !tbaa !5
  %6344 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6345 = load i32, ptr %6344, align 4, !tbaa !5
  %6346 = call ptr @s2n_strerror(i32 noundef %6345, ptr noundef @.str.3)
  %6347 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6348 = load i32, ptr %6347, align 4, !tbaa !5
  %6349 = call ptr @s2n_strerror_debug(i32 noundef %6348, ptr noundef @.str.3)
  %6350 = call ptr @__errno_location() #11
  %6351 = load i32, ptr %6350, align 4, !tbaa !5
  %6352 = call ptr @strerror(i32 noundef %6351) #10
  %6353 = call ptr @__errno_location() #11
  %6354 = load i32, ptr %6353, align 4, !tbaa !5
  %6355 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6342, ptr noundef @.str.4, i32 noundef %6343, ptr noundef @.str.82, ptr noundef @.str.2, i32 noundef 377, ptr noundef %6346, ptr noundef %6349, ptr noundef %6352, i32 noundef %6354) #10
  br label %6356

6356:                                             ; preds = %6339, %6322
  call void @llvm.lifetime.end.p0(i64 4, ptr %183) #10
  br label %6357

6357:                                             ; preds = %6356
  br label %6358

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

6359:                                             ; No predecessors!
  br label %6360

6360:                                             ; preds = %6359
  br label %6361

6361:                                             ; preds = %6360, %6301
  br label %6362

6362:                                             ; preds = %6361
  br label %6363

6363:                                             ; preds = %6362
  %6364 = getelementptr inbounds %struct.s2n_client_hello_context, ptr %163, i32 0, i32 0
  store ptr %181, ptr %6364, align 8, !tbaa !55
  br label %6365

6365:                                             ; preds = %6363
  %6366 = load i32, ptr @test_count, align 4, !tbaa !5
  %6367 = add nsw i32 %6366, 1
  store i32 %6367, ptr @test_count, align 4, !tbaa !5
  %6368 = load ptr, ptr %168, align 8, !tbaa !9
  %6369 = load ptr, ptr %165, align 8, !tbaa !9
  %6370 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %6368, ptr noundef %6369)
  %6371 = icmp eq i32 %6370, -1
  br i1 %6371, label %6372, label %6425

6372:                                             ; preds = %6365
  br label %6373

6373:                                             ; preds = %6372
  br label %6374

6374:                                             ; preds = %6373
  call void @llvm.lifetime.start.p0(i64 4, ptr %184) #10
  %6375 = call ptr @__errno_location() #11
  %6376 = load i32, ptr %6375, align 4, !tbaa !5
  store i32 %6376, ptr %184, align 4, !tbaa !5
  %6377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6378 = call i32 @s2n_print_stacktrace(ptr noundef %6377)
  %6379 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6380 = trunc i8 %6379 to i1
  br i1 %6380, label %6381, label %6403

6381:                                             ; preds = %6374
  %6382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6383 = call i32 @fileno(ptr noundef %6382) #10
  %6384 = call i32 @isatty(i32 noundef %6383) #10
  %6385 = icmp ne i32 %6384, 0
  br i1 %6385, label %6386, label %6403

6386:                                             ; preds = %6381
  %6387 = load i32, ptr %184, align 4, !tbaa !5
  %6388 = call ptr @__errno_location() #11
  store i32 %6387, ptr %6388, align 4, !tbaa !5
  %6389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6390 = load i32, ptr @test_count, align 4, !tbaa !5
  %6391 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6392 = load i32, ptr %6391, align 4, !tbaa !5
  %6393 = call ptr @s2n_strerror(i32 noundef %6392, ptr noundef @.str.3)
  %6394 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6395 = load i32, ptr %6394, align 4, !tbaa !5
  %6396 = call ptr @s2n_strerror_debug(i32 noundef %6395, ptr noundef @.str.3)
  %6397 = call ptr @__errno_location() #11
  %6398 = load i32, ptr %6397, align 4, !tbaa !5
  %6399 = call ptr @strerror(i32 noundef %6398) #10
  %6400 = call ptr @__errno_location() #11
  %6401 = load i32, ptr %6400, align 4, !tbaa !5
  %6402 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6389, ptr noundef @.str, i32 noundef %6390, ptr noundef @.str.83, ptr noundef @.str.2, i32 noundef 380, ptr noundef %6393, ptr noundef %6396, ptr noundef %6399, i32 noundef %6401) #10
  br label %6420

6403:                                             ; preds = %6381, %6374
  %6404 = load i32, ptr %184, align 4, !tbaa !5
  %6405 = call ptr @__errno_location() #11
  store i32 %6404, ptr %6405, align 4, !tbaa !5
  %6406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6407 = load i32, ptr @test_count, align 4, !tbaa !5
  %6408 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6409 = load i32, ptr %6408, align 4, !tbaa !5
  %6410 = call ptr @s2n_strerror(i32 noundef %6409, ptr noundef @.str.3)
  %6411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6412 = load i32, ptr %6411, align 4, !tbaa !5
  %6413 = call ptr @s2n_strerror_debug(i32 noundef %6412, ptr noundef @.str.3)
  %6414 = call ptr @__errno_location() #11
  %6415 = load i32, ptr %6414, align 4, !tbaa !5
  %6416 = call ptr @strerror(i32 noundef %6415) #10
  %6417 = call ptr @__errno_location() #11
  %6418 = load i32, ptr %6417, align 4, !tbaa !5
  %6419 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6406, ptr noundef @.str.4, i32 noundef %6407, ptr noundef @.str.83, ptr noundef @.str.2, i32 noundef 380, ptr noundef %6410, ptr noundef %6413, ptr noundef %6416, i32 noundef %6418) #10
  br label %6420

6420:                                             ; preds = %6403, %6386
  call void @llvm.lifetime.end.p0(i64 4, ptr %184) #10
  br label %6421

6421:                                             ; preds = %6420
  br label %6422

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

6423:                                             ; No predecessors!
  br label %6424

6424:                                             ; preds = %6423
  br label %6425

6425:                                             ; preds = %6424, %6365
  br label %6426

6426:                                             ; preds = %6425
  br label %6427

6427:                                             ; preds = %6426
  br label %6428

6428:                                             ; preds = %6427
  %6429 = load i32, ptr @test_count, align 4, !tbaa !5
  %6430 = add nsw i32 %6429, 1
  store i32 %6430, ptr @test_count, align 4, !tbaa !5
  %6431 = getelementptr inbounds %struct.s2n_client_hello_context, ptr %163, i32 0, i32 1
  %6432 = load i32, ptr %6431, align 8, !tbaa !57
  %6433 = icmp eq i32 %6432, 1
  br i1 %6433, label %6487, label %6434

6434:                                             ; preds = %6428
  br label %6435

6435:                                             ; preds = %6434
  br label %6436

6436:                                             ; preds = %6435
  call void @llvm.lifetime.start.p0(i64 4, ptr %185) #10
  %6437 = call ptr @__errno_location() #11
  %6438 = load i32, ptr %6437, align 4, !tbaa !5
  store i32 %6438, ptr %185, align 4, !tbaa !5
  %6439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6440 = call i32 @s2n_print_stacktrace(ptr noundef %6439)
  %6441 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6442 = trunc i8 %6441 to i1
  br i1 %6442, label %6443, label %6465

6443:                                             ; preds = %6436
  %6444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6445 = call i32 @fileno(ptr noundef %6444) #10
  %6446 = call i32 @isatty(i32 noundef %6445) #10
  %6447 = icmp ne i32 %6446, 0
  br i1 %6447, label %6448, label %6465

6448:                                             ; preds = %6443
  %6449 = load i32, ptr %185, align 4, !tbaa !5
  %6450 = call ptr @__errno_location() #11
  store i32 %6449, ptr %6450, align 4, !tbaa !5
  %6451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6452 = load i32, ptr @test_count, align 4, !tbaa !5
  %6453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6454 = load i32, ptr %6453, align 4, !tbaa !5
  %6455 = call ptr @s2n_strerror(i32 noundef %6454, ptr noundef @.str.3)
  %6456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6457 = load i32, ptr %6456, align 4, !tbaa !5
  %6458 = call ptr @s2n_strerror_debug(i32 noundef %6457, ptr noundef @.str.3)
  %6459 = call ptr @__errno_location() #11
  %6460 = load i32, ptr %6459, align 4, !tbaa !5
  %6461 = call ptr @strerror(i32 noundef %6460) #10
  %6462 = call ptr @__errno_location() #11
  %6463 = load i32, ptr %6462, align 4, !tbaa !5
  %6464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6451, ptr noundef @.str, i32 noundef %6452, ptr noundef @.str.84, ptr noundef @.str.2, i32 noundef 382, ptr noundef %6455, ptr noundef %6458, ptr noundef %6461, i32 noundef %6463) #10
  br label %6482

6465:                                             ; preds = %6443, %6436
  %6466 = load i32, ptr %185, align 4, !tbaa !5
  %6467 = call ptr @__errno_location() #11
  store i32 %6466, ptr %6467, align 4, !tbaa !5
  %6468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6469 = load i32, ptr @test_count, align 4, !tbaa !5
  %6470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6471 = load i32, ptr %6470, align 4, !tbaa !5
  %6472 = call ptr @s2n_strerror(i32 noundef %6471, ptr noundef @.str.3)
  %6473 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6474 = load i32, ptr %6473, align 4, !tbaa !5
  %6475 = call ptr @s2n_strerror_debug(i32 noundef %6474, ptr noundef @.str.3)
  %6476 = call ptr @__errno_location() #11
  %6477 = load i32, ptr %6476, align 4, !tbaa !5
  %6478 = call ptr @strerror(i32 noundef %6477) #10
  %6479 = call ptr @__errno_location() #11
  %6480 = load i32, ptr %6479, align 4, !tbaa !5
  %6481 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6468, ptr noundef @.str.4, i32 noundef %6469, ptr noundef @.str.84, ptr noundef @.str.2, i32 noundef 382, ptr noundef %6472, ptr noundef %6475, ptr noundef %6478, i32 noundef %6480) #10
  br label %6482

6482:                                             ; preds = %6465, %6448
  call void @llvm.lifetime.end.p0(i64 4, ptr %185) #10
  br label %6483

6483:                                             ; preds = %6482
  br label %6484

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

6485:                                             ; No predecessors!
  br label %6486

6486:                                             ; preds = %6485
  br label %6487

6487:                                             ; preds = %6486, %6428
  br label %6488

6488:                                             ; preds = %6487
  br label %6489

6489:                                             ; preds = %6488
  call void @llvm.lifetime.end.p0(i64 40, ptr %181) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %179) #10
  call void @llvm.lifetime.end.p0(i64 34, ptr %178) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %175) #10
  %6490 = call i32 @s2n_io_pair_close(ptr noundef %171)
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  %6491 = call i32 @s2n_connection_ptr_free(ptr noundef %168)
  %6492 = getelementptr inbounds %struct.s2n_result, ptr %186, i32 0, i32 0
  store i32 %6491, ptr %6492, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #10
  %6493 = call i32 @s2n_connection_ptr_free(ptr noundef %165)
  %6494 = getelementptr inbounds %struct.s2n_result, ptr %187, i32 0, i32 0
  store i32 %6493, ptr %6494, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #10
  %6495 = call i32 @s2n_config_ptr_free(ptr noundef %158)
  %6496 = getelementptr inbounds %struct.s2n_result, ptr %188, i32 0, i32 0
  store i32 %6495, ptr %6496, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #10
  %6497 = call i32 @s2n_config_ptr_free(ptr noundef %154)
  %6498 = getelementptr inbounds %struct.s2n_result, ptr %189, i32 0, i32 0
  store i32 %6497, ptr %6498, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #10
  br label %6499

6499:                                             ; preds = %6489
  %6500 = load i32, ptr %152, align 4, !tbaa !5
  %6501 = add nsw i32 %6500, 1
  store i32 %6501, ptr %152, align 4, !tbaa !5
  br label %5169, !llvm.loop !58

6502:                                             ; preds = %5173
  call void @llvm.lifetime.end.p0(i64 56, ptr %151) #10
  br label %6503

6503:                                             ; preds = %6502
  br label %6504

6504:                                             ; preds = %6503
  %6505 = call i32 @s2n_cleanup()
  %6506 = icmp eq i32 %6505, -1
  br i1 %6506, label %6507, label %6560

6507:                                             ; preds = %6504
  br label %6508

6508:                                             ; preds = %6507
  br label %6509

6509:                                             ; preds = %6508
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #10
  %6510 = call ptr @__errno_location() #11
  %6511 = load i32, ptr %6510, align 4, !tbaa !5
  store i32 %6511, ptr %190, align 4, !tbaa !5
  %6512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6513 = call i32 @s2n_print_stacktrace(ptr noundef %6512)
  %6514 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6515 = trunc i8 %6514 to i1
  br i1 %6515, label %6516, label %6538

6516:                                             ; preds = %6509
  %6517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6518 = call i32 @fileno(ptr noundef %6517) #10
  %6519 = call i32 @isatty(i32 noundef %6518) #10
  %6520 = icmp ne i32 %6519, 0
  br i1 %6520, label %6521, label %6538

6521:                                             ; preds = %6516
  %6522 = load i32, ptr %190, align 4, !tbaa !5
  %6523 = call ptr @__errno_location() #11
  store i32 %6522, ptr %6523, align 4, !tbaa !5
  %6524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6525 = load i32, ptr @test_count, align 4, !tbaa !5
  %6526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6527 = load i32, ptr %6526, align 4, !tbaa !5
  %6528 = call ptr @s2n_strerror(i32 noundef %6527, ptr noundef @.str.3)
  %6529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6530 = load i32, ptr %6529, align 4, !tbaa !5
  %6531 = call ptr @s2n_strerror_debug(i32 noundef %6530, ptr noundef @.str.3)
  %6532 = call ptr @__errno_location() #11
  %6533 = load i32, ptr %6532, align 4, !tbaa !5
  %6534 = call ptr @strerror(i32 noundef %6533) #10
  %6535 = call ptr @__errno_location() #11
  %6536 = load i32, ptr %6535, align 4, !tbaa !5
  %6537 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6524, ptr noundef @.str, i32 noundef %6525, ptr noundef @.str.85, ptr noundef @.str.2, i32 noundef 386, ptr noundef %6528, ptr noundef %6531, ptr noundef %6534, i32 noundef %6536) #10
  br label %6555

6538:                                             ; preds = %6516, %6509
  %6539 = load i32, ptr %190, align 4, !tbaa !5
  %6540 = call ptr @__errno_location() #11
  store i32 %6539, ptr %6540, align 4, !tbaa !5
  %6541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6542 = load i32, ptr @test_count, align 4, !tbaa !5
  %6543 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6544 = load i32, ptr %6543, align 4, !tbaa !5
  %6545 = call ptr @s2n_strerror(i32 noundef %6544, ptr noundef @.str.3)
  %6546 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6547 = load i32, ptr %6546, align 4, !tbaa !5
  %6548 = call ptr @s2n_strerror_debug(i32 noundef %6547, ptr noundef @.str.3)
  %6549 = call ptr @__errno_location() #11
  %6550 = load i32, ptr %6549, align 4, !tbaa !5
  %6551 = call ptr @strerror(i32 noundef %6550) #10
  %6552 = call ptr @__errno_location() #11
  %6553 = load i32, ptr %6552, align 4, !tbaa !5
  %6554 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6541, ptr noundef @.str.4, i32 noundef %6542, ptr noundef @.str.85, ptr noundef @.str.2, i32 noundef 386, ptr noundef %6545, ptr noundef %6548, ptr noundef %6551, i32 noundef %6553) #10
  br label %6555

6555:                                             ; preds = %6538, %6521
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #10
  br label %6556

6556:                                             ; preds = %6555
  br label %6557

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

6558:                                             ; No predecessors!
  br label %6559

6559:                                             ; preds = %6558
  br label %6560

6560:                                             ; preds = %6559, %6504
  br label %6561

6561:                                             ; preds = %6560
  br label %6562

6562:                                             ; preds = %6561
  br label %6563

6563:                                             ; preds = %6562
  br label %6564

6564:                                             ; preds = %6563
  %6565 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %6566 = icmp eq i32 %6565, -1
  br i1 %6566, label %6567, label %6620

6567:                                             ; preds = %6564
  br label %6568

6568:                                             ; preds = %6567
  br label %6569

6569:                                             ; preds = %6568
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #10
  %6570 = call ptr @__errno_location() #11
  %6571 = load i32, ptr %6570, align 4, !tbaa !5
  store i32 %6571, ptr %191, align 4, !tbaa !5
  %6572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6573 = call i32 @s2n_print_stacktrace(ptr noundef %6572)
  %6574 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6575 = trunc i8 %6574 to i1
  br i1 %6575, label %6576, label %6598

6576:                                             ; preds = %6569
  %6577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6578 = call i32 @fileno(ptr noundef %6577) #10
  %6579 = call i32 @isatty(i32 noundef %6578) #10
  %6580 = icmp ne i32 %6579, 0
  br i1 %6580, label %6581, label %6598

6581:                                             ; preds = %6576
  %6582 = load i32, ptr %191, align 4, !tbaa !5
  %6583 = call ptr @__errno_location() #11
  store i32 %6582, ptr %6583, align 4, !tbaa !5
  %6584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6585 = load i32, ptr @test_count, align 4, !tbaa !5
  %6586 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6587 = load i32, ptr %6586, align 4, !tbaa !5
  %6588 = call ptr @s2n_strerror(i32 noundef %6587, ptr noundef @.str.3)
  %6589 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6590 = load i32, ptr %6589, align 4, !tbaa !5
  %6591 = call ptr @s2n_strerror_debug(i32 noundef %6590, ptr noundef @.str.3)
  %6592 = call ptr @__errno_location() #11
  %6593 = load i32, ptr %6592, align 4, !tbaa !5
  %6594 = call ptr @strerror(i32 noundef %6593) #10
  %6595 = call ptr @__errno_location() #11
  %6596 = load i32, ptr %6595, align 4, !tbaa !5
  %6597 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6584, ptr noundef @.str, i32 noundef %6585, ptr noundef @.str.86, ptr noundef @.str.2, i32 noundef 386, ptr noundef %6588, ptr noundef %6591, ptr noundef %6594, i32 noundef %6596) #10
  br label %6615

6598:                                             ; preds = %6576, %6569
  %6599 = load i32, ptr %191, align 4, !tbaa !5
  %6600 = call ptr @__errno_location() #11
  store i32 %6599, ptr %6600, align 4, !tbaa !5
  %6601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6602 = load i32, ptr @test_count, align 4, !tbaa !5
  %6603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6604 = load i32, ptr %6603, align 4, !tbaa !5
  %6605 = call ptr @s2n_strerror(i32 noundef %6604, ptr noundef @.str.3)
  %6606 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6607 = load i32, ptr %6606, align 4, !tbaa !5
  %6608 = call ptr @s2n_strerror_debug(i32 noundef %6607, ptr noundef @.str.3)
  %6609 = call ptr @__errno_location() #11
  %6610 = load i32, ptr %6609, align 4, !tbaa !5
  %6611 = call ptr @strerror(i32 noundef %6610) #10
  %6612 = call ptr @__errno_location() #11
  %6613 = load i32, ptr %6612, align 4, !tbaa !5
  %6614 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6601, ptr noundef @.str.4, i32 noundef %6602, ptr noundef @.str.86, ptr noundef @.str.2, i32 noundef 386, ptr noundef %6605, ptr noundef %6608, ptr noundef %6611, i32 noundef %6613) #10
  br label %6615

6615:                                             ; preds = %6598, %6581
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #10
  br label %6616

6616:                                             ; preds = %6615
  br label %6617

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

6618:                                             ; No predecessors!
  br label %6619

6619:                                             ; preds = %6618
  br label %6620

6620:                                             ; preds = %6619, %6564
  br label %6621

6621:                                             ; preds = %6620
  br label %6622

6622:                                             ; preds = %6621
  %6623 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6624 = trunc i8 %6623 to i1
  br i1 %6624, label %6625, label %6641

6625:                                             ; preds = %6622
  %6626 = load ptr, ptr @stdout, align 8, !tbaa !9
  %6627 = call i32 @fileno(ptr noundef %6626) #10
  %6628 = call i32 @isatty(i32 noundef %6627) #10
  %6629 = icmp ne i32 %6628, 0
  br i1 %6629, label %6630, label %6641

6630:                                             ; preds = %6625
  %6631 = load i32, ptr @test_count, align 4, !tbaa !5
  %6632 = icmp ne i32 %6631, 0
  br i1 %6632, label %6633, label %6637

6633:                                             ; preds = %6630
  %6634 = load ptr, ptr @stdout, align 8, !tbaa !9
  %6635 = load i32, ptr @test_count, align 4, !tbaa !5
  %6636 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6634, ptr noundef @.str.87, i32 noundef %6635) #10
  br label %6640

6637:                                             ; preds = %6630
  %6638 = load ptr, ptr @stdout, align 8, !tbaa !9
  %6639 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6638, ptr noundef @.str.88) #10
  br label %6640

6640:                                             ; preds = %6637, %6633
  br label %6652

6641:                                             ; preds = %6625, %6622
  %6642 = load i32, ptr @test_count, align 4, !tbaa !5
  %6643 = icmp ne i32 %6642, 0
  br i1 %6643, label %6644, label %6648

6644:                                             ; preds = %6641
  %6645 = load ptr, ptr @stdout, align 8, !tbaa !9
  %6646 = load i32, ptr @test_count, align 4, !tbaa !5
  %6647 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6645, ptr noundef @.str.89, i32 noundef %6646) #10
  br label %6651

6648:                                             ; preds = %6641
  %6649 = load ptr, ptr @stdout, align 8, !tbaa !9
  %6650 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6649, ptr noundef @.str.90) #10
  br label %6651

6651:                                             ; preds = %6648, %6644
  br label %6652

6652:                                             ; preds = %6651, %6640
  store i32 0, ptr %3, align 4
  store i32 1, ptr %126, align 4
  br label %6657

6653:                                             ; No predecessors!
  br label %6654

6654:                                             ; preds = %6653
  br label %6655

6655:                                             ; preds = %6654
  br label %6656

6656:                                             ; preds = %6655
  store i32 0, ptr %126, align 4
  br label %6657

6657:                                             ; preds = %6656, %6652
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #10
  %6658 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %9)
  %6659 = getelementptr inbounds %struct.s2n_result, ptr %192, i32 0, i32 0
  store i32 %6658, ptr %6659, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  %6660 = load i32, ptr %126, align 4
  switch i32 %6660, label %6663 [
    i32 0, label %6661
    i32 1, label %6661
  ]

6661:                                             ; preds = %6657, %6657
  %6662 = load i32, ptr %3, align 4
  ret i32 %6662

6663:                                             ; preds = %6657
  unreachable
}

declare i32 @fflush(ptr noundef) #3

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #3

declare i32 @s2n_enable_atexit() #3

declare i32 @s2n_init() #3

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) #3

declare i32 @s2n_test_cert_chain_and_key_new(ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @s2n_extension_supported_iana_value_to_id(i16 noundef zeroext, ptr noundef) #3

declare void @s2n_debug_info_reset() #3

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

; 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 i32 @s2n_stuffer_init(ptr noundef, ptr noundef) #3

declare i32 @s2n_stuffer_write_uint16(ptr noundef, i16 noundef zeroext) #3

declare i32 @s2n_stuffer_reread(ptr noundef) #3

declare ptr @s2n_config_new() #3

declare i32 @s2n_config_ptr_free(ptr noundef) #3

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

declare i32 @s2n_config_set_cipher_preferences(ptr noundef, ptr noundef) #3

declare ptr @s2n_connection_new(i32 noundef) #3

declare i32 @s2n_connection_ptr_free(ptr noundef) #3

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

declare i32 @s2n_client_hello_send(ptr noundef) #3

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

declare i32 @s2n_client_hello_recv(ptr noundef) #3

declare i32 @s2n_client_hello_has_extension(ptr noundef, i16 noundef zeroext, ptr noundef) #3

declare i32 @s2n_get_public_random_data(ptr noundef) #3

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

declare i32 @s2n_stuffer_init_written(ptr noundef, ptr noundef) #3

declare i32 @s2n_config_set_unsafe_for_testing(ptr noundef) #3

declare i32 @s2n_config_set_client_hello_cb(ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @s2n_io_pair_close(ptr noundef) #3

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) #3

declare i32 @s2n_connection_set_io_pair(ptr noundef, ptr noundef) #3

declare i32 @s2n_negotiate_until_message(ptr noundef, ptr noundef, i32 noundef) #3

declare i32 @s2n_negotiate_test_server_and_client(ptr noundef, ptr noundef) #3

declare i32 @s2n_cleanup() #3

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { "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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 = !{!7, !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!19, !17, i64 24}
!19 = !{!"", !20, i64 0, !17, i64 24, !17, i64 26, !6, i64 28}
!20 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!21 = !{i64 0, i64 8, !9, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 1, !15}
!22 = !{!23, !6, i64 2044}
!23 = !{!"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, !24, i64 160, !25, i64 168, !25, 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, !26, i64 240, !10, i64 632, !10, i64 640, !27, i64 648, !32, i64 1144, !35, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !37, i64 1776, !37, i64 1816, !37, i64 1856, !37, i64 1896, !6, i64 1936, !25, i64 1944, !7, i64 1952, !37, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !38, i64 2004, !38, i64 2008, !39, i64 2016, !17, i64 2208, !6, i64 2212, !17, i64 2216, !25, i64 2224, !7, i64 2232, !25, i64 2240, !25, i64 2248, !25, i64 2256, !38, i64 2264, !38, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !20, i64 2792, !6, i64 2816, !20, i64 2824, !20, i64 2848, !20, i64 2872, !41, i64 2896, !43, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !20, i64 3784, !6, i64 3808, !45, i64 3816, !7, i64 3848, !37, i64 3992, !20, i64 4032, !20, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !17, i64 4084, !17, i64 4086, !6, i64 4088, !6, i64 4092, !20, i64 4096, !6, i64 4120, !46, i64 4128, !38, i64 4176, !7, i64 4180, !7, i64 4181}
!24 = !{!"s2n_timer", !25, i64 0}
!25 = !{!"long", !7, i64 0}
!26 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!27 = !{!"s2n_kex_parameters", !28, i64 0, !29, i64 8, !7, i64 24, !29, i64 56, !30, i64 72, !30, i64 184, !7, i64 296, !31, i64 360, !20, i64 448, !20, i64 472}
!28 = !{!"s2n_dh_params", !10, i64 0}
!29 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!30 = !{!"s2n_kem_group_params", !10, i64 0, !31, i64 8, !29, i64 96}
!31 = !{!"s2n_kem_params", !10, i64 0, !20, i64 8, !20, i64 32, !20, i64 56, !12, i64 80}
!32 = !{!"s2n_handshake_parameters", !33, i64 0, !33, i64 48, !20, i64 96, !6, i64 120, !34, 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}
!33 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!34 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!35 = !{!"s2n_psk_parameters", !6, i64 0, !36, i64 8, !17, i64 40, !17, i64 42, !10, i64 48, !6, i64 56}
!36 = !{!"s2n_array", !20, i64 0, !6, i64 24, !6, i64 28}
!37 = !{!"s2n_stuffer", !20, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!38 = !{!"", !6, i64 0}
!39 = !{!"s2n_handshake", !37, 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, !40, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!40 = !{!"s2n_offered_early_data", !10, i64 0}
!41 = !{!"s2n_client_hello", !20, i64 0, !42, i64 24, !20, i64 728, !20, i64 752, !20, 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}
!42 = !{!"", !7, i64 0, !20, i64 672, !17, i64 696}
!43 = !{!"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, !44, i64 48, !12, i64 52}
!44 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!45 = !{!"s2n_ticket_fields", !20, i64 0, !6, i64 24}
!46 = !{!"s2n_post_handshake", !37, i64 0, !7, i64 40}
!47 = !{!23, !6, i64 2040}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!25, !25, i64 0}
!51 = distinct !{!51, !49}
!52 = distinct !{!52, !49}
!53 = !{!54, !10, i64 8}
!54 = !{!"", !17, i64 0, !6, i64 2, !17, i64 4, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32}
!55 = !{!56, !10, i64 0}
!56 = !{!"s2n_client_hello_context", !10, i64 0, !6, i64 8}
!57 = !{!56, !6, i64 8}
!58 = distinct !{!58, !49}


; 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_extension_type = type { i16, i8, i16, ptr, ptr, ptr, 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_blob = type { ptr, i32, i32, i8 }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_client_hello_context = type { ptr, i32 }
%struct.s2n_test_io_pair = type { i32, i32 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stderr = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [101 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [47 x i8], align 1
@stdout = external local_unnamed_addr global ptr, align 8
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [200 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [123 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [128 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [171 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [141 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [182 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [45 x i8], align 1
@__const.main.policies = external hidden unnamed_addr constant [7 x ptr], align 16
@.str.64 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [124 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [177 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [106 x i8], align 1
@s2n_client_supported_groups_extension = external local_unnamed_addr constant %struct.s2n_extension_type, align 8
@.str.82 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

declare ptr @s2n_connection_get_client_hello(ptr noundef) local_unnamed_addr #3

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

declare i32 @s2n_client_hello_get_supported_groups(ptr noundef, ptr noundef, i16 noundef zeroext, ptr noundef) local_unnamed_addr #3

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

declare i32 @s2n_stuffer_read_uint16(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca ptr, align 8
  %4 = alloca i8, align 1
  %5 = alloca %struct.s2n_client_hello, align 8
  %6 = alloca [16 x i16], align 16
  %7 = alloca i16, align 2
  %8 = alloca %struct.s2n_client_hello, align 8
  %9 = alloca [34 x i8], align 16
  %10 = alloca %struct.s2n_blob, align 8
  %11 = alloca %struct.s2n_stuffer, align 8
  %12 = alloca [16 x i16], align 16
  %13 = alloca i16, align 2
  %14 = alloca %struct.s2n_client_hello, align 8
  %15 = alloca [16 x i16], align 16
  %16 = alloca i16, align 2
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i8, align 1
  %21 = alloca [16 x i16], align 16
  %22 = alloca i16, align 2
  %23 = alloca %struct.s2n_client_hello, align 8
  %24 = alloca [34 x i8], align 16
  %25 = alloca %struct.s2n_blob, align 8
  %26 = alloca %struct.s2n_stuffer, align 8
  %27 = alloca [16 x i16], align 16
  %28 = alloca i16, align 2
  %29 = alloca [34 x i8], align 16
  %30 = alloca %struct.s2n_blob, align 8
  %31 = alloca %struct.s2n_stuffer, align 8
  %32 = alloca [16 x i16], align 16
  %33 = alloca i16, align 2
  %34 = alloca [34 x i8], align 16
  %35 = alloca %struct.s2n_blob, align 8
  %36 = alloca %struct.s2n_stuffer, align 8
  %37 = alloca [16 x i16], align 16
  %38 = alloca i16, align 2
  %39 = alloca %struct.s2n_client_hello, align 8
  %40 = alloca [32 x i8], align 16
  %41 = alloca %struct.s2n_blob, align 8
  %42 = alloca [34 x i8], align 16
  %43 = alloca %struct.s2n_blob, align 8
  %44 = alloca %struct.s2n_stuffer, align 8
  %45 = alloca [16 x i16], align 16
  %46 = alloca i16, align 2
  %47 = alloca %struct.s2n_stuffer, align 8
  %48 = alloca i16, align 2
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca %struct.s2n_client_hello_context, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca %struct.s2n_test_io_pair, align 8
  %55 = alloca i32, align 4
  %56 = alloca [34 x i8], align 16
  %57 = alloca %struct.s2n_blob, align 8
  %58 = alloca %struct.s2n_stuffer, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %59 = load ptr, ptr @stdout, align 8, !tbaa !9
  %60 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %59, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.2) #11
  %61 = load ptr, ptr @stdout, align 8, !tbaa !9
  %62 = tail call i32 @fflush(ptr noundef %61)
  %63 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #11
  %64 = icmp eq i32 %63, -1
  br i1 %64, label %65, label %89

65:                                               ; preds = %2
  %66 = tail call ptr @__errno_location() #12
  %67 = load i32, ptr %66, align 4, !tbaa !5
  %68 = load ptr, ptr @stderr, align 8, !tbaa !9
  %69 = tail call i32 @s2n_print_stacktrace(ptr noundef %68) #11
  %70 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %71 = trunc nuw i8 %70 to i1
  br i1 %71, label %72, label %76

72:                                               ; preds = %65
  %73 = load ptr, ptr @stderr, align 8, !tbaa !9
  %74 = tail call i32 @fileno(ptr noundef %73) #11
  %75 = tail call i32 @isatty(i32 noundef %74) #11
  %.not361 = icmp eq i32 %75, 0
  br i1 %.not361, label %76, label %77

76:                                               ; preds = %72, %65
  br label %77

77:                                               ; preds = %72, %76
  %.str.4.sink = phi ptr [ @.str.4, %76 ], [ @.str, %72 ]
  store i32 %67, ptr %66, align 4, !tbaa !5
  %78 = load ptr, ptr @stderr, align 8, !tbaa !9
  %79 = load i32, ptr @test_count, align 4, !tbaa !5
  %80 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %81 = load i32, ptr %80, align 4, !tbaa !5
  %82 = tail call ptr @s2n_strerror(i32 noundef %81, ptr noundef nonnull @.str.3) #11
  %83 = load i32, ptr %80, align 4, !tbaa !5
  %84 = tail call ptr @s2n_strerror_debug(i32 noundef %83, ptr noundef nonnull @.str.3) #11
  %85 = load i32, ptr %66, align 4, !tbaa !5
  %86 = tail call ptr @strerror(i32 noundef %85) #11
  %87 = load i32, ptr %66, align 4, !tbaa !5
  %88 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %78, ptr noundef nonnull %.str.4.sink, i32 noundef %79, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.2, i32 noundef 75, ptr noundef %82, ptr noundef %84, ptr noundef %86, i32 noundef %87) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

89:                                               ; preds = %2
  %90 = load i32, ptr @test_count, align 4, !tbaa !5
  %91 = add nsw i32 %90, 1
  store i32 %91, ptr @test_count, align 4, !tbaa !5
  %92 = tail call i32 @s2n_enable_atexit() #11
  %93 = icmp eq i32 %92, -1
  br i1 %93, label %94, label %118

94:                                               ; preds = %89
  %95 = tail call ptr @__errno_location() #12
  %96 = load i32, ptr %95, align 4, !tbaa !5
  %97 = load ptr, ptr @stderr, align 8, !tbaa !9
  %98 = tail call i32 @s2n_print_stacktrace(ptr noundef %97) #11
  %99 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %100 = trunc nuw i8 %99 to i1
  br i1 %100, label %101, label %105

101:                                              ; preds = %94
  %102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %103 = tail call i32 @fileno(ptr noundef %102) #11
  %104 = tail call i32 @isatty(i32 noundef %103) #11
  %.not360 = icmp eq i32 %104, 0
  br i1 %.not360, label %105, label %106

105:                                              ; preds = %101, %94
  br label %106

106:                                              ; preds = %101, %105
  %.str.4.sink382 = phi ptr [ @.str.4, %105 ], [ @.str, %101 ]
  store i32 %96, ptr %95, align 4, !tbaa !5
  %107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %108 = load i32, ptr @test_count, align 4, !tbaa !5
  %109 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = tail call ptr @s2n_strerror(i32 noundef %110, ptr noundef nonnull @.str.3) #11
  %112 = load i32, ptr %109, align 4, !tbaa !5
  %113 = tail call ptr @s2n_strerror_debug(i32 noundef %112, ptr noundef nonnull @.str.3) #11
  %114 = load i32, ptr %95, align 4, !tbaa !5
  %115 = tail call ptr @strerror(i32 noundef %114) #11
  %116 = load i32, ptr %95, align 4, !tbaa !5
  %117 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %107, ptr noundef nonnull %.str.4.sink382, i32 noundef %108, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.2, i32 noundef 75, ptr noundef %111, ptr noundef %113, ptr noundef %115, i32 noundef %116) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

118:                                              ; preds = %89
  %119 = tail call i32 @s2n_init() #11
  %120 = icmp eq i32 %119, -1
  br i1 %120, label %121, label %145

121:                                              ; preds = %118
  %122 = tail call ptr @__errno_location() #12
  %123 = load i32, ptr %122, align 4, !tbaa !5
  %124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %125 = tail call i32 @s2n_print_stacktrace(ptr noundef %124) #11
  %126 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %127 = trunc nuw i8 %126 to i1
  br i1 %127, label %128, label %132

128:                                              ; preds = %121
  %129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %130 = tail call i32 @fileno(ptr noundef %129) #11
  %131 = tail call i32 @isatty(i32 noundef %130) #11
  %.not359 = icmp eq i32 %131, 0
  br i1 %.not359, label %132, label %133

132:                                              ; preds = %128, %121
  br label %133

133:                                              ; preds = %128, %132
  %.str.4.sink393 = phi ptr [ @.str.4, %132 ], [ @.str, %128 ]
  store i32 %123, ptr %122, align 4, !tbaa !5
  %134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %135 = load i32, ptr @test_count, align 4, !tbaa !5
  %136 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %138 = tail call ptr @s2n_strerror(i32 noundef %137, ptr noundef nonnull @.str.3) #11
  %139 = load i32, ptr %136, align 4, !tbaa !5
  %140 = tail call ptr @s2n_strerror_debug(i32 noundef %139, ptr noundef nonnull @.str.3) #11
  %141 = load i32, ptr %122, align 4, !tbaa !5
  %142 = tail call ptr @strerror(i32 noundef %141) #11
  %143 = load i32, ptr %122, align 4, !tbaa !5
  %144 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %134, ptr noundef nonnull %.str.4.sink393, i32 noundef %135, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.2, i32 noundef 75, ptr noundef %138, ptr noundef %140, ptr noundef %142, i32 noundef %143) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

145:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #11
  store ptr null, ptr %3, align 8, !tbaa !9
  %146 = load i32, ptr @test_count, align 4, !tbaa !5
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr @test_count, align 4, !tbaa !5
  %148 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %3, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17) #11
  %149 = icmp eq i32 %148, -1
  br i1 %149, label %150, label %174

150:                                              ; preds = %145
  %151 = tail call ptr @__errno_location() #12
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = load ptr, ptr @stderr, align 8, !tbaa !9
  %154 = call i32 @s2n_print_stacktrace(ptr noundef %153) #11
  %155 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %156 = trunc nuw i8 %155 to i1
  br i1 %156, label %157, label %161

157:                                              ; preds = %150
  %158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %159 = call i32 @fileno(ptr noundef %158) #11
  %160 = call i32 @isatty(i32 noundef %159) #11
  %.not358 = icmp eq i32 %160, 0
  br i1 %.not358, label %161, label %162

161:                                              ; preds = %157, %150
  br label %162

162:                                              ; preds = %157, %161
  %.str.4.sink404 = phi ptr [ @.str.4, %161 ], [ @.str, %157 ]
  store i32 %152, ptr %151, align 4, !tbaa !5
  %163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %164 = load i32, ptr @test_count, align 4, !tbaa !5
  %165 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = call ptr @s2n_strerror(i32 noundef %166, ptr noundef nonnull @.str.3) #11
  %168 = load i32, ptr %165, align 4, !tbaa !5
  %169 = call ptr @s2n_strerror_debug(i32 noundef %168, ptr noundef nonnull @.str.3) #11
  %170 = load i32, ptr %151, align 4, !tbaa !5
  %171 = call ptr @strerror(i32 noundef %170) #11
  %172 = load i32, ptr %151, align 4, !tbaa !5
  %173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %163, ptr noundef nonnull %.str.4.sink404, i32 noundef %164, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.2, i32 noundef 79, ptr noundef %167, ptr noundef %169, ptr noundef %171, i32 noundef %172) #13
  call void @exit(i32 noundef 1) #14
  unreachable

174:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #11
  store i8 0, ptr %4, align 1, !tbaa !15
  %175 = load i32, ptr @test_count, align 4, !tbaa !5
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr @test_count, align 4, !tbaa !5
  %177 = call i32 @s2n_extension_supported_iana_value_to_id(i16 noundef zeroext 10, ptr noundef nonnull %4) #11
  %178 = icmp eq i32 %177, -1
  br i1 %178, label %179, label %203

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

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

190:                                              ; preds = %186, %179
  br label %191

191:                                              ; preds = %186, %190
  %.str.4.sink415 = phi ptr [ @.str.4, %190 ], [ @.str, %186 ]
  store i32 %181, ptr %180, align 4, !tbaa !5
  %192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %193 = load i32, ptr @test_count, align 4, !tbaa !5
  %194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %195 = load i32, ptr %194, align 4, !tbaa !5
  %196 = call ptr @s2n_strerror(i32 noundef %195, ptr noundef nonnull @.str.3) #11
  %197 = load i32, ptr %194, align 4, !tbaa !5
  %198 = call ptr @s2n_strerror_debug(i32 noundef %197, ptr noundef nonnull @.str.3) #11
  %199 = load i32, ptr %180, align 4, !tbaa !5
  %200 = call ptr @strerror(i32 noundef %199) #11
  %201 = load i32, ptr %180, align 4, !tbaa !5
  %202 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %192, ptr noundef nonnull %.str.4.sink415, i32 noundef %193, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.2, i32 noundef 82, ptr noundef %196, ptr noundef %198, ptr noundef %200, i32 noundef %201) #13
  call void @exit(i32 noundef 1) #14
  unreachable

203:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 808, ptr nonnull %5) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(808) %5, i8 0, i64 808, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %6, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %7) #11
  store i16 0, ptr %7, align 2, !tbaa !16
  %204 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef null, ptr noundef nonnull %6, i16 noundef zeroext 16, ptr noundef nonnull %7) #11
  %205 = load i32, ptr @test_count, align 4, !tbaa !5
  %206 = add nsw i32 %205, 1
  store i32 %206, ptr @test_count, align 4, !tbaa !5
  %207 = icmp eq i32 %204, -1
  br i1 %207, label %232, label %208

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

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

219:                                              ; preds = %215, %208
  br label %220

220:                                              ; preds = %215, %219
  %.str.4.sink426 = phi ptr [ @.str.4, %219 ], [ @.str, %215 ]
  store i32 %210, ptr %209, align 4, !tbaa !5
  %221 = load ptr, ptr @stderr, align 8, !tbaa !9
  %222 = load i32, ptr @test_count, align 4, !tbaa !5
  %223 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = call ptr @s2n_strerror(i32 noundef %224, ptr noundef nonnull @.str.3) #11
  %226 = load i32, ptr %223, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror_debug(i32 noundef %226, ptr noundef nonnull @.str.3) #11
  %228 = load i32, ptr %209, align 4, !tbaa !5
  %229 = call ptr @strerror(i32 noundef %228) #11
  %230 = load i32, ptr %209, align 4, !tbaa !5
  %231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %221, ptr noundef nonnull %.str.4.sink426, i32 noundef %222, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 92, ptr noundef %225, ptr noundef %227, ptr noundef %229, i32 noundef %230) #13
  call void @exit(i32 noundef 1) #14
  unreachable

232:                                              ; preds = %203
  %233 = add nsw i32 %205, 2
  store i32 %233, ptr @test_count, align 4, !tbaa !5
  %234 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %236 = icmp eq i32 %235, 402653193
  br i1 %236, label %260, label %237

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

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

248:                                              ; preds = %244, %237
  br label %249

249:                                              ; preds = %244, %248
  %.str.4.sink437 = phi ptr [ @.str.4, %248 ], [ @.str, %244 ]
  store i32 %239, ptr %238, align 4, !tbaa !5
  %250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %251 = load i32, ptr @test_count, align 4, !tbaa !5
  %252 = load i32, ptr %234, align 4, !tbaa !5
  %253 = call ptr @s2n_strerror(i32 noundef %252, ptr noundef nonnull @.str.3) #11
  %254 = load i32, ptr %234, align 4, !tbaa !5
  %255 = call ptr @s2n_strerror_debug(i32 noundef %254, ptr noundef nonnull @.str.3) #11
  %256 = load i32, ptr %238, align 4, !tbaa !5
  %257 = call ptr @strerror(i32 noundef %256) #11
  %258 = load i32, ptr %238, align 4, !tbaa !5
  %259 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %250, ptr noundef nonnull %.str.4.sink437, i32 noundef %251, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 92, ptr noundef %253, ptr noundef %255, ptr noundef %257, i32 noundef %258) #13
  call void @exit(i32 noundef 1) #14
  unreachable

260:                                              ; preds = %232
  %261 = add nsw i32 %205, 3
  store i32 %261, ptr @test_count, align 4, !tbaa !5
  %262 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.3) #11
  %263 = icmp eq ptr %262, null
  br i1 %263, label %264, label %287

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

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

275:                                              ; preds = %271, %264
  br label %276

276:                                              ; preds = %271, %275
  %.str.4.sink446 = phi ptr [ @.str.4, %275 ], [ @.str, %271 ]
  store i32 %266, ptr %265, align 4, !tbaa !5
  %277 = load ptr, ptr @stderr, align 8, !tbaa !9
  %278 = load i32, ptr @test_count, align 4, !tbaa !5
  %279 = load i32, ptr %234, align 4, !tbaa !5
  %280 = call ptr @s2n_strerror(i32 noundef %279, ptr noundef nonnull @.str.3) #11
  %281 = load i32, ptr %234, align 4, !tbaa !5
  %282 = call ptr @s2n_strerror_debug(i32 noundef %281, ptr noundef nonnull @.str.3) #11
  %283 = load i32, ptr %265, align 4, !tbaa !5
  %284 = call ptr @strerror(i32 noundef %283) #11
  %285 = load i32, ptr %265, align 4, !tbaa !5
  %286 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %277, ptr noundef nonnull %.str.4.sink446, i32 noundef %278, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 92, ptr noundef %280, ptr noundef %282, ptr noundef %284, i32 noundef %285) #13
  call void @exit(i32 noundef 1) #14
  unreachable

287:                                              ; preds = %260
  store i32 0, ptr %234, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  %288 = tail call ptr @__errno_location() #12
  store i32 0, ptr %288, align 4, !tbaa !5
  %289 = load i32, ptr @test_count, align 4, !tbaa !5
  %290 = add nsw i32 %289, 1
  store i32 %290, ptr @test_count, align 4, !tbaa !5
  %291 = load i16, ptr %7, align 2, !tbaa !16
  %292 = icmp eq i16 %291, 0
  br i1 %292, label %315, label %293

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

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

303:                                              ; preds = %299, %293
  br label %304

304:                                              ; preds = %299, %303
  %.str.4.sink455 = phi ptr [ @.str.4, %303 ], [ @.str, %299 ]
  store i32 %294, ptr %288, align 4, !tbaa !5
  %305 = load ptr, ptr @stderr, align 8, !tbaa !9
  %306 = load i32, ptr @test_count, align 4, !tbaa !5
  %307 = load i32, ptr %234, align 4, !tbaa !5
  %308 = call ptr @s2n_strerror(i32 noundef %307, ptr noundef nonnull @.str.3) #11
  %309 = load i32, ptr %234, align 4, !tbaa !5
  %310 = call ptr @s2n_strerror_debug(i32 noundef %309, ptr noundef nonnull @.str.3) #11
  %311 = load i32, ptr %288, align 4, !tbaa !5
  %312 = call ptr @strerror(i32 noundef %311) #11
  %313 = load i32, ptr %288, align 4, !tbaa !5
  %314 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %305, ptr noundef nonnull %.str.4.sink455, i32 noundef %306, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 93, ptr noundef %308, ptr noundef %310, ptr noundef %312, i32 noundef %313) #13
  call void @exit(i32 noundef 1) #14
  unreachable

315:                                              ; preds = %287
  %316 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %5, ptr noundef null, i16 noundef zeroext 16, ptr noundef nonnull %7) #11
  %317 = load i32, ptr @test_count, align 4, !tbaa !5
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr @test_count, align 4, !tbaa !5
  %319 = icmp eq i32 %316, -1
  br i1 %319, label %342, label %320

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

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

330:                                              ; preds = %326, %320
  br label %331

331:                                              ; preds = %326, %330
  %.str.4.sink464 = phi ptr [ @.str.4, %330 ], [ @.str, %326 ]
  store i32 %321, ptr %288, align 4, !tbaa !5
  %332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %333 = load i32, ptr @test_count, align 4, !tbaa !5
  %334 = load i32, ptr %234, align 4, !tbaa !5
  %335 = call ptr @s2n_strerror(i32 noundef %334, ptr noundef nonnull @.str.3) #11
  %336 = load i32, ptr %234, align 4, !tbaa !5
  %337 = call ptr @s2n_strerror_debug(i32 noundef %336, ptr noundef nonnull @.str.3) #11
  %338 = load i32, ptr %288, align 4, !tbaa !5
  %339 = call ptr @strerror(i32 noundef %338) #11
  %340 = load i32, ptr %288, align 4, !tbaa !5
  %341 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %332, ptr noundef nonnull %.str.4.sink464, i32 noundef %333, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 97, ptr noundef %335, ptr noundef %337, ptr noundef %339, i32 noundef %340) #13
  call void @exit(i32 noundef 1) #14
  unreachable

342:                                              ; preds = %315
  %343 = add nsw i32 %317, 2
  store i32 %343, ptr @test_count, align 4, !tbaa !5
  %344 = load i32, ptr %234, align 4, !tbaa !5
  %345 = icmp eq i32 %344, 402653193
  br i1 %345, label %368, label %346

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

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

356:                                              ; preds = %352, %346
  br label %357

357:                                              ; preds = %352, %356
  %.str.4.sink473 = phi ptr [ @.str.4, %356 ], [ @.str, %352 ]
  store i32 %347, ptr %288, align 4, !tbaa !5
  %358 = load ptr, ptr @stderr, align 8, !tbaa !9
  %359 = load i32, ptr @test_count, align 4, !tbaa !5
  %360 = load i32, ptr %234, align 4, !tbaa !5
  %361 = call ptr @s2n_strerror(i32 noundef %360, ptr noundef nonnull @.str.3) #11
  %362 = load i32, ptr %234, align 4, !tbaa !5
  %363 = call ptr @s2n_strerror_debug(i32 noundef %362, ptr noundef nonnull @.str.3) #11
  %364 = load i32, ptr %288, align 4, !tbaa !5
  %365 = call ptr @strerror(i32 noundef %364) #11
  %366 = load i32, ptr %288, align 4, !tbaa !5
  %367 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %358, ptr noundef nonnull %.str.4.sink473, i32 noundef %359, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 97, ptr noundef %361, ptr noundef %363, ptr noundef %365, i32 noundef %366) #13
  call void @exit(i32 noundef 1) #14
  unreachable

368:                                              ; preds = %342
  %369 = add nsw i32 %317, 3
  store i32 %369, ptr @test_count, align 4, !tbaa !5
  %370 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.3) #11
  %371 = icmp eq ptr %370, null
  br i1 %371, label %372, label %394

372:                                              ; preds = %368
  %373 = load i32, ptr %288, align 4, !tbaa !5
  %374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %375 = call i32 @s2n_print_stacktrace(ptr noundef %374) #11
  %376 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %377 = trunc nuw i8 %376 to i1
  br i1 %377, label %378, label %382

378:                                              ; preds = %372
  %379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %380 = call i32 @fileno(ptr noundef %379) #11
  %381 = call i32 @isatty(i32 noundef %380) #11
  %.not355 = icmp eq i32 %381, 0
  br i1 %.not355, label %382, label %383

382:                                              ; preds = %378, %372
  br label %383

383:                                              ; preds = %378, %382
  %.str.4.sink482 = phi ptr [ @.str.4, %382 ], [ @.str, %378 ]
  store i32 %373, ptr %288, align 4, !tbaa !5
  %384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %385 = load i32, ptr @test_count, align 4, !tbaa !5
  %386 = load i32, ptr %234, align 4, !tbaa !5
  %387 = call ptr @s2n_strerror(i32 noundef %386, ptr noundef nonnull @.str.3) #11
  %388 = load i32, ptr %234, align 4, !tbaa !5
  %389 = call ptr @s2n_strerror_debug(i32 noundef %388, ptr noundef nonnull @.str.3) #11
  %390 = load i32, ptr %288, align 4, !tbaa !5
  %391 = call ptr @strerror(i32 noundef %390) #11
  %392 = load i32, ptr %288, align 4, !tbaa !5
  %393 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %384, ptr noundef nonnull %.str.4.sink482, i32 noundef %385, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 97, ptr noundef %387, ptr noundef %389, ptr noundef %391, i32 noundef %392) #13
  call void @exit(i32 noundef 1) #14
  unreachable

394:                                              ; preds = %368
  store i32 0, ptr %234, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %288, align 4, !tbaa !5
  %395 = load i32, ptr @test_count, align 4, !tbaa !5
  %396 = add nsw i32 %395, 1
  store i32 %396, ptr @test_count, align 4, !tbaa !5
  %397 = load i16, ptr %7, align 2, !tbaa !16
  %398 = icmp eq i16 %397, 0
  br i1 %398, label %421, label %399

399:                                              ; preds = %394
  %400 = load i32, ptr %288, align 4, !tbaa !5
  %401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %402 = call i32 @s2n_print_stacktrace(ptr noundef %401) #11
  %403 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %404 = trunc nuw i8 %403 to i1
  br i1 %404, label %405, label %409

405:                                              ; preds = %399
  %406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %407 = call i32 @fileno(ptr noundef %406) #11
  %408 = call i32 @isatty(i32 noundef %407) #11
  %.not263 = icmp eq i32 %408, 0
  br i1 %.not263, label %409, label %410

409:                                              ; preds = %405, %399
  br label %410

410:                                              ; preds = %405, %409
  %.str.4.sink491 = phi ptr [ @.str.4, %409 ], [ @.str, %405 ]
  store i32 %400, ptr %288, align 4, !tbaa !5
  %411 = load ptr, ptr @stderr, align 8, !tbaa !9
  %412 = load i32, ptr @test_count, align 4, !tbaa !5
  %413 = load i32, ptr %234, align 4, !tbaa !5
  %414 = call ptr @s2n_strerror(i32 noundef %413, ptr noundef nonnull @.str.3) #11
  %415 = load i32, ptr %234, align 4, !tbaa !5
  %416 = call ptr @s2n_strerror_debug(i32 noundef %415, ptr noundef nonnull @.str.3) #11
  %417 = load i32, ptr %288, align 4, !tbaa !5
  %418 = call ptr @strerror(i32 noundef %417) #11
  %419 = load i32, ptr %288, align 4, !tbaa !5
  %420 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %411, ptr noundef nonnull %.str.4.sink491, i32 noundef %412, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 98, ptr noundef %414, ptr noundef %416, ptr noundef %418, i32 noundef %419) #13
  call void @exit(i32 noundef 1) #14
  unreachable

421:                                              ; preds = %394
  %422 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %5, ptr noundef nonnull %6, i16 noundef zeroext 16, ptr noundef null) #11
  %423 = load i32, ptr @test_count, align 4, !tbaa !5
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr @test_count, align 4, !tbaa !5
  %425 = icmp eq i32 %422, -1
  br i1 %425, label %448, label %426

426:                                              ; preds = %421
  %427 = load i32, ptr %288, align 4, !tbaa !5
  %428 = load ptr, ptr @stderr, align 8, !tbaa !9
  %429 = call i32 @s2n_print_stacktrace(ptr noundef %428) #11
  %430 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %431 = trunc nuw i8 %430 to i1
  br i1 %431, label %432, label %436

432:                                              ; preds = %426
  %433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %434 = call i32 @fileno(ptr noundef %433) #11
  %435 = call i32 @isatty(i32 noundef %434) #11
  %.not264 = icmp eq i32 %435, 0
  br i1 %.not264, label %436, label %437

436:                                              ; preds = %432, %426
  br label %437

437:                                              ; preds = %432, %436
  %.str.4.sink500 = phi ptr [ @.str.4, %436 ], [ @.str, %432 ]
  store i32 %427, ptr %288, align 4, !tbaa !5
  %438 = load ptr, ptr @stderr, align 8, !tbaa !9
  %439 = load i32, ptr @test_count, align 4, !tbaa !5
  %440 = load i32, ptr %234, align 4, !tbaa !5
  %441 = call ptr @s2n_strerror(i32 noundef %440, ptr noundef nonnull @.str.3) #11
  %442 = load i32, ptr %234, align 4, !tbaa !5
  %443 = call ptr @s2n_strerror_debug(i32 noundef %442, ptr noundef nonnull @.str.3) #11
  %444 = load i32, ptr %288, align 4, !tbaa !5
  %445 = call ptr @strerror(i32 noundef %444) #11
  %446 = load i32, ptr %288, align 4, !tbaa !5
  %447 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %438, ptr noundef nonnull %.str.4.sink500, i32 noundef %439, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 101, ptr noundef %441, ptr noundef %443, ptr noundef %445, i32 noundef %446) #13
  call void @exit(i32 noundef 1) #14
  unreachable

448:                                              ; preds = %421
  %449 = add nsw i32 %423, 2
  store i32 %449, ptr @test_count, align 4, !tbaa !5
  %450 = load i32, ptr %234, align 4, !tbaa !5
  %451 = icmp eq i32 %450, 402653193
  br i1 %451, label %474, label %452

452:                                              ; preds = %448
  %453 = load i32, ptr %288, align 4, !tbaa !5
  %454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %455 = call i32 @s2n_print_stacktrace(ptr noundef %454) #11
  %456 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %457 = trunc nuw i8 %456 to i1
  br i1 %457, label %458, label %462

458:                                              ; preds = %452
  %459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %460 = call i32 @fileno(ptr noundef %459) #11
  %461 = call i32 @isatty(i32 noundef %460) #11
  %.not265 = icmp eq i32 %461, 0
  br i1 %.not265, label %462, label %463

462:                                              ; preds = %458, %452
  br label %463

463:                                              ; preds = %458, %462
  %.str.4.sink509 = phi ptr [ @.str.4, %462 ], [ @.str, %458 ]
  store i32 %453, ptr %288, align 4, !tbaa !5
  %464 = load ptr, ptr @stderr, align 8, !tbaa !9
  %465 = load i32, ptr @test_count, align 4, !tbaa !5
  %466 = load i32, ptr %234, align 4, !tbaa !5
  %467 = call ptr @s2n_strerror(i32 noundef %466, ptr noundef nonnull @.str.3) #11
  %468 = load i32, ptr %234, align 4, !tbaa !5
  %469 = call ptr @s2n_strerror_debug(i32 noundef %468, ptr noundef nonnull @.str.3) #11
  %470 = load i32, ptr %288, align 4, !tbaa !5
  %471 = call ptr @strerror(i32 noundef %470) #11
  %472 = load i32, ptr %288, align 4, !tbaa !5
  %473 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %464, ptr noundef nonnull %.str.4.sink509, i32 noundef %465, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 101, ptr noundef %467, ptr noundef %469, ptr noundef %471, i32 noundef %472) #13
  call void @exit(i32 noundef 1) #14
  unreachable

474:                                              ; preds = %448
  %475 = add nsw i32 %423, 3
  store i32 %475, ptr @test_count, align 4, !tbaa !5
  %476 = call ptr @s2n_strerror_debug(i32 noundef 402653193, ptr noundef nonnull @.str.3) #11
  %477 = icmp eq ptr %476, null
  br i1 %477, label %478, label %500

478:                                              ; preds = %474
  %479 = load i32, ptr %288, align 4, !tbaa !5
  %480 = load ptr, ptr @stderr, align 8, !tbaa !9
  %481 = call i32 @s2n_print_stacktrace(ptr noundef %480) #11
  %482 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %483 = trunc nuw i8 %482 to i1
  br i1 %483, label %484, label %488

484:                                              ; preds = %478
  %485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %486 = call i32 @fileno(ptr noundef %485) #11
  %487 = call i32 @isatty(i32 noundef %486) #11
  %.not354 = icmp eq i32 %487, 0
  br i1 %.not354, label %488, label %489

488:                                              ; preds = %484, %478
  br label %489

489:                                              ; preds = %484, %488
  %.str.4.sink518 = phi ptr [ @.str.4, %488 ], [ @.str, %484 ]
  store i32 %479, ptr %288, align 4, !tbaa !5
  %490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %491 = load i32, ptr @test_count, align 4, !tbaa !5
  %492 = load i32, ptr %234, align 4, !tbaa !5
  %493 = call ptr @s2n_strerror(i32 noundef %492, ptr noundef nonnull @.str.3) #11
  %494 = load i32, ptr %234, align 4, !tbaa !5
  %495 = call ptr @s2n_strerror_debug(i32 noundef %494, ptr noundef nonnull @.str.3) #11
  %496 = load i32, ptr %288, align 4, !tbaa !5
  %497 = call ptr @strerror(i32 noundef %496) #11
  %498 = load i32, ptr %288, align 4, !tbaa !5
  %499 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %490, ptr noundef nonnull %.str.4.sink518, i32 noundef %491, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 101, ptr noundef %493, ptr noundef %495, ptr noundef %497, i32 noundef %498) #13
  call void @exit(i32 noundef 1) #14
  unreachable

500:                                              ; preds = %474
  store i32 0, ptr %234, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %288, align 4, !tbaa !5
  %501 = load i32, ptr @test_count, align 4, !tbaa !5
  %502 = add nsw i32 %501, 1
  store i32 %502, ptr @test_count, align 4, !tbaa !5
  %503 = load i16, ptr %7, align 2, !tbaa !16
  %504 = icmp eq i16 %503, 0
  br i1 %504, label %527, label %505

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

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

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

516:                                              ; preds = %511, %515
  %.str.4.sink527 = phi ptr [ @.str.4, %515 ], [ @.str, %511 ]
  store i32 %506, ptr %288, align 4, !tbaa !5
  %517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %518 = load i32, ptr @test_count, align 4, !tbaa !5
  %519 = load i32, ptr %234, align 4, !tbaa !5
  %520 = call ptr @s2n_strerror(i32 noundef %519, ptr noundef nonnull @.str.3) #11
  %521 = load i32, ptr %234, align 4, !tbaa !5
  %522 = call ptr @s2n_strerror_debug(i32 noundef %521, ptr noundef nonnull @.str.3) #11
  %523 = load i32, ptr %288, align 4, !tbaa !5
  %524 = call ptr @strerror(i32 noundef %523) #11
  %525 = load i32, ptr %288, align 4, !tbaa !5
  %526 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %517, ptr noundef nonnull %.str.4.sink527, i32 noundef %518, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 102, ptr noundef %520, ptr noundef %522, ptr noundef %524, i32 noundef %525) #13
  call void @exit(i32 noundef 1) #14
  unreachable

527:                                              ; preds = %500
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 808, ptr nonnull %5) #11
  call void @llvm.lifetime.start.p0(i64 808, ptr nonnull %8) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(808) %8, i8 0, i64 808, i1 false)
  call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %9) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(34) %9, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false)
  %528 = add nsw i32 %501, 2
  store i32 %528, ptr @test_count, align 4, !tbaa !5
  %529 = call i32 @s2n_blob_init(ptr noundef nonnull %10, ptr noundef nonnull %9, i32 noundef 34) #11
  %530 = icmp eq i32 %529, -1
  br i1 %530, label %531, label %553

531:                                              ; preds = %527
  %532 = load i32, ptr %288, align 4, !tbaa !5
  %533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %534 = call i32 @s2n_print_stacktrace(ptr noundef %533) #11
  %535 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %536 = trunc nuw i8 %535 to i1
  br i1 %536, label %537, label %541

537:                                              ; preds = %531
  %538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %539 = call i32 @fileno(ptr noundef %538) #11
  %540 = call i32 @isatty(i32 noundef %539) #11
  %.not353 = icmp eq i32 %540, 0
  br i1 %.not353, label %541, label %542

541:                                              ; preds = %537, %531
  br label %542

542:                                              ; preds = %537, %541
  %.str.4.sink536 = phi ptr [ @.str.4, %541 ], [ @.str, %537 ]
  store i32 %532, ptr %288, align 4, !tbaa !5
  %543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %544 = load i32, ptr @test_count, align 4, !tbaa !5
  %545 = load i32, ptr %234, align 4, !tbaa !5
  %546 = call ptr @s2n_strerror(i32 noundef %545, ptr noundef nonnull @.str.3) #11
  %547 = load i32, ptr %234, align 4, !tbaa !5
  %548 = call ptr @s2n_strerror_debug(i32 noundef %547, ptr noundef nonnull @.str.3) #11
  %549 = load i32, ptr %288, align 4, !tbaa !5
  %550 = call ptr @strerror(i32 noundef %549) #11
  %551 = load i32, ptr %288, align 4, !tbaa !5
  %552 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %543, ptr noundef nonnull %.str.4.sink536, i32 noundef %544, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 111, ptr noundef %546, ptr noundef %548, ptr noundef %550, i32 noundef %551) #13
  call void @exit(i32 noundef 1) #14
  unreachable

553:                                              ; preds = %527
  %554 = getelementptr inbounds i8, ptr %8, i64 24
  %555 = load i8, ptr %4, align 1, !tbaa !15
  %556 = zext i8 %555 to i64
  %557 = getelementptr inbounds [21 x %struct.s2n_parsed_extension], ptr %554, i64 0, i64 %556
  %558 = getelementptr inbounds i8, ptr %557, i64 24
  store i16 10, ptr %558, align 8, !tbaa !18
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %557, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %11, i8 0, i64 40, i1 false)
  %559 = load i32, ptr @test_count, align 4, !tbaa !5
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr @test_count, align 4, !tbaa !5
  %561 = call i32 @s2n_stuffer_init(ptr noundef nonnull %11, ptr noundef nonnull %10) #11
  %562 = icmp eq i32 %561, -1
  br i1 %562, label %563, label %585

563:                                              ; preds = %553
  %564 = load i32, ptr %288, 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
  %.not352 = icmp eq i32 %572, 0
  br i1 %.not352, label %573, label %574

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

574:                                              ; preds = %569, %573
  %.str.4.sink545 = phi ptr [ @.str.4, %573 ], [ @.str, %569 ]
  store i32 %564, ptr %288, 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 %234, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror(i32 noundef %577, ptr noundef nonnull @.str.3) #11
  %579 = load i32, ptr %234, align 4, !tbaa !5
  %580 = call ptr @s2n_strerror_debug(i32 noundef %579, ptr noundef nonnull @.str.3) #11
  %581 = load i32, ptr %288, align 4, !tbaa !5
  %582 = call ptr @strerror(i32 noundef %581) #11
  %583 = load i32, ptr %288, align 4, !tbaa !5
  %584 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %575, ptr noundef nonnull %.str.4.sink545, i32 noundef %576, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 118, ptr noundef %578, ptr noundef %580, ptr noundef %582, i32 noundef %583) #13
  call void @exit(i32 noundef 1) #14
  unreachable

585:                                              ; preds = %553
  %586 = load i32, ptr @test_count, align 4, !tbaa !5
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr @test_count, align 4, !tbaa !5
  %588 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %11, i16 noundef zeroext 32) #11
  %589 = icmp eq i32 %588, -1
  br i1 %589, label %590, label %612

590:                                              ; preds = %585
  %591 = load i32, ptr %288, align 4, !tbaa !5
  %592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %593 = call i32 @s2n_print_stacktrace(ptr noundef %592) #11
  %594 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %595 = trunc nuw i8 %594 to i1
  br i1 %595, label %596, label %600

596:                                              ; preds = %590
  %597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %598 = call i32 @fileno(ptr noundef %597) #11
  %599 = call i32 @isatty(i32 noundef %598) #11
  %.not351 = icmp eq i32 %599, 0
  br i1 %.not351, label %600, label %601

600:                                              ; preds = %596, %590
  br label %601

601:                                              ; preds = %596, %600
  %.str.4.sink554 = phi ptr [ @.str.4, %600 ], [ @.str, %596 ]
  store i32 %591, ptr %288, align 4, !tbaa !5
  %602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %603 = load i32, ptr @test_count, align 4, !tbaa !5
  %604 = load i32, ptr %234, align 4, !tbaa !5
  %605 = call ptr @s2n_strerror(i32 noundef %604, ptr noundef nonnull @.str.3) #11
  %606 = load i32, ptr %234, align 4, !tbaa !5
  %607 = call ptr @s2n_strerror_debug(i32 noundef %606, ptr noundef nonnull @.str.3) #11
  %608 = load i32, ptr %288, align 4, !tbaa !5
  %609 = call ptr @strerror(i32 noundef %608) #11
  %610 = load i32, ptr %288, align 4, !tbaa !5
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %602, ptr noundef nonnull %.str.4.sink554, i32 noundef %603, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.2, i32 noundef 119, ptr noundef %605, ptr noundef %607, ptr noundef %609, i32 noundef %610) #13
  call void @exit(i32 noundef 1) #14
  unreachable

612:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %12, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %13) #11
  store i16 0, ptr %13, align 2, !tbaa !16
  %613 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %8, ptr noundef nonnull %12, i16 noundef zeroext 15, ptr noundef nonnull %13) #11
  %614 = load i32, ptr @test_count, align 4, !tbaa !5
  %615 = add nsw i32 %614, 1
  store i32 %615, ptr @test_count, align 4, !tbaa !5
  %616 = icmp eq i32 %613, -1
  br i1 %616, label %639, label %617

617:                                              ; preds = %612
  %618 = load i32, ptr %288, align 4, !tbaa !5
  %619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %620 = call i32 @s2n_print_stacktrace(ptr noundef %619) #11
  %621 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %622 = trunc nuw i8 %621 to i1
  br i1 %622, label %623, label %627

623:                                              ; preds = %617
  %624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %625 = call i32 @fileno(ptr noundef %624) #11
  %626 = call i32 @isatty(i32 noundef %625) #11
  %.not267 = icmp eq i32 %626, 0
  br i1 %.not267, label %627, label %628

627:                                              ; preds = %623, %617
  br label %628

628:                                              ; preds = %623, %627
  %.str.4.sink563 = phi ptr [ @.str.4, %627 ], [ @.str, %623 ]
  store i32 %618, ptr %288, align 4, !tbaa !5
  %629 = load ptr, ptr @stderr, align 8, !tbaa !9
  %630 = load i32, ptr @test_count, align 4, !tbaa !5
  %631 = load i32, ptr %234, align 4, !tbaa !5
  %632 = call ptr @s2n_strerror(i32 noundef %631, ptr noundef nonnull @.str.3) #11
  %633 = load i32, ptr %234, align 4, !tbaa !5
  %634 = call ptr @s2n_strerror_debug(i32 noundef %633, ptr noundef nonnull @.str.3) #11
  %635 = load i32, ptr %288, align 4, !tbaa !5
  %636 = call ptr @strerror(i32 noundef %635) #11
  %637 = load i32, ptr %288, align 4, !tbaa !5
  %638 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %629, ptr noundef nonnull %.str.4.sink563, i32 noundef %630, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 127, ptr noundef %632, ptr noundef %634, ptr noundef %636, i32 noundef %637) #13
  call void @exit(i32 noundef 1) #14
  unreachable

639:                                              ; preds = %612
  %640 = add nsw i32 %614, 2
  store i32 %640, ptr @test_count, align 4, !tbaa !5
  %641 = load i32, ptr %234, align 4, !tbaa !5
  %642 = icmp eq i32 %641, 469762120
  br i1 %642, label %665, label %643

643:                                              ; preds = %639
  %644 = load i32, ptr %288, align 4, !tbaa !5
  %645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %646 = call i32 @s2n_print_stacktrace(ptr noundef %645) #11
  %647 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %648 = trunc nuw i8 %647 to i1
  br i1 %648, label %649, label %653

649:                                              ; preds = %643
  %650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %651 = call i32 @fileno(ptr noundef %650) #11
  %652 = call i32 @isatty(i32 noundef %651) #11
  %.not268 = icmp eq i32 %652, 0
  br i1 %.not268, label %653, label %654

653:                                              ; preds = %649, %643
  br label %654

654:                                              ; preds = %649, %653
  %.str.4.sink572 = phi ptr [ @.str.4, %653 ], [ @.str, %649 ]
  store i32 %644, ptr %288, align 4, !tbaa !5
  %655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %656 = load i32, ptr @test_count, align 4, !tbaa !5
  %657 = load i32, ptr %234, align 4, !tbaa !5
  %658 = call ptr @s2n_strerror(i32 noundef %657, ptr noundef nonnull @.str.3) #11
  %659 = load i32, ptr %234, align 4, !tbaa !5
  %660 = call ptr @s2n_strerror_debug(i32 noundef %659, ptr noundef nonnull @.str.3) #11
  %661 = load i32, ptr %288, align 4, !tbaa !5
  %662 = call ptr @strerror(i32 noundef %661) #11
  %663 = load i32, ptr %288, align 4, !tbaa !5
  %664 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %655, ptr noundef nonnull %.str.4.sink572, i32 noundef %656, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.2, i32 noundef 127, ptr noundef %658, ptr noundef %660, ptr noundef %662, i32 noundef %663) #13
  call void @exit(i32 noundef 1) #14
  unreachable

665:                                              ; preds = %639
  %666 = add nsw i32 %614, 3
  store i32 %666, ptr @test_count, align 4, !tbaa !5
  %667 = call ptr @s2n_strerror_debug(i32 noundef 469762120, ptr noundef nonnull @.str.3) #11
  %668 = icmp eq ptr %667, null
  br i1 %668, label %669, label %691

669:                                              ; preds = %665
  %670 = load i32, ptr %288, align 4, !tbaa !5
  %671 = load ptr, ptr @stderr, align 8, !tbaa !9
  %672 = call i32 @s2n_print_stacktrace(ptr noundef %671) #11
  %673 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %674 = trunc nuw i8 %673 to i1
  br i1 %674, label %675, label %679

675:                                              ; preds = %669
  %676 = load ptr, ptr @stderr, align 8, !tbaa !9
  %677 = call i32 @fileno(ptr noundef %676) #11
  %678 = call i32 @isatty(i32 noundef %677) #11
  %.not350 = icmp eq i32 %678, 0
  br i1 %.not350, label %679, label %680

679:                                              ; preds = %675, %669
  br label %680

680:                                              ; preds = %675, %679
  %.str.4.sink581 = phi ptr [ @.str.4, %679 ], [ @.str, %675 ]
  store i32 %670, ptr %288, align 4, !tbaa !5
  %681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %682 = load i32, ptr @test_count, align 4, !tbaa !5
  %683 = load i32, ptr %234, align 4, !tbaa !5
  %684 = call ptr @s2n_strerror(i32 noundef %683, ptr noundef nonnull @.str.3) #11
  %685 = load i32, ptr %234, align 4, !tbaa !5
  %686 = call ptr @s2n_strerror_debug(i32 noundef %685, ptr noundef nonnull @.str.3) #11
  %687 = load i32, ptr %288, align 4, !tbaa !5
  %688 = call ptr @strerror(i32 noundef %687) #11
  %689 = load i32, ptr %288, align 4, !tbaa !5
  %690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %681, ptr noundef nonnull %.str.4.sink581, i32 noundef %682, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 127, ptr noundef %684, ptr noundef %686, ptr noundef %688, i32 noundef %689) #13
  call void @exit(i32 noundef 1) #14
  unreachable

691:                                              ; preds = %665
  store i32 0, ptr %234, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %288, align 4, !tbaa !5
  %692 = load i32, ptr @test_count, align 4, !tbaa !5
  %693 = add nsw i32 %692, 1
  store i32 %693, ptr @test_count, align 4, !tbaa !5
  %694 = load i16, ptr %13, align 2, !tbaa !16
  %695 = icmp eq i16 %694, 0
  br i1 %695, label %718, label %696

696:                                              ; preds = %691
  %697 = load i32, ptr %288, align 4, !tbaa !5
  %698 = load ptr, ptr @stderr, align 8, !tbaa !9
  %699 = call i32 @s2n_print_stacktrace(ptr noundef %698) #11
  %700 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %701 = trunc nuw i8 %700 to i1
  br i1 %701, label %702, label %706

702:                                              ; preds = %696
  %703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %704 = call i32 @fileno(ptr noundef %703) #11
  %705 = call i32 @isatty(i32 noundef %704) #11
  %.not269 = icmp eq i32 %705, 0
  br i1 %.not269, label %706, label %707

706:                                              ; preds = %702, %696
  br label %707

707:                                              ; preds = %702, %706
  %.str.4.sink590 = phi ptr [ @.str.4, %706 ], [ @.str, %702 ]
  store i32 %697, ptr %288, align 4, !tbaa !5
  %708 = load ptr, ptr @stderr, align 8, !tbaa !9
  %709 = load i32, ptr @test_count, align 4, !tbaa !5
  %710 = load i32, ptr %234, align 4, !tbaa !5
  %711 = call ptr @s2n_strerror(i32 noundef %710, ptr noundef nonnull @.str.3) #11
  %712 = load i32, ptr %234, align 4, !tbaa !5
  %713 = call ptr @s2n_strerror_debug(i32 noundef %712, ptr noundef nonnull @.str.3) #11
  %714 = load i32, ptr %288, align 4, !tbaa !5
  %715 = call ptr @strerror(i32 noundef %714) #11
  %716 = load i32, ptr %288, align 4, !tbaa !5
  %717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %708, ptr noundef nonnull %.str.4.sink590, i32 noundef %709, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 128, ptr noundef %711, ptr noundef %713, ptr noundef %715, i32 noundef %716) #13
  call void @exit(i32 noundef 1) #14
  unreachable

718:                                              ; preds = %691
  %719 = add nsw i32 %692, 2
  store i32 %719, ptr @test_count, align 4, !tbaa !5
  %720 = call i32 @s2n_stuffer_reread(ptr noundef nonnull %11) #11
  %721 = icmp eq i32 %720, -1
  br i1 %721, label %722, label %744

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

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

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

733:                                              ; preds = %728, %732
  %.str.4.sink599 = phi ptr [ @.str.4, %732 ], [ @.str, %728 ]
  store i32 %723, ptr %288, align 4, !tbaa !5
  %734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %735 = load i32, ptr @test_count, align 4, !tbaa !5
  %736 = load i32, ptr %234, align 4, !tbaa !5
  %737 = call ptr @s2n_strerror(i32 noundef %736, ptr noundef nonnull @.str.3) #11
  %738 = load i32, ptr %234, align 4, !tbaa !5
  %739 = call ptr @s2n_strerror_debug(i32 noundef %738, ptr noundef nonnull @.str.3) #11
  %740 = load i32, ptr %288, align 4, !tbaa !5
  %741 = call ptr @strerror(i32 noundef %740) #11
  %742 = load i32, ptr %288, align 4, !tbaa !5
  %743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %734, ptr noundef nonnull %.str.4.sink599, i32 noundef %735, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.2, i32 noundef 130, ptr noundef %737, ptr noundef %739, ptr noundef %741, i32 noundef %742) #13
  call void @exit(i32 noundef 1) #14
  unreachable

744:                                              ; preds = %718
  %745 = load i32, ptr @test_count, align 4, !tbaa !5
  %746 = add nsw i32 %745, 1
  store i32 %746, ptr @test_count, align 4, !tbaa !5
  %747 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %8, ptr noundef nonnull %12, i16 noundef zeroext 16, ptr noundef nonnull %13) #11
  %748 = icmp eq i32 %747, -1
  br i1 %748, label %749, label %771

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

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

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

760:                                              ; preds = %755, %759
  %.str.4.sink608 = phi ptr [ @.str.4, %759 ], [ @.str, %755 ]
  store i32 %750, ptr %288, align 4, !tbaa !5
  %761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %762 = load i32, ptr @test_count, align 4, !tbaa !5
  %763 = load i32, ptr %234, align 4, !tbaa !5
  %764 = call ptr @s2n_strerror(i32 noundef %763, ptr noundef nonnull @.str.3) #11
  %765 = load i32, ptr %234, align 4, !tbaa !5
  %766 = call ptr @s2n_strerror_debug(i32 noundef %765, ptr noundef nonnull @.str.3) #11
  %767 = load i32, ptr %288, align 4, !tbaa !5
  %768 = call ptr @strerror(i32 noundef %767) #11
  %769 = load i32, ptr %288, align 4, !tbaa !5
  %770 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %761, ptr noundef nonnull %.str.4.sink608, i32 noundef %762, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.2, i32 noundef 134, ptr noundef %764, ptr noundef %766, ptr noundef %768, i32 noundef %769) #13
  call void @exit(i32 noundef 1) #14
  unreachable

771:                                              ; preds = %744
  %772 = load i32, ptr @test_count, align 4, !tbaa !5
  %773 = add nsw i32 %772, 1
  store i32 %773, ptr @test_count, align 4, !tbaa !5
  %774 = load i16, ptr %13, align 2, !tbaa !16
  %775 = icmp eq i16 %774, 16
  br i1 %775, label %798, label %776

776:                                              ; preds = %771
  %777 = load i32, ptr %288, align 4, !tbaa !5
  %778 = load ptr, ptr @stderr, align 8, !tbaa !9
  %779 = call i32 @s2n_print_stacktrace(ptr noundef %778) #11
  %780 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %781 = trunc nuw i8 %780 to i1
  br i1 %781, label %782, label %786

782:                                              ; preds = %776
  %783 = load ptr, ptr @stderr, align 8, !tbaa !9
  %784 = call i32 @fileno(ptr noundef %783) #11
  %785 = call i32 @isatty(i32 noundef %784) #11
  %.not270 = icmp eq i32 %785, 0
  br i1 %.not270, label %786, label %787

786:                                              ; preds = %782, %776
  br label %787

787:                                              ; preds = %782, %786
  %.str.4.sink617 = phi ptr [ @.str.4, %786 ], [ @.str, %782 ]
  store i32 %777, ptr %288, align 4, !tbaa !5
  %788 = load ptr, ptr @stderr, align 8, !tbaa !9
  %789 = load i32, ptr @test_count, align 4, !tbaa !5
  %790 = load i32, ptr %234, align 4, !tbaa !5
  %791 = call ptr @s2n_strerror(i32 noundef %790, ptr noundef nonnull @.str.3) #11
  %792 = load i32, ptr %234, align 4, !tbaa !5
  %793 = call ptr @s2n_strerror_debug(i32 noundef %792, ptr noundef nonnull @.str.3) #11
  %794 = load i32, ptr %288, align 4, !tbaa !5
  %795 = call ptr @strerror(i32 noundef %794) #11
  %796 = load i32, ptr %288, align 4, !tbaa !5
  %797 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %788, ptr noundef nonnull %.str.4.sink617, i32 noundef %789, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.2, i32 noundef 135, ptr noundef %791, ptr noundef %793, ptr noundef %795, i32 noundef %796) #13
  call void @exit(i32 noundef 1) #14
  unreachable

798:                                              ; preds = %771
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 808, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 808, ptr nonnull %14) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(808) %14, i8 0, i64 808, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %15, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %16) #11
  store i16 0, ptr %16, align 2, !tbaa !16
  %799 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %14, ptr noundef nonnull %15, i16 noundef zeroext 16, ptr noundef nonnull %16) #11
  %800 = load i32, ptr @test_count, align 4, !tbaa !5
  %801 = add nsw i32 %800, 1
  store i32 %801, ptr @test_count, align 4, !tbaa !5
  %802 = icmp eq i32 %799, -1
  br i1 %802, label %825, label %803

803:                                              ; preds = %798
  %804 = load i32, ptr %288, 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
  %.not271 = icmp eq i32 %812, 0
  br i1 %.not271, label %813, label %814

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

814:                                              ; preds = %809, %813
  %.str.4.sink626 = phi ptr [ @.str.4, %813 ], [ @.str, %809 ]
  store i32 %804, ptr %288, 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 %234, align 4, !tbaa !5
  %818 = call ptr @s2n_strerror(i32 noundef %817, ptr noundef nonnull @.str.3) #11
  %819 = load i32, ptr %234, align 4, !tbaa !5
  %820 = call ptr @s2n_strerror_debug(i32 noundef %819, ptr noundef nonnull @.str.3) #11
  %821 = load i32, ptr %288, align 4, !tbaa !5
  %822 = call ptr @strerror(i32 noundef %821) #11
  %823 = load i32, ptr %288, align 4, !tbaa !5
  %824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %815, ptr noundef nonnull %.str.4.sink626, i32 noundef %816, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 146, ptr noundef %818, ptr noundef %820, ptr noundef %822, i32 noundef %823) #13
  call void @exit(i32 noundef 1) #14
  unreachable

825:                                              ; preds = %798
  %826 = add nsw i32 %800, 2
  store i32 %826, ptr @test_count, align 4, !tbaa !5
  %827 = load i32, ptr %234, align 4, !tbaa !5
  %828 = icmp eq i32 %827, 469762072
  br i1 %828, label %851, label %829

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

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

839:                                              ; preds = %835, %829
  br label %840

840:                                              ; preds = %835, %839
  %.str.4.sink635 = phi ptr [ @.str.4, %839 ], [ @.str, %835 ]
  store i32 %830, ptr %288, align 4, !tbaa !5
  %841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %842 = load i32, ptr @test_count, align 4, !tbaa !5
  %843 = load i32, ptr %234, align 4, !tbaa !5
  %844 = call ptr @s2n_strerror(i32 noundef %843, ptr noundef nonnull @.str.3) #11
  %845 = load i32, ptr %234, align 4, !tbaa !5
  %846 = call ptr @s2n_strerror_debug(i32 noundef %845, ptr noundef nonnull @.str.3) #11
  %847 = load i32, ptr %288, align 4, !tbaa !5
  %848 = call ptr @strerror(i32 noundef %847) #11
  %849 = load i32, ptr %288, align 4, !tbaa !5
  %850 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %841, ptr noundef nonnull %.str.4.sink635, i32 noundef %842, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.2, i32 noundef 146, ptr noundef %844, ptr noundef %846, ptr noundef %848, i32 noundef %849) #13
  call void @exit(i32 noundef 1) #14
  unreachable

851:                                              ; preds = %825
  %852 = add nsw i32 %800, 3
  store i32 %852, ptr @test_count, align 4, !tbaa !5
  %853 = call ptr @s2n_strerror_debug(i32 noundef 469762072, ptr noundef nonnull @.str.3) #11
  %854 = icmp eq ptr %853, null
  br i1 %854, label %855, label %877

855:                                              ; preds = %851
  %856 = load i32, ptr %288, align 4, !tbaa !5
  %857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %858 = call i32 @s2n_print_stacktrace(ptr noundef %857) #11
  %859 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %860 = trunc nuw i8 %859 to i1
  br i1 %860, label %861, label %865

861:                                              ; preds = %855
  %862 = load ptr, ptr @stderr, align 8, !tbaa !9
  %863 = call i32 @fileno(ptr noundef %862) #11
  %864 = call i32 @isatty(i32 noundef %863) #11
  %.not347 = icmp eq i32 %864, 0
  br i1 %.not347, label %865, label %866

865:                                              ; preds = %861, %855
  br label %866

866:                                              ; preds = %861, %865
  %.str.4.sink644 = phi ptr [ @.str.4, %865 ], [ @.str, %861 ]
  store i32 %856, ptr %288, align 4, !tbaa !5
  %867 = load ptr, ptr @stderr, align 8, !tbaa !9
  %868 = load i32, ptr @test_count, align 4, !tbaa !5
  %869 = load i32, ptr %234, align 4, !tbaa !5
  %870 = call ptr @s2n_strerror(i32 noundef %869, ptr noundef nonnull @.str.3) #11
  %871 = load i32, ptr %234, align 4, !tbaa !5
  %872 = call ptr @s2n_strerror_debug(i32 noundef %871, ptr noundef nonnull @.str.3) #11
  %873 = load i32, ptr %288, align 4, !tbaa !5
  %874 = call ptr @strerror(i32 noundef %873) #11
  %875 = load i32, ptr %288, align 4, !tbaa !5
  %876 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %867, ptr noundef nonnull %.str.4.sink644, i32 noundef %868, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 146, ptr noundef %870, ptr noundef %872, ptr noundef %874, i32 noundef %875) #13
  call void @exit(i32 noundef 1) #14
  unreachable

877:                                              ; preds = %851
  store i32 0, ptr %234, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %288, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 808, ptr nonnull %14) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  %878 = call ptr @s2n_config_new() #11
  store ptr %878, ptr %17, align 8, !tbaa !9
  %879 = load i32, ptr @test_count, align 4, !tbaa !5
  %880 = add nsw i32 %879, 1
  store i32 %880, ptr @test_count, align 4, !tbaa !5
  %881 = load ptr, ptr %3, align 8, !tbaa !9
  %882 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %878, ptr noundef %881) #11
  %883 = icmp eq i32 %882, -1
  br i1 %883, label %884, label %906

884:                                              ; preds = %1327, %877
  %885 = load i32, ptr %288, align 4, !tbaa !5
  %886 = load ptr, ptr @stderr, align 8, !tbaa !9
  %887 = call i32 @s2n_print_stacktrace(ptr noundef %886) #11
  %888 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %889 = trunc nuw i8 %888 to i1
  br i1 %889, label %890, label %894

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

894:                                              ; preds = %890, %884
  br label %895

895:                                              ; preds = %890, %894
  %.str.4.sink653 = phi ptr [ @.str.4, %894 ], [ @.str, %890 ]
  store i32 %885, ptr %288, align 4, !tbaa !5
  %896 = load ptr, ptr @stderr, align 8, !tbaa !9
  %897 = load i32, ptr @test_count, align 4, !tbaa !5
  %898 = load i32, ptr %234, align 4, !tbaa !5
  %899 = call ptr @s2n_strerror(i32 noundef %898, ptr noundef nonnull @.str.3) #11
  %900 = load i32, ptr %234, align 4, !tbaa !5
  %901 = call ptr @s2n_strerror_debug(i32 noundef %900, ptr noundef nonnull @.str.3) #11
  %902 = load i32, ptr %288, align 4, !tbaa !5
  %903 = call ptr @strerror(i32 noundef %902) #11
  %904 = load i32, ptr %288, align 4, !tbaa !5
  %905 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %896, ptr noundef nonnull %.str.4.sink653, i32 noundef %897, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.2, i32 noundef 152, ptr noundef %899, ptr noundef %901, ptr noundef %903, i32 noundef %904) #13
  call void @exit(i32 noundef 1) #14
  unreachable

906:                                              ; preds = %877
  %907 = load i32, ptr @test_count, align 4, !tbaa !5
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr @test_count, align 4, !tbaa !5
  %909 = load ptr, ptr %17, align 8, !tbaa !9
  %910 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %909, ptr noundef nonnull @.str.35) #11
  %911 = icmp eq i32 %910, -1
  br i1 %911, label %934, label %956

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

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

922:                                              ; preds = %918, %912
  br label %923

923:                                              ; preds = %918, %922
  %.str.4.sink662 = phi ptr [ @.str.4, %922 ], [ @.str, %918 ]
  store i32 %913, ptr %288, align 4, !tbaa !5
  %924 = load ptr, ptr @stderr, align 8, !tbaa !9
  %925 = load i32, ptr @test_count, align 4, !tbaa !5
  %926 = load i32, ptr %234, align 4, !tbaa !5
  %927 = call ptr @s2n_strerror(i32 noundef %926, ptr noundef nonnull @.str.3) #11
  %928 = load i32, ptr %234, align 4, !tbaa !5
  %929 = call ptr @s2n_strerror_debug(i32 noundef %928, ptr noundef nonnull @.str.3) #11
  %930 = load i32, ptr %288, align 4, !tbaa !5
  %931 = call ptr @strerror(i32 noundef %930) #11
  %932 = load i32, ptr %288, align 4, !tbaa !5
  %933 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %924, ptr noundef nonnull %.str.4.sink662, i32 noundef %925, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.2, i32 noundef 157, ptr noundef %927, ptr noundef %929, ptr noundef %931, i32 noundef %932) #13
  call void @exit(i32 noundef 1) #14
  unreachable

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

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

944:                                              ; preds = %940, %934
  br label %945

945:                                              ; preds = %940, %944
  %.str.4.sink671 = phi ptr [ @.str.4, %944 ], [ @.str, %940 ]
  store i32 %935, ptr %288, align 4, !tbaa !5
  %946 = load ptr, ptr @stderr, align 8, !tbaa !9
  %947 = load i32, ptr @test_count, align 4, !tbaa !5
  %948 = load i32, ptr %234, align 4, !tbaa !5
  %949 = call ptr @s2n_strerror(i32 noundef %948, ptr noundef nonnull @.str.3) #11
  %950 = load i32, ptr %234, align 4, !tbaa !5
  %951 = call ptr @s2n_strerror_debug(i32 noundef %950, ptr noundef nonnull @.str.3) #11
  %952 = load i32, ptr %288, align 4, !tbaa !5
  %953 = call ptr @strerror(i32 noundef %952) #11
  %954 = load i32, ptr %288, align 4, !tbaa !5
  %955 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %946, ptr noundef nonnull %.str.4.sink671, i32 noundef %947, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.2, i32 noundef 162, ptr noundef %949, ptr noundef %951, ptr noundef %953, i32 noundef %954) #13
  call void @exit(i32 noundef 1) #14
  unreachable

956:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %957 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %957, ptr %18, align 8, !tbaa !9
  %958 = load i32, ptr @test_count, align 4, !tbaa !5
  %959 = add nsw i32 %958, 1
  store i32 %959, ptr @test_count, align 4, !tbaa !5
  %960 = load ptr, ptr %17, align 8, !tbaa !9
  %961 = call i32 @s2n_connection_set_config(ptr noundef %957, ptr noundef %960) #11
  %962 = icmp eq i32 %961, -1
  br i1 %962, label %963, label %985

963:                                              ; preds = %1343, %956
  %964 = load i32, ptr %288, align 4, !tbaa !5
  %965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %966 = call i32 @s2n_print_stacktrace(ptr noundef %965) #11
  %967 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %968 = trunc nuw i8 %967 to i1
  br i1 %968, label %969, label %973

969:                                              ; preds = %963
  %970 = load ptr, ptr @stderr, align 8, !tbaa !9
  %971 = call i32 @fileno(ptr noundef %970) #11
  %972 = call i32 @isatty(i32 noundef %971) #11
  %.not344 = icmp eq i32 %972, 0
  br i1 %.not344, label %973, label %974

973:                                              ; preds = %969, %963
  br label %974

974:                                              ; preds = %969, %973
  %.str.4.sink680 = phi ptr [ @.str.4, %973 ], [ @.str, %969 ]
  store i32 %964, ptr %288, align 4, !tbaa !5
  %975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %976 = load i32, ptr @test_count, align 4, !tbaa !5
  %977 = load i32, ptr %234, align 4, !tbaa !5
  %978 = call ptr @s2n_strerror(i32 noundef %977, ptr noundef nonnull @.str.3) #11
  %979 = load i32, ptr %234, align 4, !tbaa !5
  %980 = call ptr @s2n_strerror_debug(i32 noundef %979, ptr noundef nonnull @.str.3) #11
  %981 = load i32, ptr %288, align 4, !tbaa !5
  %982 = call ptr @strerror(i32 noundef %981) #11
  %983 = load i32, ptr %288, align 4, !tbaa !5
  %984 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %975, ptr noundef nonnull %.str.4.sink680, i32 noundef %976, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.2, i32 noundef 167, ptr noundef %978, ptr noundef %980, ptr noundef %982, i32 noundef %983) #13
  call void @exit(i32 noundef 1) #14
  unreachable

985:                                              ; preds = %956
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #11
  %986 = call ptr @s2n_connection_new(i32 noundef 0) #11
  store ptr %986, ptr %19, align 8, !tbaa !9
  %987 = load i32, ptr @test_count, align 4, !tbaa !5
  %988 = add nsw i32 %987, 1
  store i32 %988, ptr @test_count, align 4, !tbaa !5
  %989 = load ptr, ptr %17, align 8, !tbaa !9
  %990 = call i32 @s2n_connection_set_config(ptr noundef %986, ptr noundef %989) #11
  %991 = icmp eq i32 %990, -1
  br i1 %991, label %992, label %1014

992:                                              ; preds = %1350, %985
  %993 = load i32, ptr %288, align 4, !tbaa !5
  %994 = load ptr, ptr @stderr, align 8, !tbaa !9
  %995 = call i32 @s2n_print_stacktrace(ptr noundef %994) #11
  %996 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %997 = trunc nuw i8 %996 to i1
  br i1 %997, label %998, label %1002

998:                                              ; preds = %992
  %999 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1000 = call i32 @fileno(ptr noundef %999) #11
  %1001 = call i32 @isatty(i32 noundef %1000) #11
  %.not343 = icmp eq i32 %1001, 0
  br i1 %.not343, label %1002, label %1003

1002:                                             ; preds = %998, %992
  br label %1003

1003:                                             ; preds = %998, %1002
  %.str.4.sink689 = phi ptr [ @.str.4, %1002 ], [ @.str, %998 ]
  store i32 %993, ptr %288, align 4, !tbaa !5
  %1004 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1005 = load i32, ptr @test_count, align 4, !tbaa !5
  %1006 = load i32, ptr %234, align 4, !tbaa !5
  %1007 = call ptr @s2n_strerror(i32 noundef %1006, ptr noundef nonnull @.str.3) #11
  %1008 = load i32, ptr %234, align 4, !tbaa !5
  %1009 = call ptr @s2n_strerror_debug(i32 noundef %1008, ptr noundef nonnull @.str.3) #11
  %1010 = load i32, ptr %288, align 4, !tbaa !5
  %1011 = call ptr @strerror(i32 noundef %1010) #11
  %1012 = load i32, ptr %288, align 4, !tbaa !5
  %1013 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1004, ptr noundef nonnull %.str.4.sink689, i32 noundef %1005, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.2, i32 noundef 171, ptr noundef %1007, ptr noundef %1009, ptr noundef %1011, i32 noundef %1012) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1014:                                             ; preds = %985
  %1015 = load i32, ptr @test_count, align 4, !tbaa !5
  %1016 = add nsw i32 %1015, 1
  store i32 %1016, ptr @test_count, align 4, !tbaa !5
  %1017 = load ptr, ptr %18, align 8, !tbaa !9
  %1018 = call i32 @s2n_client_hello_send(ptr noundef %1017) #11
  %1019 = icmp eq i32 %1018, -1
  br i1 %1019, label %1020, label %1042

1020:                                             ; preds = %1357, %1014
  %1021 = load i32, ptr %288, align 4, !tbaa !5
  %1022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1023 = call i32 @s2n_print_stacktrace(ptr noundef %1022) #11
  %1024 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1025 = trunc nuw i8 %1024 to i1
  br i1 %1025, label %1026, label %1030

1026:                                             ; preds = %1020
  %1027 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1028 = call i32 @fileno(ptr noundef %1027) #11
  %1029 = call i32 @isatty(i32 noundef %1028) #11
  %.not342 = icmp eq i32 %1029, 0
  br i1 %.not342, label %1030, label %1031

1030:                                             ; preds = %1026, %1020
  br label %1031

1031:                                             ; preds = %1026, %1030
  %.str.4.sink698 = phi ptr [ @.str.4, %1030 ], [ @.str, %1026 ]
  store i32 %1021, ptr %288, align 4, !tbaa !5
  %1032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1033 = load i32, ptr @test_count, align 4, !tbaa !5
  %1034 = load i32, ptr %234, align 4, !tbaa !5
  %1035 = call ptr @s2n_strerror(i32 noundef %1034, ptr noundef nonnull @.str.3) #11
  %1036 = load i32, ptr %234, align 4, !tbaa !5
  %1037 = call ptr @s2n_strerror_debug(i32 noundef %1036, ptr noundef nonnull @.str.3) #11
  %1038 = load i32, ptr %288, align 4, !tbaa !5
  %1039 = call ptr @strerror(i32 noundef %1038) #11
  %1040 = load i32, ptr %288, align 4, !tbaa !5
  %1041 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1032, ptr noundef nonnull %.str.4.sink698, i32 noundef %1033, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.2, i32 noundef 173, ptr noundef %1035, ptr noundef %1037, ptr noundef %1039, i32 noundef %1040) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1042:                                             ; preds = %1014
  %1043 = load i32, ptr @test_count, align 4, !tbaa !5
  %1044 = add nsw i32 %1043, 1
  store i32 %1044, ptr @test_count, align 4, !tbaa !5
  %1045 = load ptr, ptr %18, align 8, !tbaa !9
  %1046 = getelementptr inbounds i8, ptr %1045, i64 2016
  %1047 = load ptr, ptr %19, align 8, !tbaa !9
  %1048 = getelementptr inbounds i8, ptr %1047, i64 2016
  %1049 = getelementptr inbounds i8, ptr %1045, i64 2044
  %1050 = load i32, ptr %1049, align 4, !tbaa !22
  %1051 = getelementptr inbounds i8, ptr %1045, i64 2040
  %1052 = load i32, ptr %1051, align 8, !tbaa !47
  %1053 = sub i32 %1050, %1052
  %1054 = call i32 @s2n_stuffer_copy(ptr noundef nonnull %1046, ptr noundef nonnull %1048, i32 noundef %1053) #11
  %1055 = icmp eq i32 %1054, -1
  br i1 %1055, label %1056, label %1078

1056:                                             ; preds = %1363, %1042
  %1057 = load i32, ptr %288, align 4, !tbaa !5
  %1058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1059 = call i32 @s2n_print_stacktrace(ptr noundef %1058) #11
  %1060 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1061 = trunc nuw i8 %1060 to i1
  br i1 %1061, label %1062, label %1066

1062:                                             ; preds = %1056
  %1063 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1064 = call i32 @fileno(ptr noundef %1063) #11
  %1065 = call i32 @isatty(i32 noundef %1064) #11
  %.not341 = icmp eq i32 %1065, 0
  br i1 %.not341, label %1066, label %1067

1066:                                             ; preds = %1062, %1056
  br label %1067

1067:                                             ; preds = %1062, %1066
  %.str.4.sink707 = phi ptr [ @.str.4, %1066 ], [ @.str, %1062 ]
  store i32 %1057, ptr %288, align 4, !tbaa !5
  %1068 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1069 = load i32, ptr @test_count, align 4, !tbaa !5
  %1070 = load i32, ptr %234, align 4, !tbaa !5
  %1071 = call ptr @s2n_strerror(i32 noundef %1070, ptr noundef nonnull @.str.3) #11
  %1072 = load i32, ptr %234, align 4, !tbaa !5
  %1073 = call ptr @s2n_strerror_debug(i32 noundef %1072, ptr noundef nonnull @.str.3) #11
  %1074 = load i32, ptr %288, align 4, !tbaa !5
  %1075 = call ptr @strerror(i32 noundef %1074) #11
  %1076 = load i32, ptr %288, align 4, !tbaa !5
  %1077 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1068, ptr noundef nonnull %.str.4.sink707, i32 noundef %1069, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.2, i32 noundef 175, ptr noundef %1071, ptr noundef %1073, ptr noundef %1075, i32 noundef %1076) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1078:                                             ; preds = %1042
  %1079 = load i32, ptr @test_count, align 4, !tbaa !5
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr @test_count, align 4, !tbaa !5
  %1081 = load ptr, ptr %19, align 8, !tbaa !9
  %1082 = call i32 @s2n_client_hello_recv(ptr noundef %1081) #11
  %1083 = icmp eq i32 %1082, -1
  br i1 %1083, label %1084, label %1106

1084:                                             ; preds = %1377, %1078
  %1085 = load i32, ptr %288, align 4, !tbaa !5
  %1086 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1087 = call i32 @s2n_print_stacktrace(ptr noundef %1086) #11
  %1088 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1089 = trunc nuw i8 %1088 to i1
  br i1 %1089, label %1090, label %1094

1090:                                             ; preds = %1084
  %1091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1092 = call i32 @fileno(ptr noundef %1091) #11
  %1093 = call i32 @isatty(i32 noundef %1092) #11
  %.not340 = icmp eq i32 %1093, 0
  br i1 %.not340, label %1094, label %1095

1094:                                             ; preds = %1090, %1084
  br label %1095

1095:                                             ; preds = %1090, %1094
  %.str.4.sink716 = phi ptr [ @.str.4, %1094 ], [ @.str, %1090 ]
  store i32 %1085, ptr %288, align 4, !tbaa !5
  %1096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1097 = load i32, ptr @test_count, align 4, !tbaa !5
  %1098 = load i32, ptr %234, align 4, !tbaa !5
  %1099 = call ptr @s2n_strerror(i32 noundef %1098, ptr noundef nonnull @.str.3) #11
  %1100 = load i32, ptr %234, align 4, !tbaa !5
  %1101 = call ptr @s2n_strerror_debug(i32 noundef %1100, ptr noundef nonnull @.str.3) #11
  %1102 = load i32, ptr %288, align 4, !tbaa !5
  %1103 = call ptr @strerror(i32 noundef %1102) #11
  %1104 = load i32, ptr %288, align 4, !tbaa !5
  %1105 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1096, ptr noundef nonnull %.str.4.sink716, i32 noundef %1097, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.2, i32 noundef 176, ptr noundef %1099, ptr noundef %1101, ptr noundef %1103, i32 noundef %1104) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1106:                                             ; preds = %1078
  %1107 = load ptr, ptr %19, align 8, !tbaa !9
  %1108 = call ptr @s2n_connection_get_client_hello(ptr noundef %1107) #11
  %1109 = load i32, ptr @test_count, align 4, !tbaa !5
  %1110 = add nsw i32 %1109, 1
  store i32 %1110, ptr @test_count, align 4, !tbaa !5
  %1111 = icmp eq ptr %1108, null
  br i1 %1111, label %1112, label %1134

1112:                                             ; preds = %1383, %1106
  %1113 = load i32, ptr %288, align 4, !tbaa !5
  %1114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1115 = call i32 @s2n_print_stacktrace(ptr noundef %1114) #11
  %1116 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1117 = trunc nuw i8 %1116 to i1
  br i1 %1117, label %1118, label %1122

1118:                                             ; preds = %1112
  %1119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1120 = call i32 @fileno(ptr noundef %1119) #11
  %1121 = call i32 @isatty(i32 noundef %1120) #11
  %.not339 = icmp eq i32 %1121, 0
  br i1 %.not339, label %1122, label %1123

1122:                                             ; preds = %1118, %1112
  br label %1123

1123:                                             ; preds = %1118, %1122
  %.str.4.sink725 = phi ptr [ @.str.4, %1122 ], [ @.str, %1118 ]
  store i32 %1113, ptr %288, align 4, !tbaa !5
  %1124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1125 = load i32, ptr @test_count, align 4, !tbaa !5
  %1126 = load i32, ptr %234, align 4, !tbaa !5
  %1127 = call ptr @s2n_strerror(i32 noundef %1126, ptr noundef nonnull @.str.3) #11
  %1128 = load i32, ptr %234, align 4, !tbaa !5
  %1129 = call ptr @s2n_strerror_debug(i32 noundef %1128, ptr noundef nonnull @.str.3) #11
  %1130 = load i32, ptr %288, align 4, !tbaa !5
  %1131 = call ptr @strerror(i32 noundef %1130) #11
  %1132 = load i32, ptr %288, align 4, !tbaa !5
  %1133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1124, ptr noundef nonnull %.str.4.sink725, i32 noundef %1125, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.2, i32 noundef 179, ptr noundef %1127, ptr noundef %1129, ptr noundef %1131, i32 noundef %1132) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1134:                                             ; preds = %1106
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #11
  store i8 0, ptr %20, align 1, !tbaa !11
  %1135 = add nsw i32 %1109, 2
  store i32 %1135, ptr @test_count, align 4, !tbaa !5
  %1136 = call i32 @s2n_client_hello_has_extension(ptr noundef nonnull %1108, i16 noundef zeroext 10, ptr noundef nonnull %20) #11
  %1137 = icmp eq i32 %1136, -1
  br i1 %1137, label %1138, label %1160

1138:                                             ; preds = %1389, %1134
  %1139 = load i32, ptr %288, align 4, !tbaa !5
  %1140 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1141 = call i32 @s2n_print_stacktrace(ptr noundef %1140) #11
  %1142 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1143 = trunc nuw i8 %1142 to i1
  br i1 %1143, label %1144, label %1148

1144:                                             ; preds = %1138
  %1145 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1146 = call i32 @fileno(ptr noundef %1145) #11
  %1147 = call i32 @isatty(i32 noundef %1146) #11
  %.not338 = icmp eq i32 %1147, 0
  br i1 %.not338, label %1148, label %1149

1148:                                             ; preds = %1144, %1138
  br label %1149

1149:                                             ; preds = %1144, %1148
  %.str.4.sink734 = phi ptr [ @.str.4, %1148 ], [ @.str, %1144 ]
  store i32 %1139, ptr %288, align 4, !tbaa !5
  %1150 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1151 = load i32, ptr @test_count, align 4, !tbaa !5
  %1152 = load i32, ptr %234, align 4, !tbaa !5
  %1153 = call ptr @s2n_strerror(i32 noundef %1152, ptr noundef nonnull @.str.3) #11
  %1154 = load i32, ptr %234, align 4, !tbaa !5
  %1155 = call ptr @s2n_strerror_debug(i32 noundef %1154, ptr noundef nonnull @.str.3) #11
  %1156 = load i32, ptr %288, align 4, !tbaa !5
  %1157 = call ptr @strerror(i32 noundef %1156) #11
  %1158 = load i32, ptr %288, align 4, !tbaa !5
  %1159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1150, ptr noundef nonnull %.str.4.sink734, i32 noundef %1151, ptr noundef nonnull @.str.42, ptr noundef nonnull @.str.2, i32 noundef 183, ptr noundef %1153, ptr noundef %1155, ptr noundef %1157, i32 noundef %1158) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1160:                                             ; preds = %1134
  %1161 = load i32, ptr @test_count, align 4, !tbaa !5
  %1162 = add nsw i32 %1161, 1
  store i32 %1162, ptr @test_count, align 4, !tbaa !5
  %1163 = load i8, ptr %20, align 1, !tbaa !11, !range !13, !noundef !14
  %.not1283 = icmp eq i8 %1163, 0
  br i1 %.not1283, label %1164, label %1186

1164:                                             ; preds = %1393, %1160
  %1165 = load i32, ptr %288, align 4, !tbaa !5
  %1166 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1167 = call i32 @s2n_print_stacktrace(ptr noundef %1166) #11
  %1168 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1169 = trunc nuw i8 %1168 to i1
  br i1 %1169, label %1170, label %1174

1170:                                             ; preds = %1164
  %1171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1172 = call i32 @fileno(ptr noundef %1171) #11
  %1173 = call i32 @isatty(i32 noundef %1172) #11
  %.not331 = icmp eq i32 %1173, 0
  br i1 %.not331, label %1174, label %1175

1174:                                             ; preds = %1170, %1164
  br label %1175

1175:                                             ; preds = %1170, %1174
  %.str.4.sink743 = phi ptr [ @.str.4, %1174 ], [ @.str, %1170 ]
  store i32 %1165, ptr %288, align 4, !tbaa !5
  %1176 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1177 = load i32, ptr @test_count, align 4, !tbaa !5
  %1178 = load i32, ptr %234, align 4, !tbaa !5
  %1179 = call ptr @s2n_strerror(i32 noundef %1178, ptr noundef nonnull @.str.3) #11
  %1180 = load i32, ptr %234, align 4, !tbaa !5
  %1181 = call ptr @s2n_strerror_debug(i32 noundef %1180, ptr noundef nonnull @.str.3) #11
  %1182 = load i32, ptr %288, align 4, !tbaa !5
  %1183 = call ptr @strerror(i32 noundef %1182) #11
  %1184 = load i32, ptr %288, align 4, !tbaa !5
  %1185 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1176, ptr noundef nonnull %.str.4.sink743, i32 noundef %1177, ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.2, i32 noundef 184, ptr noundef %1179, ptr noundef %1181, ptr noundef %1183, i32 noundef %1184) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1186:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %21, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %22) #11
  store i16 0, ptr %22, align 2, !tbaa !16
  %1187 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %1108, ptr noundef nonnull %21, i16 noundef zeroext 16, ptr noundef nonnull %22) #11
  %1188 = load i32, ptr @test_count, align 4, !tbaa !5
  %1189 = add nsw i32 %1188, 1
  store i32 %1189, ptr @test_count, align 4, !tbaa !5
  %1190 = icmp eq i32 %1187, -1
  br i1 %1190, label %1279, label %1301

1191:                                             ; preds = %1397
  %1192 = load i32, ptr %288, align 4, !tbaa !5
  %1193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1194 = call i32 @s2n_print_stacktrace(ptr noundef %1193) #11
  %1195 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1196 = trunc nuw i8 %1195 to i1
  br i1 %1196, label %1197, label %1201

1197:                                             ; preds = %1191
  %1198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1199 = call i32 @fileno(ptr noundef %1198) #11
  %1200 = call i32 @isatty(i32 noundef %1199) #11
  %.not334 = icmp eq i32 %1200, 0
  br i1 %.not334, label %1201, label %1202

1201:                                             ; preds = %1197, %1191
  br label %1202

1202:                                             ; preds = %1197, %1201
  %.str.4.sink752 = phi ptr [ @.str.4, %1201 ], [ @.str, %1197 ]
  store i32 %1192, ptr %288, align 4, !tbaa !5
  %1203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1204 = load i32, ptr @test_count, align 4, !tbaa !5
  %1205 = load i32, ptr %234, align 4, !tbaa !5
  %1206 = call ptr @s2n_strerror(i32 noundef %1205, ptr noundef nonnull @.str.3) #11
  %1207 = load i32, ptr %234, align 4, !tbaa !5
  %1208 = call ptr @s2n_strerror_debug(i32 noundef %1207, ptr noundef nonnull @.str.3) #11
  %1209 = load i32, ptr %288, align 4, !tbaa !5
  %1210 = call ptr @strerror(i32 noundef %1209) #11
  %1211 = load i32, ptr %288, align 4, !tbaa !5
  %1212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1203, ptr noundef nonnull %.str.4.sink752, i32 noundef %1204, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 192, ptr noundef %1206, ptr noundef %1208, ptr noundef %1210, i32 noundef %1211) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1213:                                             ; preds = %1402
  %1214 = load i32, ptr %288, align 4, !tbaa !5
  %1215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1216 = call i32 @s2n_print_stacktrace(ptr noundef %1215) #11
  %1217 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1218 = trunc nuw i8 %1217 to i1
  br i1 %1218, label %1219, label %1223

1219:                                             ; preds = %1213
  %1220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1221 = call i32 @fileno(ptr noundef %1220) #11
  %1222 = call i32 @isatty(i32 noundef %1221) #11
  %.not335 = icmp eq i32 %1222, 0
  br i1 %.not335, label %1223, label %1224

1223:                                             ; preds = %1219, %1213
  br label %1224

1224:                                             ; preds = %1219, %1223
  %.str.4.sink761 = phi ptr [ @.str.4, %1223 ], [ @.str, %1219 ]
  store i32 %1214, ptr %288, align 4, !tbaa !5
  %1225 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1226 = load i32, ptr @test_count, align 4, !tbaa !5
  %1227 = load i32, ptr %234, align 4, !tbaa !5
  %1228 = call ptr @s2n_strerror(i32 noundef %1227, ptr noundef nonnull @.str.3) #11
  %1229 = load i32, ptr %234, align 4, !tbaa !5
  %1230 = call ptr @s2n_strerror_debug(i32 noundef %1229, ptr noundef nonnull @.str.3) #11
  %1231 = load i32, ptr %288, align 4, !tbaa !5
  %1232 = call ptr @strerror(i32 noundef %1231) #11
  %1233 = load i32, ptr %288, align 4, !tbaa !5
  %1234 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1225, ptr noundef nonnull %.str.4.sink761, i32 noundef %1226, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.2, i32 noundef 192, ptr noundef %1228, ptr noundef %1230, ptr noundef %1232, i32 noundef %1233) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1235:                                             ; preds = %1406
  %1236 = load i32, ptr %288, align 4, !tbaa !5
  %1237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1238 = call i32 @s2n_print_stacktrace(ptr noundef %1237) #11
  %1239 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1240 = trunc nuw i8 %1239 to i1
  br i1 %1240, label %1241, label %1245

1241:                                             ; preds = %1235
  %1242 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1243 = call i32 @fileno(ptr noundef %1242) #11
  %1244 = call i32 @isatty(i32 noundef %1243) #11
  %.not337 = icmp eq i32 %1244, 0
  br i1 %.not337, label %1245, label %1246

1245:                                             ; preds = %1241, %1235
  br label %1246

1246:                                             ; preds = %1241, %1245
  %.str.4.sink770 = phi ptr [ @.str.4, %1245 ], [ @.str, %1241 ]
  store i32 %1236, ptr %288, align 4, !tbaa !5
  %1247 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1248 = load i32, ptr @test_count, align 4, !tbaa !5
  %1249 = load i32, ptr %234, align 4, !tbaa !5
  %1250 = call ptr @s2n_strerror(i32 noundef %1249, ptr noundef nonnull @.str.3) #11
  %1251 = load i32, ptr %234, align 4, !tbaa !5
  %1252 = call ptr @s2n_strerror_debug(i32 noundef %1251, ptr noundef nonnull @.str.3) #11
  %1253 = load i32, ptr %288, align 4, !tbaa !5
  %1254 = call ptr @strerror(i32 noundef %1253) #11
  %1255 = load i32, ptr %288, align 4, !tbaa !5
  %1256 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1247, ptr noundef nonnull %.str.4.sink770, i32 noundef %1248, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 192, ptr noundef %1250, ptr noundef %1252, ptr noundef %1254, i32 noundef %1255) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1257:                                             ; preds = %1410
  %1258 = load i32, ptr %288, align 4, !tbaa !5
  %1259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1260 = call i32 @s2n_print_stacktrace(ptr noundef %1259) #11
  %1261 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1262 = trunc nuw i8 %1261 to i1
  br i1 %1262, label %1263, label %1267

1263:                                             ; preds = %1257
  %1264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1265 = call i32 @fileno(ptr noundef %1264) #11
  %1266 = call i32 @isatty(i32 noundef %1265) #11
  %.not336 = icmp eq i32 %1266, 0
  br i1 %.not336, label %1267, label %1268

1267:                                             ; preds = %1263, %1257
  br label %1268

1268:                                             ; preds = %1263, %1267
  %.str.4.sink779 = phi ptr [ @.str.4, %1267 ], [ @.str, %1263 ]
  store i32 %1258, ptr %288, align 4, !tbaa !5
  %1269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1270 = load i32, ptr @test_count, align 4, !tbaa !5
  %1271 = load i32, ptr %234, align 4, !tbaa !5
  %1272 = call ptr @s2n_strerror(i32 noundef %1271, ptr noundef nonnull @.str.3) #11
  %1273 = load i32, ptr %234, align 4, !tbaa !5
  %1274 = call ptr @s2n_strerror_debug(i32 noundef %1273, ptr noundef nonnull @.str.3) #11
  %1275 = load i32, ptr %288, align 4, !tbaa !5
  %1276 = call ptr @strerror(i32 noundef %1275) #11
  %1277 = load i32, ptr %288, align 4, !tbaa !5
  %1278 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1269, ptr noundef nonnull %.str.4.sink779, i32 noundef %1270, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 193, ptr noundef %1272, ptr noundef %1274, ptr noundef %1276, i32 noundef %1277) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1279:                                             ; preds = %1186
  %1280 = load i32, ptr %288, align 4, !tbaa !5
  %1281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1282 = call i32 @s2n_print_stacktrace(ptr noundef %1281) #11
  %1283 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1284 = trunc nuw i8 %1283 to i1
  br i1 %1284, label %1285, label %1289

1285:                                             ; preds = %1279
  %1286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1287 = call i32 @fileno(ptr noundef %1286) #11
  %1288 = call i32 @isatty(i32 noundef %1287) #11
  %.not333 = icmp eq i32 %1288, 0
  br i1 %.not333, label %1289, label %1290

1289:                                             ; preds = %1285, %1279
  br label %1290

1290:                                             ; preds = %1285, %1289
  %.str.4.sink788 = phi ptr [ @.str.4, %1289 ], [ @.str, %1285 ]
  store i32 %1280, ptr %288, align 4, !tbaa !5
  %1291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1292 = load i32, ptr @test_count, align 4, !tbaa !5
  %1293 = load i32, ptr %234, align 4, !tbaa !5
  %1294 = call ptr @s2n_strerror(i32 noundef %1293, ptr noundef nonnull @.str.3) #11
  %1295 = load i32, ptr %234, align 4, !tbaa !5
  %1296 = call ptr @s2n_strerror_debug(i32 noundef %1295, ptr noundef nonnull @.str.3) #11
  %1297 = load i32, ptr %288, align 4, !tbaa !5
  %1298 = call ptr @strerror(i32 noundef %1297) #11
  %1299 = load i32, ptr %288, align 4, !tbaa !5
  %1300 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1291, ptr noundef nonnull %.str.4.sink788, i32 noundef %1292, ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.2, i32 noundef 195, ptr noundef %1294, ptr noundef %1296, ptr noundef %1298, i32 noundef %1299) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1301:                                             ; preds = %1186
  %1302 = add nsw i32 %1188, 2
  store i32 %1302, ptr @test_count, align 4, !tbaa !5
  %1303 = load i16, ptr %22, align 2, !tbaa !16
  %1304 = icmp eq i16 %1303, 2
  br i1 %1304, label %1327, label %1305

1305:                                             ; preds = %1301
  %1306 = load i32, ptr %288, align 4, !tbaa !5
  %1307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1308 = call i32 @s2n_print_stacktrace(ptr noundef %1307) #11
  %1309 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1310 = trunc nuw i8 %1309 to i1
  br i1 %1310, label %1311, label %1315

1311:                                             ; preds = %1305
  %1312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1313 = call i32 @fileno(ptr noundef %1312) #11
  %1314 = call i32 @isatty(i32 noundef %1313) #11
  %.not332 = icmp eq i32 %1314, 0
  br i1 %.not332, label %1315, label %1316

1315:                                             ; preds = %1311, %1305
  br label %1316

1316:                                             ; preds = %1311, %1315
  %.str.4.sink797 = phi ptr [ @.str.4, %1315 ], [ @.str, %1311 ]
  store i32 %1306, ptr %288, align 4, !tbaa !5
  %1317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1318 = load i32, ptr @test_count, align 4, !tbaa !5
  %1319 = load i32, ptr %234, align 4, !tbaa !5
  %1320 = call ptr @s2n_strerror(i32 noundef %1319, ptr noundef nonnull @.str.3) #11
  %1321 = load i32, ptr %234, align 4, !tbaa !5
  %1322 = call ptr @s2n_strerror_debug(i32 noundef %1321, ptr noundef nonnull @.str.3) #11
  %1323 = load i32, ptr %288, align 4, !tbaa !5
  %1324 = call ptr @strerror(i32 noundef %1323) #11
  %1325 = load i32, ptr %288, align 4, !tbaa !5
  %1326 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1317, ptr noundef nonnull %.str.4.sink797, i32 noundef %1318, ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.2, i32 noundef 198, ptr noundef %1320, ptr noundef %1322, ptr noundef %1324, i32 noundef %1325) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1327:                                             ; preds = %1301
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #11
  %1328 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  %1329 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  %1330 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  %1331 = call ptr @s2n_config_new() #11
  store ptr %1331, ptr %17, align 8, !tbaa !9
  %1332 = load i32, ptr @test_count, align 4, !tbaa !5
  %1333 = add nsw i32 %1332, 1
  store i32 %1333, ptr @test_count, align 4, !tbaa !5
  %1334 = load ptr, ptr %3, align 8, !tbaa !9
  %1335 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %1331, ptr noundef %1334) #11
  %1336 = icmp eq i32 %1335, -1
  br i1 %1336, label %884, label %1337

1337:                                             ; preds = %1327
  %1338 = load i32, ptr @test_count, align 4, !tbaa !5
  %1339 = add nsw i32 %1338, 1
  store i32 %1339, ptr @test_count, align 4, !tbaa !5
  %1340 = load ptr, ptr %17, align 8, !tbaa !9
  %1341 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %1340, ptr noundef nonnull @.str.33) #11
  %1342 = icmp eq i32 %1341, -1
  br i1 %1342, label %912, label %1343

1343:                                             ; preds = %1337
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %1344 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %1344, ptr %18, align 8, !tbaa !9
  %1345 = load i32, ptr @test_count, align 4, !tbaa !5
  %1346 = add nsw i32 %1345, 1
  store i32 %1346, ptr @test_count, align 4, !tbaa !5
  %1347 = load ptr, ptr %17, align 8, !tbaa !9
  %1348 = call i32 @s2n_connection_set_config(ptr noundef %1344, ptr noundef %1347) #11
  %1349 = icmp eq i32 %1348, -1
  br i1 %1349, label %963, label %1350

1350:                                             ; preds = %1343
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #11
  %1351 = call ptr @s2n_connection_new(i32 noundef 0) #11
  store ptr %1351, ptr %19, align 8, !tbaa !9
  %1352 = load i32, ptr @test_count, align 4, !tbaa !5
  %1353 = add nsw i32 %1352, 1
  store i32 %1353, ptr @test_count, align 4, !tbaa !5
  %1354 = load ptr, ptr %17, align 8, !tbaa !9
  %1355 = call i32 @s2n_connection_set_config(ptr noundef %1351, ptr noundef %1354) #11
  %1356 = icmp eq i32 %1355, -1
  br i1 %1356, label %992, label %1357

1357:                                             ; preds = %1350
  %1358 = load i32, ptr @test_count, align 4, !tbaa !5
  %1359 = add nsw i32 %1358, 1
  store i32 %1359, ptr @test_count, align 4, !tbaa !5
  %1360 = load ptr, ptr %18, align 8, !tbaa !9
  %1361 = call i32 @s2n_client_hello_send(ptr noundef %1360) #11
  %1362 = icmp eq i32 %1361, -1
  br i1 %1362, label %1020, label %1363

1363:                                             ; preds = %1357
  %1364 = load i32, ptr @test_count, align 4, !tbaa !5
  %1365 = add nsw i32 %1364, 1
  store i32 %1365, ptr @test_count, align 4, !tbaa !5
  %1366 = load ptr, ptr %18, align 8, !tbaa !9
  %1367 = getelementptr inbounds i8, ptr %1366, i64 2016
  %1368 = load ptr, ptr %19, align 8, !tbaa !9
  %1369 = getelementptr inbounds i8, ptr %1368, i64 2016
  %1370 = getelementptr inbounds i8, ptr %1366, i64 2044
  %1371 = load i32, ptr %1370, align 4, !tbaa !22
  %1372 = getelementptr inbounds i8, ptr %1366, i64 2040
  %1373 = load i32, ptr %1372, align 8, !tbaa !47
  %1374 = sub i32 %1371, %1373
  %1375 = call i32 @s2n_stuffer_copy(ptr noundef nonnull %1367, ptr noundef nonnull %1369, i32 noundef %1374) #11
  %1376 = icmp eq i32 %1375, -1
  br i1 %1376, label %1056, label %1377

1377:                                             ; preds = %1363
  %1378 = load i32, ptr @test_count, align 4, !tbaa !5
  %1379 = add nsw i32 %1378, 1
  store i32 %1379, ptr @test_count, align 4, !tbaa !5
  %1380 = load ptr, ptr %19, align 8, !tbaa !9
  %1381 = call i32 @s2n_client_hello_recv(ptr noundef %1380) #11
  %1382 = icmp eq i32 %1381, -1
  br i1 %1382, label %1084, label %1383

1383:                                             ; preds = %1377
  %1384 = load ptr, ptr %19, align 8, !tbaa !9
  %1385 = call ptr @s2n_connection_get_client_hello(ptr noundef %1384) #11
  %1386 = load i32, ptr @test_count, align 4, !tbaa !5
  %1387 = add nsw i32 %1386, 1
  store i32 %1387, ptr @test_count, align 4, !tbaa !5
  %1388 = icmp eq ptr %1385, null
  br i1 %1388, label %1112, label %1389

1389:                                             ; preds = %1383
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #11
  store i8 0, ptr %20, align 1, !tbaa !11
  %1390 = add nsw i32 %1386, 2
  store i32 %1390, ptr @test_count, align 4, !tbaa !5
  %1391 = call i32 @s2n_client_hello_has_extension(ptr noundef nonnull %1385, i16 noundef zeroext 10, ptr noundef nonnull %20) #11
  %1392 = icmp eq i32 %1391, -1
  br i1 %1392, label %1138, label %1393

1393:                                             ; preds = %1389
  %1394 = load i32, ptr @test_count, align 4, !tbaa !5
  %1395 = add nsw i32 %1394, 1
  store i32 %1395, ptr @test_count, align 4, !tbaa !5
  %1396 = load i8, ptr %20, align 1, !tbaa !11, !range !13, !noundef !14
  %.not1283.1.not = icmp eq i8 %1396, 0
  br i1 %.not1283.1.not, label %1397, label %1164

1397:                                             ; preds = %1393
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %21, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %22) #11
  store i16 0, ptr %22, align 2, !tbaa !16
  %1398 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %1385, ptr noundef nonnull %21, i16 noundef zeroext 16, ptr noundef nonnull %22) #11
  %1399 = load i32, ptr @test_count, align 4, !tbaa !5
  %1400 = add nsw i32 %1399, 1
  store i32 %1400, ptr @test_count, align 4, !tbaa !5
  %1401 = icmp eq i32 %1398, -1
  br i1 %1401, label %1402, label %1191

1402:                                             ; preds = %1397
  %1403 = add nsw i32 %1399, 2
  store i32 %1403, ptr @test_count, align 4, !tbaa !5
  %1404 = load i32, ptr %234, align 4, !tbaa !5
  %1405 = icmp eq i32 %1404, 469762072
  br i1 %1405, label %1406, label %1213

1406:                                             ; preds = %1402
  %1407 = add nsw i32 %1399, 3
  store i32 %1407, ptr @test_count, align 4, !tbaa !5
  %1408 = call ptr @s2n_strerror_debug(i32 noundef 469762072, ptr noundef nonnull @.str.3) #11
  %1409 = icmp eq ptr %1408, null
  br i1 %1409, label %1235, label %1410

1410:                                             ; preds = %1406
  store i32 0, ptr %234, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %288, align 4, !tbaa !5
  %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 i16, ptr %22, align 2, !tbaa !16
  %1414 = icmp eq i16 %1413, 0
  br i1 %1414, label %1415, label %1257

1415:                                             ; preds = %1410
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #11
  %1416 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  %1417 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  %1418 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.start.p0(i64 808, ptr nonnull %23) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(808) %23, i8 0, i64 808, i1 false)
  %1419 = getelementptr inbounds i8, ptr %23, i64 24
  %1420 = load i8, ptr %4, align 1, !tbaa !15
  %1421 = zext i8 %1420 to i64
  %1422 = getelementptr inbounds [21 x %struct.s2n_parsed_extension], ptr %1419, i64 0, i64 %1421
  %1423 = getelementptr inbounds i8, ptr %1422, i64 24
  store i16 10, ptr %1423, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %24) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(34) %24, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %25, i8 0, i64 24, i1 false)
  %1424 = load i32, ptr @test_count, align 4, !tbaa !5
  %1425 = add nsw i32 %1424, 1
  store i32 %1425, ptr @test_count, align 4, !tbaa !5
  %1426 = call i32 @s2n_blob_init(ptr noundef nonnull %25, ptr noundef nonnull %24, i32 noundef 34) #11
  %1427 = icmp eq i32 %1426, -1
  br i1 %1427, label %1428, label %1450

1428:                                             ; preds = %1415
  %1429 = load i32, ptr %288, align 4, !tbaa !5
  %1430 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1431 = call i32 @s2n_print_stacktrace(ptr noundef %1430) #11
  %1432 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1433 = trunc nuw i8 %1432 to i1
  br i1 %1433, label %1434, label %1438

1434:                                             ; preds = %1428
  %1435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1436 = call i32 @fileno(ptr noundef %1435) #11
  %1437 = call i32 @isatty(i32 noundef %1436) #11
  %.not328 = icmp eq i32 %1437, 0
  br i1 %.not328, label %1438, label %1439

1438:                                             ; preds = %1434, %1428
  br label %1439

1439:                                             ; preds = %1434, %1438
  %.str.4.sink806 = phi ptr [ @.str.4, %1438 ], [ @.str, %1434 ]
  store i32 %1429, ptr %288, align 4, !tbaa !5
  %1440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1441 = load i32, ptr @test_count, align 4, !tbaa !5
  %1442 = load i32, ptr %234, align 4, !tbaa !5
  %1443 = call ptr @s2n_strerror(i32 noundef %1442, ptr noundef nonnull @.str.3) #11
  %1444 = load i32, ptr %234, align 4, !tbaa !5
  %1445 = call ptr @s2n_strerror_debug(i32 noundef %1444, ptr noundef nonnull @.str.3) #11
  %1446 = load i32, ptr %288, align 4, !tbaa !5
  %1447 = call ptr @strerror(i32 noundef %1446) #11
  %1448 = load i32, ptr %288, align 4, !tbaa !5
  %1449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1440, ptr noundef nonnull %.str.4.sink806, i32 noundef %1441, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 213, ptr noundef %1443, ptr noundef %1445, ptr noundef %1447, i32 noundef %1448) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1450:                                             ; preds = %1415
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %1422, ptr noundef nonnull align 8 dereferenceable(24) %25, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %26) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %26, i8 0, i64 40, i1 false)
  %1451 = load i32, ptr @test_count, align 4, !tbaa !5
  %1452 = add nsw i32 %1451, 1
  store i32 %1452, ptr @test_count, align 4, !tbaa !5
  %1453 = call i32 @s2n_stuffer_init(ptr noundef nonnull %26, ptr noundef nonnull %25) #11
  %1454 = icmp eq i32 %1453, -1
  br i1 %1454, label %1455, label %1477

1455:                                             ; preds = %1450
  %1456 = load i32, ptr %288, align 4, !tbaa !5
  %1457 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1458 = call i32 @s2n_print_stacktrace(ptr noundef %1457) #11
  %1459 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1460 = trunc nuw i8 %1459 to i1
  br i1 %1460, label %1461, label %1465

1461:                                             ; preds = %1455
  %1462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1463 = call i32 @fileno(ptr noundef %1462) #11
  %1464 = call i32 @isatty(i32 noundef %1463) #11
  %.not327 = icmp eq i32 %1464, 0
  br i1 %.not327, label %1465, label %1466

1465:                                             ; preds = %1461, %1455
  br label %1466

1466:                                             ; preds = %1461, %1465
  %.str.4.sink815 = phi ptr [ @.str.4, %1465 ], [ @.str, %1461 ]
  store i32 %1456, ptr %288, align 4, !tbaa !5
  %1467 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1468 = load i32, ptr @test_count, align 4, !tbaa !5
  %1469 = load i32, ptr %234, align 4, !tbaa !5
  %1470 = call ptr @s2n_strerror(i32 noundef %1469, ptr noundef nonnull @.str.3) #11
  %1471 = load i32, ptr %234, align 4, !tbaa !5
  %1472 = call ptr @s2n_strerror_debug(i32 noundef %1471, ptr noundef nonnull @.str.3) #11
  %1473 = load i32, ptr %288, align 4, !tbaa !5
  %1474 = call ptr @strerror(i32 noundef %1473) #11
  %1475 = load i32, ptr %288, align 4, !tbaa !5
  %1476 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1467, ptr noundef nonnull %.str.4.sink815, i32 noundef %1468, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 217, ptr noundef %1470, ptr noundef %1472, ptr noundef %1474, i32 noundef %1475) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1477:                                             ; preds = %1450
  %1478 = load i32, ptr @test_count, align 4, !tbaa !5
  %1479 = add nsw i32 %1478, 1
  store i32 %1479, ptr @test_count, align 4, !tbaa !5
  %1480 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %26, i16 noundef zeroext 32) #11
  %1481 = icmp eq i32 %1480, -1
  br i1 %1481, label %1482, label %1504

1482:                                             ; preds = %1477
  %1483 = load i32, ptr %288, align 4, !tbaa !5
  %1484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1485 = call i32 @s2n_print_stacktrace(ptr noundef %1484) #11
  %1486 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1487 = trunc nuw i8 %1486 to i1
  br i1 %1487, label %1488, label %1492

1488:                                             ; preds = %1482
  %1489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1490 = call i32 @fileno(ptr noundef %1489) #11
  %1491 = call i32 @isatty(i32 noundef %1490) #11
  %.not326 = icmp eq i32 %1491, 0
  br i1 %.not326, label %1492, label %1493

1492:                                             ; preds = %1488, %1482
  br label %1493

1493:                                             ; preds = %1488, %1492
  %.str.4.sink824 = phi ptr [ @.str.4, %1492 ], [ @.str, %1488 ]
  store i32 %1483, ptr %288, align 4, !tbaa !5
  %1494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1495 = load i32, ptr @test_count, align 4, !tbaa !5
  %1496 = load i32, ptr %234, align 4, !tbaa !5
  %1497 = call ptr @s2n_strerror(i32 noundef %1496, ptr noundef nonnull @.str.3) #11
  %1498 = load i32, ptr %234, align 4, !tbaa !5
  %1499 = call ptr @s2n_strerror_debug(i32 noundef %1498, ptr noundef nonnull @.str.3) #11
  %1500 = load i32, ptr %288, align 4, !tbaa !5
  %1501 = call ptr @strerror(i32 noundef %1500) #11
  %1502 = load i32, ptr %288, align 4, !tbaa !5
  %1503 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1494, ptr noundef nonnull %.str.4.sink824, i32 noundef %1495, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.2, i32 noundef 219, ptr noundef %1497, ptr noundef %1499, ptr noundef %1501, i32 noundef %1502) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1504:                                             ; preds = %1477
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %27, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %28) #11
  store i16 0, ptr %28, align 2, !tbaa !16
  %1505 = load i32, ptr @test_count, align 4, !tbaa !5
  %1506 = add nsw i32 %1505, 1
  store i32 %1506, ptr @test_count, align 4, !tbaa !5
  %1507 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %23, ptr noundef nonnull %27, i16 noundef zeroext 16, ptr noundef nonnull %28) #11
  %1508 = icmp eq i32 %1507, -1
  br i1 %1508, label %1509, label %1531

1509:                                             ; preds = %1504
  %1510 = load i32, ptr %288, align 4, !tbaa !5
  %1511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1512 = call i32 @s2n_print_stacktrace(ptr noundef %1511) #11
  %1513 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1514 = trunc nuw i8 %1513 to i1
  br i1 %1514, label %1515, label %1519

1515:                                             ; preds = %1509
  %1516 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1517 = call i32 @fileno(ptr noundef %1516) #11
  %1518 = call i32 @isatty(i32 noundef %1517) #11
  %.not325 = icmp eq i32 %1518, 0
  br i1 %.not325, label %1519, label %1520

1519:                                             ; preds = %1515, %1509
  br label %1520

1520:                                             ; preds = %1515, %1519
  %.str.4.sink833 = phi ptr [ @.str.4, %1519 ], [ @.str, %1515 ]
  store i32 %1510, ptr %288, align 4, !tbaa !5
  %1521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1522 = load i32, ptr @test_count, align 4, !tbaa !5
  %1523 = load i32, ptr %234, align 4, !tbaa !5
  %1524 = call ptr @s2n_strerror(i32 noundef %1523, ptr noundef nonnull @.str.3) #11
  %1525 = load i32, ptr %234, align 4, !tbaa !5
  %1526 = call ptr @s2n_strerror_debug(i32 noundef %1525, ptr noundef nonnull @.str.3) #11
  %1527 = load i32, ptr %288, align 4, !tbaa !5
  %1528 = call ptr @strerror(i32 noundef %1527) #11
  %1529 = load i32, ptr %288, align 4, !tbaa !5
  %1530 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1521, ptr noundef nonnull %.str.4.sink833, i32 noundef %1522, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.2, i32 noundef 224, ptr noundef %1524, ptr noundef %1526, ptr noundef %1528, i32 noundef %1529) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1531:                                             ; preds = %1504
  %1532 = load i32, ptr @test_count, align 4, !tbaa !5
  %1533 = add nsw i32 %1532, 1
  store i32 %1533, ptr @test_count, align 4, !tbaa !5
  %1534 = load i16, ptr %28, align 2, !tbaa !16
  %1535 = icmp eq i16 %1534, 16
  br i1 %1535, label %1558, label %1536

1536:                                             ; preds = %1531
  %1537 = load i32, ptr %288, align 4, !tbaa !5
  %1538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1539 = call i32 @s2n_print_stacktrace(ptr noundef %1538) #11
  %1540 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1541 = trunc nuw i8 %1540 to i1
  br i1 %1541, label %1542, label %1546

1542:                                             ; preds = %1536
  %1543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1544 = call i32 @fileno(ptr noundef %1543) #11
  %1545 = call i32 @isatty(i32 noundef %1544) #11
  %.not273 = icmp eq i32 %1545, 0
  br i1 %.not273, label %1546, label %1547

1546:                                             ; preds = %1542, %1536
  br label %1547

1547:                                             ; preds = %1542, %1546
  %.str.4.sink842 = phi ptr [ @.str.4, %1546 ], [ @.str, %1542 ]
  store i32 %1537, ptr %288, align 4, !tbaa !5
  %1548 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1549 = load i32, ptr @test_count, align 4, !tbaa !5
  %1550 = load i32, ptr %234, align 4, !tbaa !5
  %1551 = call ptr @s2n_strerror(i32 noundef %1550, ptr noundef nonnull @.str.3) #11
  %1552 = load i32, ptr %234, align 4, !tbaa !5
  %1553 = call ptr @s2n_strerror_debug(i32 noundef %1552, ptr noundef nonnull @.str.3) #11
  %1554 = load i32, ptr %288, align 4, !tbaa !5
  %1555 = call ptr @strerror(i32 noundef %1554) #11
  %1556 = load i32, ptr %288, align 4, !tbaa !5
  %1557 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1548, ptr noundef nonnull %.str.4.sink842, i32 noundef %1549, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.2, i32 noundef 226, ptr noundef %1551, ptr noundef %1553, ptr noundef %1555, i32 noundef %1556) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1558:                                             ; preds = %1531
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %24) #11
  call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %29) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(34) %29, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %30, i8 0, i64 24, i1 false)
  %1559 = add nsw i32 %1532, 2
  store i32 %1559, ptr @test_count, align 4, !tbaa !5
  %1560 = call i32 @s2n_blob_init(ptr noundef nonnull %30, ptr noundef nonnull %29, i32 noundef 32) #11
  %1561 = icmp eq i32 %1560, -1
  br i1 %1561, label %1562, label %1584

1562:                                             ; preds = %1558
  %1563 = load i32, ptr %288, align 4, !tbaa !5
  %1564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1565 = call i32 @s2n_print_stacktrace(ptr noundef %1564) #11
  %1566 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1567 = trunc nuw i8 %1566 to i1
  br i1 %1567, label %1568, label %1572

1568:                                             ; preds = %1562
  %1569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1570 = call i32 @fileno(ptr noundef %1569) #11
  %1571 = call i32 @isatty(i32 noundef %1570) #11
  %.not324 = icmp eq i32 %1571, 0
  br i1 %.not324, label %1572, label %1573

1572:                                             ; preds = %1568, %1562
  br label %1573

1573:                                             ; preds = %1568, %1572
  %.str.4.sink851 = phi ptr [ @.str.4, %1572 ], [ @.str, %1568 ]
  store i32 %1563, ptr %288, align 4, !tbaa !5
  %1574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1575 = load i32, ptr @test_count, align 4, !tbaa !5
  %1576 = load i32, ptr %234, align 4, !tbaa !5
  %1577 = call ptr @s2n_strerror(i32 noundef %1576, ptr noundef nonnull @.str.3) #11
  %1578 = load i32, ptr %234, align 4, !tbaa !5
  %1579 = call ptr @s2n_strerror_debug(i32 noundef %1578, ptr noundef nonnull @.str.3) #11
  %1580 = load i32, ptr %288, align 4, !tbaa !5
  %1581 = call ptr @strerror(i32 noundef %1580) #11
  %1582 = load i32, ptr %288, align 4, !tbaa !5
  %1583 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1574, ptr noundef nonnull %.str.4.sink851, i32 noundef %1575, ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.2, i32 noundef 234, ptr noundef %1577, ptr noundef %1579, ptr noundef %1581, i32 noundef %1582) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1584:                                             ; preds = %1558
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %1422, ptr noundef nonnull align 8 dereferenceable(24) %30, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %31) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %31, i8 0, i64 40, i1 false)
  %1585 = load i32, ptr @test_count, align 4, !tbaa !5
  %1586 = add nsw i32 %1585, 1
  store i32 %1586, ptr @test_count, align 4, !tbaa !5
  %1587 = call i32 @s2n_stuffer_init(ptr noundef nonnull %31, ptr noundef nonnull %30) #11
  %1588 = icmp eq i32 %1587, -1
  br i1 %1588, label %1589, label %1611

1589:                                             ; preds = %1584
  %1590 = load i32, ptr %288, align 4, !tbaa !5
  %1591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1592 = call i32 @s2n_print_stacktrace(ptr noundef %1591) #11
  %1593 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1594 = trunc nuw i8 %1593 to i1
  br i1 %1594, label %1595, label %1599

1595:                                             ; preds = %1589
  %1596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1597 = call i32 @fileno(ptr noundef %1596) #11
  %1598 = call i32 @isatty(i32 noundef %1597) #11
  %.not323 = icmp eq i32 %1598, 0
  br i1 %.not323, label %1599, label %1600

1599:                                             ; preds = %1595, %1589
  br label %1600

1600:                                             ; preds = %1595, %1599
  %.str.4.sink860 = phi ptr [ @.str.4, %1599 ], [ @.str, %1595 ]
  store i32 %1590, ptr %288, align 4, !tbaa !5
  %1601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1602 = load i32, ptr @test_count, align 4, !tbaa !5
  %1603 = load i32, ptr %234, align 4, !tbaa !5
  %1604 = call ptr @s2n_strerror(i32 noundef %1603, ptr noundef nonnull @.str.3) #11
  %1605 = load i32, ptr %234, align 4, !tbaa !5
  %1606 = call ptr @s2n_strerror_debug(i32 noundef %1605, ptr noundef nonnull @.str.3) #11
  %1607 = load i32, ptr %288, align 4, !tbaa !5
  %1608 = call ptr @strerror(i32 noundef %1607) #11
  %1609 = load i32, ptr %288, align 4, !tbaa !5
  %1610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1601, ptr noundef nonnull %.str.4.sink860, i32 noundef %1602, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 238, ptr noundef %1604, ptr noundef %1606, ptr noundef %1608, i32 noundef %1609) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1611:                                             ; preds = %1584
  %1612 = load i32, ptr @test_count, align 4, !tbaa !5
  %1613 = add nsw i32 %1612, 1
  store i32 %1613, ptr @test_count, align 4, !tbaa !5
  %1614 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %31, i16 noundef zeroext 32) #11
  %1615 = icmp eq i32 %1614, -1
  br i1 %1615, label %1616, label %1638

1616:                                             ; preds = %1611
  %1617 = load i32, ptr %288, align 4, !tbaa !5
  %1618 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1619 = call i32 @s2n_print_stacktrace(ptr noundef %1618) #11
  %1620 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1621 = trunc nuw i8 %1620 to i1
  br i1 %1621, label %1622, label %1626

1622:                                             ; preds = %1616
  %1623 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1624 = call i32 @fileno(ptr noundef %1623) #11
  %1625 = call i32 @isatty(i32 noundef %1624) #11
  %.not322 = icmp eq i32 %1625, 0
  br i1 %.not322, label %1626, label %1627

1626:                                             ; preds = %1622, %1616
  br label %1627

1627:                                             ; preds = %1622, %1626
  %.str.4.sink869 = phi ptr [ @.str.4, %1626 ], [ @.str, %1622 ]
  store i32 %1617, ptr %288, align 4, !tbaa !5
  %1628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1629 = load i32, ptr @test_count, align 4, !tbaa !5
  %1630 = load i32, ptr %234, align 4, !tbaa !5
  %1631 = call ptr @s2n_strerror(i32 noundef %1630, ptr noundef nonnull @.str.3) #11
  %1632 = load i32, ptr %234, align 4, !tbaa !5
  %1633 = call ptr @s2n_strerror_debug(i32 noundef %1632, ptr noundef nonnull @.str.3) #11
  %1634 = load i32, ptr %288, align 4, !tbaa !5
  %1635 = call ptr @strerror(i32 noundef %1634) #11
  %1636 = load i32, ptr %288, align 4, !tbaa !5
  %1637 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1628, ptr noundef nonnull %.str.4.sink869, i32 noundef %1629, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.2, i32 noundef 239, ptr noundef %1631, ptr noundef %1633, ptr noundef %1635, i32 noundef %1636) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1638:                                             ; preds = %1611
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %32, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %33) #11
  store i16 0, ptr %33, align 2, !tbaa !16
  %1639 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %23, ptr noundef nonnull %32, i16 noundef zeroext 16, ptr noundef nonnull %33) #11
  %1640 = load i32, ptr @test_count, align 4, !tbaa !5
  %1641 = add nsw i32 %1640, 1
  store i32 %1641, ptr @test_count, align 4, !tbaa !5
  %1642 = icmp eq i32 %1639, -1
  br i1 %1642, label %1665, label %1643

1643:                                             ; preds = %1638
  %1644 = load i32, ptr %288, align 4, !tbaa !5
  %1645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1646 = call i32 @s2n_print_stacktrace(ptr noundef %1645) #11
  %1647 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1648 = trunc nuw i8 %1647 to i1
  br i1 %1648, label %1649, label %1653

1649:                                             ; preds = %1643
  %1650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1651 = call i32 @fileno(ptr noundef %1650) #11
  %1652 = call i32 @isatty(i32 noundef %1651) #11
  %.not274 = icmp eq i32 %1652, 0
  br i1 %.not274, label %1653, label %1654

1653:                                             ; preds = %1649, %1643
  br label %1654

1654:                                             ; preds = %1649, %1653
  %.str.4.sink878 = phi ptr [ @.str.4, %1653 ], [ @.str, %1649 ]
  store i32 %1644, ptr %288, align 4, !tbaa !5
  %1655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1656 = load i32, ptr @test_count, align 4, !tbaa !5
  %1657 = load i32, ptr %234, align 4, !tbaa !5
  %1658 = call ptr @s2n_strerror(i32 noundef %1657, ptr noundef nonnull @.str.3) #11
  %1659 = load i32, ptr %234, align 4, !tbaa !5
  %1660 = call ptr @s2n_strerror_debug(i32 noundef %1659, ptr noundef nonnull @.str.3) #11
  %1661 = load i32, ptr %288, align 4, !tbaa !5
  %1662 = call ptr @strerror(i32 noundef %1661) #11
  %1663 = load i32, ptr %288, align 4, !tbaa !5
  %1664 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1655, ptr noundef nonnull %.str.4.sink878, i32 noundef %1656, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 245, ptr noundef %1658, ptr noundef %1660, ptr noundef %1662, i32 noundef %1663) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1665:                                             ; preds = %1638
  %1666 = add nsw i32 %1640, 2
  store i32 %1666, ptr @test_count, align 4, !tbaa !5
  %1667 = load i32, ptr %234, align 4, !tbaa !5
  %1668 = icmp eq i32 %1667, 402653257
  br i1 %1668, label %1691, label %1669

1669:                                             ; preds = %1665
  %1670 = load i32, ptr %288, align 4, !tbaa !5
  %1671 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1672 = call i32 @s2n_print_stacktrace(ptr noundef %1671) #11
  %1673 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1674 = trunc nuw i8 %1673 to i1
  br i1 %1674, label %1675, label %1679

1675:                                             ; preds = %1669
  %1676 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1677 = call i32 @fileno(ptr noundef %1676) #11
  %1678 = call i32 @isatty(i32 noundef %1677) #11
  %.not275 = icmp eq i32 %1678, 0
  br i1 %.not275, label %1679, label %1680

1679:                                             ; preds = %1675, %1669
  br label %1680

1680:                                             ; preds = %1675, %1679
  %.str.4.sink887 = phi ptr [ @.str.4, %1679 ], [ @.str, %1675 ]
  store i32 %1670, ptr %288, align 4, !tbaa !5
  %1681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1682 = load i32, ptr @test_count, align 4, !tbaa !5
  %1683 = load i32, ptr %234, align 4, !tbaa !5
  %1684 = call ptr @s2n_strerror(i32 noundef %1683, ptr noundef nonnull @.str.3) #11
  %1685 = load i32, ptr %234, align 4, !tbaa !5
  %1686 = call ptr @s2n_strerror_debug(i32 noundef %1685, ptr noundef nonnull @.str.3) #11
  %1687 = load i32, ptr %288, align 4, !tbaa !5
  %1688 = call ptr @strerror(i32 noundef %1687) #11
  %1689 = load i32, ptr %288, align 4, !tbaa !5
  %1690 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1681, ptr noundef nonnull %.str.4.sink887, i32 noundef %1682, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.2, i32 noundef 245, ptr noundef %1684, ptr noundef %1686, ptr noundef %1688, i32 noundef %1689) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1691:                                             ; preds = %1665
  %1692 = add nsw i32 %1640, 3
  store i32 %1692, ptr @test_count, align 4, !tbaa !5
  %1693 = call ptr @s2n_strerror_debug(i32 noundef 402653257, ptr noundef nonnull @.str.3) #11
  %1694 = icmp eq ptr %1693, null
  br i1 %1694, label %1695, label %1717

1695:                                             ; preds = %1691
  %1696 = load i32, ptr %288, align 4, !tbaa !5
  %1697 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1698 = call i32 @s2n_print_stacktrace(ptr noundef %1697) #11
  %1699 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1700 = trunc nuw i8 %1699 to i1
  br i1 %1700, label %1701, label %1705

1701:                                             ; preds = %1695
  %1702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1703 = call i32 @fileno(ptr noundef %1702) #11
  %1704 = call i32 @isatty(i32 noundef %1703) #11
  %.not321 = icmp eq i32 %1704, 0
  br i1 %.not321, label %1705, label %1706

1705:                                             ; preds = %1701, %1695
  br label %1706

1706:                                             ; preds = %1701, %1705
  %.str.4.sink896 = phi ptr [ @.str.4, %1705 ], [ @.str, %1701 ]
  store i32 %1696, ptr %288, align 4, !tbaa !5
  %1707 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1708 = load i32, ptr @test_count, align 4, !tbaa !5
  %1709 = load i32, ptr %234, align 4, !tbaa !5
  %1710 = call ptr @s2n_strerror(i32 noundef %1709, ptr noundef nonnull @.str.3) #11
  %1711 = load i32, ptr %234, align 4, !tbaa !5
  %1712 = call ptr @s2n_strerror_debug(i32 noundef %1711, ptr noundef nonnull @.str.3) #11
  %1713 = load i32, ptr %288, align 4, !tbaa !5
  %1714 = call ptr @strerror(i32 noundef %1713) #11
  %1715 = load i32, ptr %288, align 4, !tbaa !5
  %1716 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1707, ptr noundef nonnull %.str.4.sink896, i32 noundef %1708, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 245, ptr noundef %1710, ptr noundef %1712, ptr noundef %1714, i32 noundef %1715) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1717:                                             ; preds = %1691
  store i32 0, ptr %234, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %288, align 4, !tbaa !5
  %1718 = load i32, ptr @test_count, align 4, !tbaa !5
  %1719 = add nsw i32 %1718, 1
  store i32 %1719, ptr @test_count, align 4, !tbaa !5
  %1720 = load i16, ptr %33, align 2, !tbaa !16
  %1721 = icmp eq i16 %1720, 0
  br i1 %1721, label %1744, label %1722

1722:                                             ; preds = %1717
  %1723 = load i32, ptr %288, align 4, !tbaa !5
  %1724 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1725 = call i32 @s2n_print_stacktrace(ptr noundef %1724) #11
  %1726 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1727 = trunc nuw i8 %1726 to i1
  br i1 %1727, label %1728, label %1732

1728:                                             ; preds = %1722
  %1729 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1730 = call i32 @fileno(ptr noundef %1729) #11
  %1731 = call i32 @isatty(i32 noundef %1730) #11
  %.not276 = icmp eq i32 %1731, 0
  br i1 %.not276, label %1732, label %1733

1732:                                             ; preds = %1728, %1722
  br label %1733

1733:                                             ; preds = %1728, %1732
  %.str.4.sink905 = phi ptr [ @.str.4, %1732 ], [ @.str, %1728 ]
  store i32 %1723, ptr %288, align 4, !tbaa !5
  %1734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1735 = load i32, ptr @test_count, align 4, !tbaa !5
  %1736 = load i32, ptr %234, align 4, !tbaa !5
  %1737 = call ptr @s2n_strerror(i32 noundef %1736, ptr noundef nonnull @.str.3) #11
  %1738 = load i32, ptr %234, align 4, !tbaa !5
  %1739 = call ptr @s2n_strerror_debug(i32 noundef %1738, ptr noundef nonnull @.str.3) #11
  %1740 = load i32, ptr %288, align 4, !tbaa !5
  %1741 = call ptr @strerror(i32 noundef %1740) #11
  %1742 = load i32, ptr %288, align 4, !tbaa !5
  %1743 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1734, ptr noundef nonnull %.str.4.sink905, i32 noundef %1735, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 247, ptr noundef %1737, ptr noundef %1739, ptr noundef %1741, i32 noundef %1742) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1744:                                             ; preds = %1717
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %33) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %29) #11
  call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %34) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(34) %34, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %35) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %35, i8 0, i64 24, i1 false)
  %1745 = add nsw i32 %1718, 2
  store i32 %1745, ptr @test_count, align 4, !tbaa !5
  %1746 = call i32 @s2n_blob_init(ptr noundef nonnull %35, ptr noundef nonnull %34, i32 noundef 34) #11
  %1747 = icmp eq i32 %1746, -1
  br i1 %1747, label %1748, label %1770

1748:                                             ; preds = %1744
  %1749 = load i32, ptr %288, align 4, !tbaa !5
  %1750 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1751 = call i32 @s2n_print_stacktrace(ptr noundef %1750) #11
  %1752 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1753 = trunc nuw i8 %1752 to i1
  br i1 %1753, label %1754, label %1758

1754:                                             ; preds = %1748
  %1755 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1756 = call i32 @fileno(ptr noundef %1755) #11
  %1757 = call i32 @isatty(i32 noundef %1756) #11
  %.not320 = icmp eq i32 %1757, 0
  br i1 %.not320, label %1758, label %1759

1758:                                             ; preds = %1754, %1748
  br label %1759

1759:                                             ; preds = %1754, %1758
  %.str.4.sink914 = phi ptr [ @.str.4, %1758 ], [ @.str, %1754 ]
  store i32 %1749, ptr %288, align 4, !tbaa !5
  %1760 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1761 = load i32, ptr @test_count, align 4, !tbaa !5
  %1762 = load i32, ptr %234, align 4, !tbaa !5
  %1763 = call ptr @s2n_strerror(i32 noundef %1762, ptr noundef nonnull @.str.3) #11
  %1764 = load i32, ptr %234, align 4, !tbaa !5
  %1765 = call ptr @s2n_strerror_debug(i32 noundef %1764, ptr noundef nonnull @.str.3) #11
  %1766 = load i32, ptr %288, align 4, !tbaa !5
  %1767 = call ptr @strerror(i32 noundef %1766) #11
  %1768 = load i32, ptr %288, align 4, !tbaa !5
  %1769 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1760, ptr noundef nonnull %.str.4.sink914, i32 noundef %1761, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 254, ptr noundef %1763, ptr noundef %1765, ptr noundef %1767, i32 noundef %1768) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1770:                                             ; preds = %1744
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %1422, ptr noundef nonnull align 8 dereferenceable(24) %35, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %36) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %36, i8 0, i64 40, i1 false)
  %1771 = load i32, ptr @test_count, align 4, !tbaa !5
  %1772 = add nsw i32 %1771, 1
  store i32 %1772, ptr @test_count, align 4, !tbaa !5
  %1773 = call i32 @s2n_stuffer_init(ptr noundef nonnull %36, ptr noundef nonnull %35) #11
  %1774 = icmp eq i32 %1773, -1
  br i1 %1774, label %1775, label %1797

1775:                                             ; preds = %1770
  %1776 = load i32, ptr %288, align 4, !tbaa !5
  %1777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1778 = call i32 @s2n_print_stacktrace(ptr noundef %1777) #11
  %1779 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1780 = trunc nuw i8 %1779 to i1
  br i1 %1780, label %1781, label %1785

1781:                                             ; preds = %1775
  %1782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1783 = call i32 @fileno(ptr noundef %1782) #11
  %1784 = call i32 @isatty(i32 noundef %1783) #11
  %.not319 = icmp eq i32 %1784, 0
  br i1 %.not319, label %1785, label %1786

1785:                                             ; preds = %1781, %1775
  br label %1786

1786:                                             ; preds = %1781, %1785
  %.str.4.sink923 = phi ptr [ @.str.4, %1785 ], [ @.str, %1781 ]
  store i32 %1776, ptr %288, align 4, !tbaa !5
  %1787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1788 = load i32, ptr @test_count, align 4, !tbaa !5
  %1789 = load i32, ptr %234, align 4, !tbaa !5
  %1790 = call ptr @s2n_strerror(i32 noundef %1789, ptr noundef nonnull @.str.3) #11
  %1791 = load i32, ptr %234, align 4, !tbaa !5
  %1792 = call ptr @s2n_strerror_debug(i32 noundef %1791, ptr noundef nonnull @.str.3) #11
  %1793 = load i32, ptr %288, align 4, !tbaa !5
  %1794 = call ptr @strerror(i32 noundef %1793) #11
  %1795 = load i32, ptr %288, align 4, !tbaa !5
  %1796 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1787, ptr noundef nonnull %.str.4.sink923, i32 noundef %1788, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 258, ptr noundef %1790, ptr noundef %1792, ptr noundef %1794, i32 noundef %1795) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1797:                                             ; preds = %1770
  %1798 = load i32, ptr @test_count, align 4, !tbaa !5
  %1799 = add nsw i32 %1798, 1
  store i32 %1799, ptr @test_count, align 4, !tbaa !5
  %1800 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %36, i16 noundef zeroext 3) #11
  %1801 = icmp eq i32 %1800, -1
  br i1 %1801, label %1802, label %1824

1802:                                             ; preds = %1797
  %1803 = load i32, ptr %288, align 4, !tbaa !5
  %1804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1805 = call i32 @s2n_print_stacktrace(ptr noundef %1804) #11
  %1806 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1807 = trunc nuw i8 %1806 to i1
  br i1 %1807, label %1808, label %1812

1808:                                             ; preds = %1802
  %1809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1810 = call i32 @fileno(ptr noundef %1809) #11
  %1811 = call i32 @isatty(i32 noundef %1810) #11
  %.not318 = icmp eq i32 %1811, 0
  br i1 %.not318, label %1812, label %1813

1812:                                             ; preds = %1808, %1802
  br label %1813

1813:                                             ; preds = %1808, %1812
  %.str.4.sink932 = phi ptr [ @.str.4, %1812 ], [ @.str, %1808 ]
  store i32 %1803, ptr %288, align 4, !tbaa !5
  %1814 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1815 = load i32, ptr @test_count, align 4, !tbaa !5
  %1816 = load i32, ptr %234, align 4, !tbaa !5
  %1817 = call ptr @s2n_strerror(i32 noundef %1816, ptr noundef nonnull @.str.3) #11
  %1818 = load i32, ptr %234, align 4, !tbaa !5
  %1819 = call ptr @s2n_strerror_debug(i32 noundef %1818, ptr noundef nonnull @.str.3) #11
  %1820 = load i32, ptr %288, align 4, !tbaa !5
  %1821 = call ptr @strerror(i32 noundef %1820) #11
  %1822 = load i32, ptr %288, align 4, !tbaa !5
  %1823 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1814, ptr noundef nonnull %.str.4.sink932, i32 noundef %1815, ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.2, i32 noundef 261, ptr noundef %1817, ptr noundef %1819, ptr noundef %1821, i32 noundef %1822) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1824:                                             ; preds = %1797
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %37, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %38) #11
  store i16 0, ptr %38, align 2, !tbaa !16
  %1825 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %23, ptr noundef nonnull %37, i16 noundef zeroext 16, ptr noundef nonnull %38) #11
  %1826 = load i32, ptr @test_count, align 4, !tbaa !5
  %1827 = add nsw i32 %1826, 1
  store i32 %1827, ptr @test_count, align 4, !tbaa !5
  %1828 = icmp eq i32 %1825, -1
  br i1 %1828, label %1851, label %1829

1829:                                             ; preds = %1824
  %1830 = load i32, ptr %288, align 4, !tbaa !5
  %1831 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1832 = call i32 @s2n_print_stacktrace(ptr noundef %1831) #11
  %1833 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1834 = trunc nuw i8 %1833 to i1
  br i1 %1834, label %1835, label %1839

1835:                                             ; preds = %1829
  %1836 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1837 = call i32 @fileno(ptr noundef %1836) #11
  %1838 = call i32 @isatty(i32 noundef %1837) #11
  %.not277 = icmp eq i32 %1838, 0
  br i1 %.not277, label %1839, label %1840

1839:                                             ; preds = %1835, %1829
  br label %1840

1840:                                             ; preds = %1835, %1839
  %.str.4.sink941 = phi ptr [ @.str.4, %1839 ], [ @.str, %1835 ]
  store i32 %1830, ptr %288, align 4, !tbaa !5
  %1841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1842 = load i32, ptr @test_count, align 4, !tbaa !5
  %1843 = load i32, ptr %234, align 4, !tbaa !5
  %1844 = call ptr @s2n_strerror(i32 noundef %1843, ptr noundef nonnull @.str.3) #11
  %1845 = load i32, ptr %234, align 4, !tbaa !5
  %1846 = call ptr @s2n_strerror_debug(i32 noundef %1845, ptr noundef nonnull @.str.3) #11
  %1847 = load i32, ptr %288, align 4, !tbaa !5
  %1848 = call ptr @strerror(i32 noundef %1847) #11
  %1849 = load i32, ptr %288, align 4, !tbaa !5
  %1850 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1841, ptr noundef nonnull %.str.4.sink941, i32 noundef %1842, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 267, ptr noundef %1844, ptr noundef %1846, ptr noundef %1848, i32 noundef %1849) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1851:                                             ; preds = %1824
  %1852 = add nsw i32 %1826, 2
  store i32 %1852, ptr @test_count, align 4, !tbaa !5
  %1853 = load i32, ptr %234, align 4, !tbaa !5
  %1854 = icmp eq i32 %1853, 402653257
  br i1 %1854, label %1877, label %1855

1855:                                             ; preds = %1851
  %1856 = load i32, ptr %288, align 4, !tbaa !5
  %1857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1858 = call i32 @s2n_print_stacktrace(ptr noundef %1857) #11
  %1859 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1860 = trunc nuw i8 %1859 to i1
  br i1 %1860, label %1861, label %1865

1861:                                             ; preds = %1855
  %1862 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1863 = call i32 @fileno(ptr noundef %1862) #11
  %1864 = call i32 @isatty(i32 noundef %1863) #11
  %.not278 = icmp eq i32 %1864, 0
  br i1 %.not278, label %1865, label %1866

1865:                                             ; preds = %1861, %1855
  br label %1866

1866:                                             ; preds = %1861, %1865
  %.str.4.sink950 = phi ptr [ @.str.4, %1865 ], [ @.str, %1861 ]
  store i32 %1856, ptr %288, align 4, !tbaa !5
  %1867 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1868 = load i32, ptr @test_count, align 4, !tbaa !5
  %1869 = load i32, ptr %234, align 4, !tbaa !5
  %1870 = call ptr @s2n_strerror(i32 noundef %1869, ptr noundef nonnull @.str.3) #11
  %1871 = load i32, ptr %234, align 4, !tbaa !5
  %1872 = call ptr @s2n_strerror_debug(i32 noundef %1871, ptr noundef nonnull @.str.3) #11
  %1873 = load i32, ptr %288, align 4, !tbaa !5
  %1874 = call ptr @strerror(i32 noundef %1873) #11
  %1875 = load i32, ptr %288, align 4, !tbaa !5
  %1876 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1867, ptr noundef nonnull %.str.4.sink950, i32 noundef %1868, ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.2, i32 noundef 267, ptr noundef %1870, ptr noundef %1872, ptr noundef %1874, i32 noundef %1875) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1877:                                             ; preds = %1851
  %1878 = add nsw i32 %1826, 3
  store i32 %1878, ptr @test_count, align 4, !tbaa !5
  %1879 = call ptr @s2n_strerror_debug(i32 noundef 402653257, ptr noundef nonnull @.str.3) #11
  %1880 = icmp eq ptr %1879, null
  br i1 %1880, label %1881, label %1903

1881:                                             ; preds = %1877
  %1882 = load i32, ptr %288, align 4, !tbaa !5
  %1883 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1884 = call i32 @s2n_print_stacktrace(ptr noundef %1883) #11
  %1885 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1886 = trunc nuw i8 %1885 to i1
  br i1 %1886, label %1887, label %1891

1887:                                             ; preds = %1881
  %1888 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1889 = call i32 @fileno(ptr noundef %1888) #11
  %1890 = call i32 @isatty(i32 noundef %1889) #11
  %.not317 = icmp eq i32 %1890, 0
  br i1 %.not317, label %1891, label %1892

1891:                                             ; preds = %1887, %1881
  br label %1892

1892:                                             ; preds = %1887, %1891
  %.str.4.sink959 = phi ptr [ @.str.4, %1891 ], [ @.str, %1887 ]
  store i32 %1882, ptr %288, align 4, !tbaa !5
  %1893 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1894 = load i32, ptr @test_count, align 4, !tbaa !5
  %1895 = load i32, ptr %234, align 4, !tbaa !5
  %1896 = call ptr @s2n_strerror(i32 noundef %1895, ptr noundef nonnull @.str.3) #11
  %1897 = load i32, ptr %234, align 4, !tbaa !5
  %1898 = call ptr @s2n_strerror_debug(i32 noundef %1897, ptr noundef nonnull @.str.3) #11
  %1899 = load i32, ptr %288, align 4, !tbaa !5
  %1900 = call ptr @strerror(i32 noundef %1899) #11
  %1901 = load i32, ptr %288, align 4, !tbaa !5
  %1902 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1893, ptr noundef nonnull %.str.4.sink959, i32 noundef %1894, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 267, ptr noundef %1896, ptr noundef %1898, ptr noundef %1900, i32 noundef %1901) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1903:                                             ; preds = %1877
  store i32 0, ptr %234, align 4, !tbaa !5
  call void @s2n_debug_info_reset() #11
  store i32 0, ptr %288, align 4, !tbaa !5
  %1904 = load i32, ptr @test_count, align 4, !tbaa !5
  %1905 = add nsw i32 %1904, 1
  store i32 %1905, ptr @test_count, align 4, !tbaa !5
  %1906 = load i16, ptr %38, align 2, !tbaa !16
  %1907 = icmp eq i16 %1906, 0
  br i1 %1907, label %1930, label %1908

1908:                                             ; preds = %1903
  %1909 = load i32, ptr %288, align 4, !tbaa !5
  %1910 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1911 = call i32 @s2n_print_stacktrace(ptr noundef %1910) #11
  %1912 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1913 = trunc nuw i8 %1912 to i1
  br i1 %1913, label %1914, label %1918

1914:                                             ; preds = %1908
  %1915 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1916 = call i32 @fileno(ptr noundef %1915) #11
  %1917 = call i32 @isatty(i32 noundef %1916) #11
  %.not279 = icmp eq i32 %1917, 0
  br i1 %.not279, label %1918, label %1919

1918:                                             ; preds = %1914, %1908
  br label %1919

1919:                                             ; preds = %1914, %1918
  %.str.4.sink968 = phi ptr [ @.str.4, %1918 ], [ @.str, %1914 ]
  store i32 %1909, ptr %288, align 4, !tbaa !5
  %1920 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1921 = load i32, ptr @test_count, align 4, !tbaa !5
  %1922 = load i32, ptr %234, align 4, !tbaa !5
  %1923 = call ptr @s2n_strerror(i32 noundef %1922, ptr noundef nonnull @.str.3) #11
  %1924 = load i32, ptr %234, align 4, !tbaa !5
  %1925 = call ptr @s2n_strerror_debug(i32 noundef %1924, ptr noundef nonnull @.str.3) #11
  %1926 = load i32, ptr %288, align 4, !tbaa !5
  %1927 = call ptr @strerror(i32 noundef %1926) #11
  %1928 = load i32, ptr %288, align 4, !tbaa !5
  %1929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1920, ptr noundef nonnull %.str.4.sink968, i32 noundef %1921, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 269, ptr noundef %1923, ptr noundef %1925, ptr noundef %1927, i32 noundef %1928) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1930:                                             ; preds = %1903
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %38) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %34) #11
  call void @llvm.lifetime.end.p0(i64 808, ptr nonnull %23) #11
  call void @llvm.lifetime.start.p0(i64 808, ptr nonnull %39) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(808) %39, i8 0, i64 808, i1 false)
  %1931 = getelementptr inbounds i8, ptr %39, i64 24
  %1932 = load i8, ptr %4, align 1, !tbaa !15
  %1933 = zext i8 %1932 to i64
  %1934 = getelementptr inbounds [21 x %struct.s2n_parsed_extension], ptr %1931, i64 0, i64 %1933
  %1935 = getelementptr inbounds i8, ptr %1934, i64 24
  store i16 10, ptr %1935, align 8, !tbaa !18
  br label %1939

1936:                                             ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 808, ptr nonnull %39) #11
  %1937 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_client_supported_groups_extension, i64 8), align 8
  %1938 = getelementptr inbounds i8, ptr %51, i64 8
  br label %2248

1939:                                             ; preds = %1930, %._crit_edge
  %indvars.iv = phi i32 [ 0, %1930 ], [ %indvars.iv.next, %._crit_edge ]
  %1940 = shl nuw nsw i32 %indvars.iv, 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %40, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %41, i8 0, i64 24, i1 false)
  %1941 = load i32, ptr @test_count, align 4, !tbaa !5
  %1942 = add nsw i32 %1941, 1
  store i32 %1942, ptr @test_count, align 4, !tbaa !5
  %1943 = call i32 @s2n_blob_init(ptr noundef nonnull %41, ptr noundef nonnull %40, i32 noundef %1940) #11
  %1944 = icmp eq i32 %1943, -1
  br i1 %1944, label %1945, label %1967

1945:                                             ; preds = %1939
  %1946 = load i32, ptr %288, align 4, !tbaa !5
  %1947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1948 = call i32 @s2n_print_stacktrace(ptr noundef %1947) #11
  %1949 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1950 = trunc nuw i8 %1949 to i1
  br i1 %1950, label %1951, label %1955

1951:                                             ; preds = %1945
  %1952 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1953 = call i32 @fileno(ptr noundef %1952) #11
  %1954 = call i32 @isatty(i32 noundef %1953) #11
  %.not316 = icmp eq i32 %1954, 0
  br i1 %.not316, label %1955, label %1956

1955:                                             ; preds = %1951, %1945
  br label %1956

1956:                                             ; preds = %1951, %1955
  %.str.4.sink977 = phi ptr [ @.str.4, %1955 ], [ @.str, %1951 ]
  store i32 %1946, ptr %288, align 4, !tbaa !5
  %1957 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1958 = load i32, ptr @test_count, align 4, !tbaa !5
  %1959 = load i32, ptr %234, align 4, !tbaa !5
  %1960 = call ptr @s2n_strerror(i32 noundef %1959, ptr noundef nonnull @.str.3) #11
  %1961 = load i32, ptr %234, align 4, !tbaa !5
  %1962 = call ptr @s2n_strerror_debug(i32 noundef %1961, ptr noundef nonnull @.str.3) #11
  %1963 = load i32, ptr %288, align 4, !tbaa !5
  %1964 = call ptr @strerror(i32 noundef %1963) #11
  %1965 = load i32, ptr %288, align 4, !tbaa !5
  %1966 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1957, ptr noundef nonnull %.str.4.sink977, i32 noundef %1958, ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.2, i32 noundef 285, ptr noundef %1960, ptr noundef %1962, ptr noundef %1964, i32 noundef %1965) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1967:                                             ; preds = %1939
  %1968 = load i32, ptr @test_count, align 4, !tbaa !5
  %1969 = add nsw i32 %1968, 1
  store i32 %1969, ptr @test_count, align 4, !tbaa !5
  %1970 = call i32 @s2n_get_public_random_data(ptr noundef nonnull %41) #11
  %1971 = call zeroext i1 @s2n_result_is_ok(i32 %1970)
  br i1 %1971, label %1994, label %1972

1972:                                             ; preds = %1967
  %1973 = load i32, ptr %288, align 4, !tbaa !5
  %1974 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1975 = call i32 @s2n_print_stacktrace(ptr noundef %1974) #11
  %1976 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1977 = trunc nuw i8 %1976 to i1
  br i1 %1977, label %1978, label %1982

1978:                                             ; preds = %1972
  %1979 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1980 = call i32 @fileno(ptr noundef %1979) #11
  %1981 = call i32 @isatty(i32 noundef %1980) #11
  %.not306 = icmp eq i32 %1981, 0
  br i1 %.not306, label %1982, label %1983

1982:                                             ; preds = %1978, %1972
  br label %1983

1983:                                             ; preds = %1978, %1982
  %.str.4.sink986 = phi ptr [ @.str.4, %1982 ], [ @.str, %1978 ]
  store i32 %1973, ptr %288, align 4, !tbaa !5
  %1984 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1985 = load i32, ptr @test_count, align 4, !tbaa !5
  %1986 = load i32, ptr %234, align 4, !tbaa !5
  %1987 = call ptr @s2n_strerror(i32 noundef %1986, ptr noundef nonnull @.str.3) #11
  %1988 = load i32, ptr %234, align 4, !tbaa !5
  %1989 = call ptr @s2n_strerror_debug(i32 noundef %1988, ptr noundef nonnull @.str.3) #11
  %1990 = load i32, ptr %288, align 4, !tbaa !5
  %1991 = call ptr @strerror(i32 noundef %1990) #11
  %1992 = load i32, ptr %288, align 4, !tbaa !5
  %1993 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1984, ptr noundef nonnull %.str.4.sink986, i32 noundef %1985, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.2, i32 noundef 286, ptr noundef %1987, ptr noundef %1989, ptr noundef %1991, i32 noundef %1992) #13
  call void @exit(i32 noundef 1) #14
  unreachable

1994:                                             ; preds = %1967
  call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %42) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(34) %42, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %43, i8 0, i64 24, i1 false)
  %1995 = load i32, ptr @test_count, align 4, !tbaa !5
  %1996 = add nsw i32 %1995, 1
  store i32 %1996, ptr @test_count, align 4, !tbaa !5
  %1997 = call i32 @s2n_blob_init(ptr noundef nonnull %43, ptr noundef nonnull %42, i32 noundef 34) #11
  %1998 = icmp eq i32 %1997, -1
  br i1 %1998, label %1999, label %2021

1999:                                             ; preds = %1994
  %2000 = load i32, ptr %288, align 4, !tbaa !5
  %2001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2002 = call i32 @s2n_print_stacktrace(ptr noundef %2001) #11
  %2003 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2004 = trunc nuw i8 %2003 to i1
  br i1 %2004, label %2005, label %2009

2005:                                             ; preds = %1999
  %2006 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2007 = call i32 @fileno(ptr noundef %2006) #11
  %2008 = call i32 @isatty(i32 noundef %2007) #11
  %.not315 = icmp eq i32 %2008, 0
  br i1 %.not315, label %2009, label %2010

2009:                                             ; preds = %2005, %1999
  br label %2010

2010:                                             ; preds = %2005, %2009
  %.str.4.sink995 = phi ptr [ @.str.4, %2009 ], [ @.str, %2005 ]
  store i32 %2000, ptr %288, align 4, !tbaa !5
  %2011 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2012 = load i32, ptr @test_count, align 4, !tbaa !5
  %2013 = load i32, ptr %234, align 4, !tbaa !5
  %2014 = call ptr @s2n_strerror(i32 noundef %2013, ptr noundef nonnull @.str.3) #11
  %2015 = load i32, ptr %234, align 4, !tbaa !5
  %2016 = call ptr @s2n_strerror_debug(i32 noundef %2015, ptr noundef nonnull @.str.3) #11
  %2017 = load i32, ptr %288, align 4, !tbaa !5
  %2018 = call ptr @strerror(i32 noundef %2017) #11
  %2019 = load i32, ptr %288, align 4, !tbaa !5
  %2020 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2011, ptr noundef nonnull %.str.4.sink995, i32 noundef %2012, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 290, ptr noundef %2014, ptr noundef %2016, ptr noundef %2018, i32 noundef %2019) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2021:                                             ; preds = %1994
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %1934, ptr noundef nonnull align 8 dereferenceable(24) %43, i64 24, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %44) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %44, i8 0, i64 40, i1 false)
  %2022 = load i32, ptr @test_count, align 4, !tbaa !5
  %2023 = add nsw i32 %2022, 1
  store i32 %2023, ptr @test_count, align 4, !tbaa !5
  %2024 = call i32 @s2n_stuffer_init(ptr noundef nonnull %44, ptr noundef nonnull %43) #11
  %2025 = icmp eq i32 %2024, -1
  br i1 %2025, label %2026, label %2048

2026:                                             ; preds = %2021
  %2027 = load i32, ptr %288, align 4, !tbaa !5
  %2028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2029 = call i32 @s2n_print_stacktrace(ptr noundef %2028) #11
  %2030 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2031 = trunc nuw i8 %2030 to i1
  br i1 %2031, label %2032, label %2036

2032:                                             ; preds = %2026
  %2033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2034 = call i32 @fileno(ptr noundef %2033) #11
  %2035 = call i32 @isatty(i32 noundef %2034) #11
  %.not314 = icmp eq i32 %2035, 0
  br i1 %.not314, label %2036, label %2037

2036:                                             ; preds = %2032, %2026
  br label %2037

2037:                                             ; preds = %2032, %2036
  %.str.4.sink1004 = phi ptr [ @.str.4, %2036 ], [ @.str, %2032 ]
  store i32 %2027, ptr %288, align 4, !tbaa !5
  %2038 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2039 = load i32, ptr @test_count, align 4, !tbaa !5
  %2040 = load i32, ptr %234, align 4, !tbaa !5
  %2041 = call ptr @s2n_strerror(i32 noundef %2040, ptr noundef nonnull @.str.3) #11
  %2042 = load i32, ptr %234, align 4, !tbaa !5
  %2043 = call ptr @s2n_strerror_debug(i32 noundef %2042, ptr noundef nonnull @.str.3) #11
  %2044 = load i32, ptr %288, align 4, !tbaa !5
  %2045 = call ptr @strerror(i32 noundef %2044) #11
  %2046 = load i32, ptr %288, align 4, !tbaa !5
  %2047 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2038, ptr noundef nonnull %.str.4.sink1004, i32 noundef %2039, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 294, ptr noundef %2041, ptr noundef %2043, ptr noundef %2045, i32 noundef %2046) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2048:                                             ; preds = %2021
  %2049 = load i32, ptr @test_count, align 4, !tbaa !5
  %2050 = add nsw i32 %2049, 1
  store i32 %2050, ptr @test_count, align 4, !tbaa !5
  %2051 = trunc nuw nsw i32 %1940 to i16
  %2052 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %44, i16 noundef zeroext %2051) #11
  %2053 = icmp eq i32 %2052, -1
  br i1 %2053, label %2054, label %2076

2054:                                             ; preds = %2048
  %2055 = load i32, ptr %288, align 4, !tbaa !5
  %2056 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2057 = call i32 @s2n_print_stacktrace(ptr noundef %2056) #11
  %2058 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2059 = trunc nuw i8 %2058 to i1
  br i1 %2059, label %2060, label %2064

2060:                                             ; preds = %2054
  %2061 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2062 = call i32 @fileno(ptr noundef %2061) #11
  %2063 = call i32 @isatty(i32 noundef %2062) #11
  %.not313 = icmp eq i32 %2063, 0
  br i1 %.not313, label %2064, label %2065

2064:                                             ; preds = %2060, %2054
  br label %2065

2065:                                             ; preds = %2060, %2064
  %.str.4.sink1013 = phi ptr [ @.str.4, %2064 ], [ @.str, %2060 ]
  store i32 %2055, ptr %288, align 4, !tbaa !5
  %2066 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2067 = load i32, ptr @test_count, align 4, !tbaa !5
  %2068 = load i32, ptr %234, align 4, !tbaa !5
  %2069 = call ptr @s2n_strerror(i32 noundef %2068, ptr noundef nonnull @.str.3) #11
  %2070 = load i32, ptr %234, align 4, !tbaa !5
  %2071 = call ptr @s2n_strerror_debug(i32 noundef %2070, ptr noundef nonnull @.str.3) #11
  %2072 = load i32, ptr %288, align 4, !tbaa !5
  %2073 = call ptr @strerror(i32 noundef %2072) #11
  %2074 = load i32, ptr %288, align 4, !tbaa !5
  %2075 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2066, ptr noundef nonnull %.str.4.sink1013, i32 noundef %2067, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.2, i32 noundef 295, ptr noundef %2069, ptr noundef %2071, ptr noundef %2073, i32 noundef %2074) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2076:                                             ; preds = %2048
  %2077 = load i32, ptr @test_count, align 4, !tbaa !5
  %2078 = add nsw i32 %2077, 1
  store i32 %2078, ptr @test_count, align 4, !tbaa !5
  %2079 = call i32 @s2n_stuffer_write(ptr noundef nonnull %44, ptr noundef nonnull %41) #11
  %2080 = icmp eq i32 %2079, -1
  br i1 %2080, label %2081, label %2103

2081:                                             ; preds = %2076
  %2082 = load i32, ptr %288, align 4, !tbaa !5
  %2083 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2084 = call i32 @s2n_print_stacktrace(ptr noundef %2083) #11
  %2085 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2086 = trunc nuw i8 %2085 to i1
  br i1 %2086, label %2087, label %2091

2087:                                             ; preds = %2081
  %2088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2089 = call i32 @fileno(ptr noundef %2088) #11
  %2090 = call i32 @isatty(i32 noundef %2089) #11
  %.not312 = icmp eq i32 %2090, 0
  br i1 %.not312, label %2091, label %2092

2091:                                             ; preds = %2087, %2081
  br label %2092

2092:                                             ; preds = %2087, %2091
  %.str.4.sink1022 = phi ptr [ @.str.4, %2091 ], [ @.str, %2087 ]
  store i32 %2082, ptr %288, align 4, !tbaa !5
  %2093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2094 = load i32, ptr @test_count, align 4, !tbaa !5
  %2095 = load i32, ptr %234, align 4, !tbaa !5
  %2096 = call ptr @s2n_strerror(i32 noundef %2095, ptr noundef nonnull @.str.3) #11
  %2097 = load i32, ptr %234, align 4, !tbaa !5
  %2098 = call ptr @s2n_strerror_debug(i32 noundef %2097, ptr noundef nonnull @.str.3) #11
  %2099 = load i32, ptr %288, align 4, !tbaa !5
  %2100 = call ptr @strerror(i32 noundef %2099) #11
  %2101 = load i32, ptr %288, align 4, !tbaa !5
  %2102 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2093, ptr noundef nonnull %.str.4.sink1022, i32 noundef %2094, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.2, i32 noundef 296, ptr noundef %2096, ptr noundef %2098, ptr noundef %2100, i32 noundef %2101) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2103:                                             ; preds = %2076
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %45, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %46) #11
  store i16 0, ptr %46, align 2, !tbaa !16
  %2104 = load i32, ptr @test_count, align 4, !tbaa !5
  %2105 = add nsw i32 %2104, 1
  store i32 %2105, ptr @test_count, align 4, !tbaa !5
  %2106 = call i32 @s2n_client_hello_get_supported_groups(ptr noundef nonnull %39, ptr noundef nonnull %45, i16 noundef zeroext 16, ptr noundef nonnull %46) #11
  %2107 = icmp eq i32 %2106, -1
  br i1 %2107, label %2108, label %2130

2108:                                             ; preds = %2103
  %2109 = load i32, ptr %288, align 4, !tbaa !5
  %2110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2111 = call i32 @s2n_print_stacktrace(ptr noundef %2110) #11
  %2112 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2113 = trunc nuw i8 %2112 to i1
  br i1 %2113, label %2114, label %2118

2114:                                             ; preds = %2108
  %2115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2116 = call i32 @fileno(ptr noundef %2115) #11
  %2117 = call i32 @isatty(i32 noundef %2116) #11
  %.not311 = icmp eq i32 %2117, 0
  br i1 %.not311, label %2118, label %2119

2118:                                             ; preds = %2114, %2108
  br label %2119

2119:                                             ; preds = %2114, %2118
  %.str.4.sink1031 = phi ptr [ @.str.4, %2118 ], [ @.str, %2114 ]
  store i32 %2109, ptr %288, align 4, !tbaa !5
  %2120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2121 = load i32, ptr @test_count, align 4, !tbaa !5
  %2122 = load i32, ptr %234, align 4, !tbaa !5
  %2123 = call ptr @s2n_strerror(i32 noundef %2122, ptr noundef nonnull @.str.3) #11
  %2124 = load i32, ptr %234, align 4, !tbaa !5
  %2125 = call ptr @s2n_strerror_debug(i32 noundef %2124, ptr noundef nonnull @.str.3) #11
  %2126 = load i32, ptr %288, align 4, !tbaa !5
  %2127 = call ptr @strerror(i32 noundef %2126) #11
  %2128 = load i32, ptr %288, align 4, !tbaa !5
  %2129 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2120, ptr noundef nonnull %.str.4.sink1031, i32 noundef %2121, ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.2, i32 noundef 301, ptr noundef %2123, ptr noundef %2125, ptr noundef %2127, i32 noundef %2128) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2130:                                             ; preds = %2103
  %2131 = load i32, ptr @test_count, align 4, !tbaa !5
  %2132 = add nsw i32 %2131, 1
  store i32 %2132, ptr @test_count, align 4, !tbaa !5
  %2133 = load i16, ptr %46, align 2, !tbaa !16
  %2134 = zext i16 %2133 to i32
  %2135 = icmp eq i32 %indvars.iv, %2134
  br i1 %2135, label %2158, label %2136

2136:                                             ; preds = %2130
  %2137 = load i32, ptr %288, align 4, !tbaa !5
  %2138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2139 = call i32 @s2n_print_stacktrace(ptr noundef %2138) #11
  %2140 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2141 = trunc nuw i8 %2140 to i1
  br i1 %2141, label %2142, label %2146

2142:                                             ; preds = %2136
  %2143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2144 = call i32 @fileno(ptr noundef %2143) #11
  %2145 = call i32 @isatty(i32 noundef %2144) #11
  %.not307 = icmp eq i32 %2145, 0
  br i1 %.not307, label %2146, label %2147

2146:                                             ; preds = %2142, %2136
  br label %2147

2147:                                             ; preds = %2142, %2146
  %.str.4.sink1040 = phi ptr [ @.str.4, %2146 ], [ @.str, %2142 ]
  store i32 %2137, ptr %288, align 4, !tbaa !5
  %2148 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2149 = load i32, ptr @test_count, align 4, !tbaa !5
  %2150 = load i32, ptr %234, align 4, !tbaa !5
  %2151 = call ptr @s2n_strerror(i32 noundef %2150, ptr noundef nonnull @.str.3) #11
  %2152 = load i32, ptr %234, align 4, !tbaa !5
  %2153 = call ptr @s2n_strerror_debug(i32 noundef %2152, ptr noundef nonnull @.str.3) #11
  %2154 = load i32, ptr %288, align 4, !tbaa !5
  %2155 = call ptr @strerror(i32 noundef %2154) #11
  %2156 = load i32, ptr %288, align 4, !tbaa !5
  %2157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2148, ptr noundef nonnull %.str.4.sink1040, i32 noundef %2149, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.2, i32 noundef 302, ptr noundef %2151, ptr noundef %2153, ptr noundef %2155, i32 noundef %2156) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2158:                                             ; preds = %2130
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %47) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %47, i8 0, i64 40, i1 false)
  %2159 = add nsw i32 %2131, 2
  store i32 %2159, ptr @test_count, align 4, !tbaa !5
  %2160 = call i32 @s2n_stuffer_init_written(ptr noundef nonnull %47, ptr noundef nonnull %41) #11
  %2161 = icmp eq i32 %2160, -1
  br i1 %2161, label %2163, label %.preheader

.preheader:                                       ; preds = %2158
  %2162 = load i16, ptr %46, align 2, !tbaa !16
  %.not366 = icmp eq i16 %2162, 0
  br i1 %.not366, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.preheader
  %.pre = load i32, ptr @test_count, align 4, !tbaa !5
  br label %.lr.ph

2163:                                             ; preds = %2158
  %2164 = load i32, ptr %288, align 4, !tbaa !5
  %2165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2166 = call i32 @s2n_print_stacktrace(ptr noundef %2165) #11
  %2167 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2168 = trunc nuw i8 %2167 to i1
  br i1 %2168, label %2169, label %2173

2169:                                             ; preds = %2163
  %2170 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2171 = call i32 @fileno(ptr noundef %2170) #11
  %2172 = call i32 @isatty(i32 noundef %2171) #11
  %.not310 = icmp eq i32 %2172, 0
  br i1 %.not310, label %2173, label %2174

2173:                                             ; preds = %2169, %2163
  br label %2174

2174:                                             ; preds = %2169, %2173
  %.str.4.sink1049 = phi ptr [ @.str.4, %2173 ], [ @.str, %2169 ]
  store i32 %2164, ptr %288, align 4, !tbaa !5
  %2175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2176 = load i32, ptr @test_count, align 4, !tbaa !5
  %2177 = load i32, ptr %234, align 4, !tbaa !5
  %2178 = call ptr @s2n_strerror(i32 noundef %2177, ptr noundef nonnull @.str.3) #11
  %2179 = load i32, ptr %234, align 4, !tbaa !5
  %2180 = call ptr @s2n_strerror_debug(i32 noundef %2179, ptr noundef nonnull @.str.3) #11
  %2181 = load i32, ptr %288, align 4, !tbaa !5
  %2182 = call ptr @strerror(i32 noundef %2181) #11
  %2183 = load i32, ptr %288, align 4, !tbaa !5
  %2184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2175, ptr noundef nonnull %.str.4.sink1049, i32 noundef %2176, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.2, i32 noundef 305, ptr noundef %2178, ptr noundef %2180, ptr noundef %2182, i32 noundef %2183) #13
  call void @exit(i32 noundef 1) #14
  unreachable

._crit_edge:                                      ; preds = %2240, %.preheader
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %47) #11
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %46) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %44) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #11
  call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %42) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #11
  %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1
  %exitcond.not = icmp eq i32 %indvars.iv.next, 16
  br i1 %exitcond.not, label %1936, label %1939, !llvm.loop !48

.lr.ph:                                           ; preds = %.lr.ph.preheader, %2240
  %2185 = phi i32 [ %2215, %2240 ], [ %.pre, %.lr.ph.preheader ]
  %.0252363 = phi i64 [ %2241, %2240 ], [ 0, %.lr.ph.preheader ]
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %48) #11
  store i16 0, ptr %48, align 2, !tbaa !16
  %2186 = add nsw i32 %2185, 1
  store i32 %2186, ptr @test_count, align 4, !tbaa !5
  %2187 = call i32 @s2n_stuffer_read_uint16(ptr noundef nonnull %47, ptr noundef nonnull %48) #11
  %2188 = icmp eq i32 %2187, -1
  br i1 %2188, label %2189, label %2211

2189:                                             ; preds = %.lr.ph
  %2190 = load i32, ptr %288, align 4, !tbaa !5
  %2191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2192 = call i32 @s2n_print_stacktrace(ptr noundef %2191) #11
  %2193 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2194 = trunc nuw i8 %2193 to i1
  br i1 %2194, label %2195, label %2199

2195:                                             ; preds = %2189
  %2196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2197 = call i32 @fileno(ptr noundef %2196) #11
  %2198 = call i32 @isatty(i32 noundef %2197) #11
  %.not309 = icmp eq i32 %2198, 0
  br i1 %.not309, label %2199, label %2200

2199:                                             ; preds = %2195, %2189
  br label %2200

2200:                                             ; preds = %2195, %2199
  %.str.4.sink1058 = phi ptr [ @.str.4, %2199 ], [ @.str, %2195 ]
  store i32 %2190, ptr %288, align 4, !tbaa !5
  %2201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2202 = load i32, ptr @test_count, align 4, !tbaa !5
  %2203 = load i32, ptr %234, align 4, !tbaa !5
  %2204 = call ptr @s2n_strerror(i32 noundef %2203, ptr noundef nonnull @.str.3) #11
  %2205 = load i32, ptr %234, align 4, !tbaa !5
  %2206 = call ptr @s2n_strerror_debug(i32 noundef %2205, ptr noundef nonnull @.str.3) #11
  %2207 = load i32, ptr %288, align 4, !tbaa !5
  %2208 = call ptr @strerror(i32 noundef %2207) #11
  %2209 = load i32, ptr %288, align 4, !tbaa !5
  %2210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2201, ptr noundef nonnull %.str.4.sink1058, i32 noundef %2202, ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.2, i32 noundef 309, ptr noundef %2204, ptr noundef %2206, ptr noundef %2208, i32 noundef %2209) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2211:                                             ; preds = %.lr.ph
  %2212 = getelementptr inbounds [16 x i16], ptr %45, i64 0, i64 %.0252363
  %2213 = load i16, ptr %2212, align 2, !tbaa !16
  %2214 = load i32, ptr @test_count, align 4, !tbaa !5
  %2215 = add nsw i32 %2214, 1
  store i32 %2215, ptr @test_count, align 4, !tbaa !5
  %2216 = load i16, ptr %48, align 2, !tbaa !16
  %2217 = icmp eq i16 %2216, %2213
  br i1 %2217, label %2240, label %2218

2218:                                             ; preds = %2211
  %2219 = load i32, ptr %288, align 4, !tbaa !5
  %2220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2221 = call i32 @s2n_print_stacktrace(ptr noundef %2220) #11
  %2222 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2223 = trunc nuw i8 %2222 to i1
  br i1 %2223, label %2224, label %2228

2224:                                             ; preds = %2218
  %2225 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2226 = call i32 @fileno(ptr noundef %2225) #11
  %2227 = call i32 @isatty(i32 noundef %2226) #11
  %.not308 = icmp eq i32 %2227, 0
  br i1 %.not308, label %2228, label %2229

2228:                                             ; preds = %2224, %2218
  br label %2229

2229:                                             ; preds = %2224, %2228
  %.str.4.sink1067 = phi ptr [ @.str.4, %2228 ], [ @.str, %2224 ]
  store i32 %2219, ptr %288, align 4, !tbaa !5
  %2230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2231 = load i32, ptr @test_count, align 4, !tbaa !5
  %2232 = load i32, ptr %234, align 4, !tbaa !5
  %2233 = call ptr @s2n_strerror(i32 noundef %2232, ptr noundef nonnull @.str.3) #11
  %2234 = load i32, ptr %234, align 4, !tbaa !5
  %2235 = call ptr @s2n_strerror_debug(i32 noundef %2234, ptr noundef nonnull @.str.3) #11
  %2236 = load i32, ptr %288, align 4, !tbaa !5
  %2237 = call ptr @strerror(i32 noundef %2236) #11
  %2238 = load i32, ptr %288, align 4, !tbaa !5
  %2239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2230, ptr noundef nonnull %.str.4.sink1067, i32 noundef %2231, ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.2, i32 noundef 312, ptr noundef %2233, ptr noundef %2235, ptr noundef %2237, i32 noundef %2238) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2240:                                             ; preds = %2211
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %48) #11
  %2241 = add nuw nsw i64 %.0252363, 1
  %2242 = load i16, ptr %46, align 2, !tbaa !16
  %2243 = zext i16 %2242 to i64
  %2244 = icmp ult i64 %2241, %2243
  br i1 %2244, label %.lr.ph, label %._crit_edge, !llvm.loop !50

2245:                                             ; preds = %2826
  %2246 = call i32 @s2n_cleanup() #11
  %2247 = icmp eq i32 %2246, -1
  br i1 %2247, label %2832, label %2854

2248:                                             ; preds = %1936, %2826
  %indvars.iv368 = phi i64 [ 0, %1936 ], [ %indvars.iv.next369, %2826 ]
  %2249 = getelementptr inbounds [7 x ptr], ptr @__const.main.policies, i64 0, i64 %indvars.iv368
  %2250 = load ptr, ptr %2249, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #11
  %2251 = call ptr @s2n_config_new() #11
  store ptr %2251, ptr %49, align 8, !tbaa !9
  %2252 = load i32, ptr @test_count, align 4, !tbaa !5
  %2253 = add nsw i32 %2252, 1
  store i32 %2253, ptr @test_count, align 4, !tbaa !5
  %2254 = icmp eq ptr %2251, null
  br i1 %2254, label %2255, label %2277

2255:                                             ; preds = %2248
  %2256 = load i32, ptr %288, align 4, !tbaa !5
  %2257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2258 = call i32 @s2n_print_stacktrace(ptr noundef %2257) #11
  %2259 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2260 = trunc nuw i8 %2259 to i1
  br i1 %2260, label %2261, label %2265

2261:                                             ; preds = %2255
  %2262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2263 = call i32 @fileno(ptr noundef %2262) #11
  %2264 = call i32 @isatty(i32 noundef %2263) #11
  %.not305 = icmp eq i32 %2264, 0
  br i1 %.not305, label %2265, label %2266

2265:                                             ; preds = %2261, %2255
  br label %2266

2266:                                             ; preds = %2261, %2265
  %.str.4.sink1076 = phi ptr [ @.str.4, %2265 ], [ @.str, %2261 ]
  store i32 %2256, ptr %288, align 4, !tbaa !5
  %2267 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2268 = load i32, ptr @test_count, align 4, !tbaa !5
  %2269 = load i32, ptr %234, align 4, !tbaa !5
  %2270 = call ptr @s2n_strerror(i32 noundef %2269, ptr noundef nonnull @.str.3) #11
  %2271 = load i32, ptr %234, align 4, !tbaa !5
  %2272 = call ptr @s2n_strerror_debug(i32 noundef %2271, ptr noundef nonnull @.str.3) #11
  %2273 = load i32, ptr %288, align 4, !tbaa !5
  %2274 = call ptr @strerror(i32 noundef %2273) #11
  %2275 = load i32, ptr %288, align 4, !tbaa !5
  %2276 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2267, ptr noundef nonnull %.str.4.sink1076, i32 noundef %2268, ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.2, i32 noundef 338, ptr noundef %2270, ptr noundef %2272, ptr noundef %2274, i32 noundef %2275) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2277:                                             ; preds = %2248
  %2278 = add nsw i32 %2252, 2
  store i32 %2278, ptr @test_count, align 4, !tbaa !5
  %2279 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef nonnull %2251) #11
  %2280 = icmp eq i32 %2279, -1
  br i1 %2280, label %2281, label %2303

2281:                                             ; preds = %2277
  %2282 = load i32, ptr %288, align 4, !tbaa !5
  %2283 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2284 = call i32 @s2n_print_stacktrace(ptr noundef %2283) #11
  %2285 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2286 = trunc nuw i8 %2285 to i1
  br i1 %2286, label %2287, label %2291

2287:                                             ; preds = %2281
  %2288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2289 = call i32 @fileno(ptr noundef %2288) #11
  %2290 = call i32 @isatty(i32 noundef %2289) #11
  %.not304 = icmp eq i32 %2290, 0
  br i1 %.not304, label %2291, label %2292

2291:                                             ; preds = %2287, %2281
  br label %2292

2292:                                             ; preds = %2287, %2291
  %.str.4.sink1085 = phi ptr [ @.str.4, %2291 ], [ @.str, %2287 ]
  store i32 %2282, ptr %288, align 4, !tbaa !5
  %2293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2294 = load i32, ptr @test_count, align 4, !tbaa !5
  %2295 = load i32, ptr %234, align 4, !tbaa !5
  %2296 = call ptr @s2n_strerror(i32 noundef %2295, ptr noundef nonnull @.str.3) #11
  %2297 = load i32, ptr %234, align 4, !tbaa !5
  %2298 = call ptr @s2n_strerror_debug(i32 noundef %2297, ptr noundef nonnull @.str.3) #11
  %2299 = load i32, ptr %288, align 4, !tbaa !5
  %2300 = call ptr @strerror(i32 noundef %2299) #11
  %2301 = load i32, ptr %288, align 4, !tbaa !5
  %2302 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2293, ptr noundef nonnull %.str.4.sink1085, i32 noundef %2294, ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.2, i32 noundef 339, ptr noundef %2296, ptr noundef %2298, ptr noundef %2300, i32 noundef %2301) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2303:                                             ; preds = %2277
  %2304 = load i32, ptr @test_count, align 4, !tbaa !5
  %2305 = add nsw i32 %2304, 1
  store i32 %2305, ptr @test_count, align 4, !tbaa !5
  %2306 = load ptr, ptr %49, align 8, !tbaa !9
  %2307 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2306, ptr noundef %2250) #11
  %2308 = icmp eq i32 %2307, -1
  br i1 %2308, label %2309, label %2331

2309:                                             ; preds = %2303
  %2310 = load i32, ptr %288, align 4, !tbaa !5
  %2311 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2312 = call i32 @s2n_print_stacktrace(ptr noundef %2311) #11
  %2313 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2314 = trunc nuw i8 %2313 to i1
  br i1 %2314, label %2315, label %2319

2315:                                             ; preds = %2309
  %2316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2317 = call i32 @fileno(ptr noundef %2316) #11
  %2318 = call i32 @isatty(i32 noundef %2317) #11
  %.not303 = icmp eq i32 %2318, 0
  br i1 %.not303, label %2319, label %2320

2319:                                             ; preds = %2315, %2309
  br label %2320

2320:                                             ; preds = %2315, %2319
  %.str.4.sink1094 = phi ptr [ @.str.4, %2319 ], [ @.str, %2315 ]
  store i32 %2310, ptr %288, align 4, !tbaa !5
  %2321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2322 = load i32, ptr @test_count, align 4, !tbaa !5
  %2323 = load i32, ptr %234, align 4, !tbaa !5
  %2324 = call ptr @s2n_strerror(i32 noundef %2323, ptr noundef nonnull @.str.3) #11
  %2325 = load i32, ptr %234, align 4, !tbaa !5
  %2326 = call ptr @s2n_strerror_debug(i32 noundef %2325, ptr noundef nonnull @.str.3) #11
  %2327 = load i32, ptr %288, align 4, !tbaa !5
  %2328 = call ptr @strerror(i32 noundef %2327) #11
  %2329 = load i32, ptr %288, align 4, !tbaa !5
  %2330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2321, ptr noundef nonnull %.str.4.sink1094, i32 noundef %2322, ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.2, i32 noundef 340, ptr noundef %2324, ptr noundef %2326, ptr noundef %2328, i32 noundef %2329) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2331:                                             ; preds = %2303
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #11
  %2332 = call ptr @s2n_config_new() #11
  store ptr %2332, ptr %50, align 8, !tbaa !9
  %2333 = load i32, ptr @test_count, align 4, !tbaa !5
  %2334 = add nsw i32 %2333, 1
  store i32 %2334, ptr @test_count, align 4, !tbaa !5
  %2335 = icmp eq ptr %2332, null
  br i1 %2335, label %2336, label %2358

2336:                                             ; preds = %2331
  %2337 = load i32, ptr %288, align 4, !tbaa !5
  %2338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2339 = call i32 @s2n_print_stacktrace(ptr noundef %2338) #11
  %2340 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2341 = trunc nuw i8 %2340 to i1
  br i1 %2341, label %2342, label %2346

2342:                                             ; preds = %2336
  %2343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2344 = call i32 @fileno(ptr noundef %2343) #11
  %2345 = call i32 @isatty(i32 noundef %2344) #11
  %.not302 = icmp eq i32 %2345, 0
  br i1 %.not302, label %2346, label %2347

2346:                                             ; preds = %2342, %2336
  br label %2347

2347:                                             ; preds = %2342, %2346
  %.str.4.sink1103 = phi ptr [ @.str.4, %2346 ], [ @.str, %2342 ]
  store i32 %2337, ptr %288, align 4, !tbaa !5
  %2348 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2349 = load i32, ptr @test_count, align 4, !tbaa !5
  %2350 = load i32, ptr %234, align 4, !tbaa !5
  %2351 = call ptr @s2n_strerror(i32 noundef %2350, ptr noundef nonnull @.str.3) #11
  %2352 = load i32, ptr %234, align 4, !tbaa !5
  %2353 = call ptr @s2n_strerror_debug(i32 noundef %2352, ptr noundef nonnull @.str.3) #11
  %2354 = load i32, ptr %288, align 4, !tbaa !5
  %2355 = call ptr @strerror(i32 noundef %2354) #11
  %2356 = load i32, ptr %288, align 4, !tbaa !5
  %2357 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2348, ptr noundef nonnull %.str.4.sink1103, i32 noundef %2349, ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 343, ptr noundef %2351, ptr noundef %2353, ptr noundef %2355, i32 noundef %2356) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2358:                                             ; preds = %2331
  %2359 = add nsw i32 %2333, 2
  store i32 %2359, ptr @test_count, align 4, !tbaa !5
  %2360 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef nonnull %2332) #11
  %2361 = icmp eq i32 %2360, -1
  br i1 %2361, label %2362, label %2384

2362:                                             ; preds = %2358
  %2363 = load i32, ptr %288, align 4, !tbaa !5
  %2364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2365 = call i32 @s2n_print_stacktrace(ptr noundef %2364) #11
  %2366 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2367 = trunc nuw i8 %2366 to i1
  br i1 %2367, label %2368, label %2372

2368:                                             ; preds = %2362
  %2369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2370 = call i32 @fileno(ptr noundef %2369) #11
  %2371 = call i32 @isatty(i32 noundef %2370) #11
  %.not301 = icmp eq i32 %2371, 0
  br i1 %.not301, label %2372, label %2373

2372:                                             ; preds = %2368, %2362
  br label %2373

2373:                                             ; preds = %2368, %2372
  %.str.4.sink1112 = phi ptr [ @.str.4, %2372 ], [ @.str, %2368 ]
  store i32 %2363, ptr %288, align 4, !tbaa !5
  %2374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2375 = load i32, ptr @test_count, align 4, !tbaa !5
  %2376 = load i32, ptr %234, align 4, !tbaa !5
  %2377 = call ptr @s2n_strerror(i32 noundef %2376, ptr noundef nonnull @.str.3) #11
  %2378 = load i32, ptr %234, align 4, !tbaa !5
  %2379 = call ptr @s2n_strerror_debug(i32 noundef %2378, ptr noundef nonnull @.str.3) #11
  %2380 = load i32, ptr %288, align 4, !tbaa !5
  %2381 = call ptr @strerror(i32 noundef %2380) #11
  %2382 = load i32, ptr %288, align 4, !tbaa !5
  %2383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2374, ptr noundef nonnull %.str.4.sink1112, i32 noundef %2375, ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.2, i32 noundef 344, ptr noundef %2377, ptr noundef %2379, ptr noundef %2381, i32 noundef %2382) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2384:                                             ; preds = %2358
  %2385 = load i32, ptr @test_count, align 4, !tbaa !5
  %2386 = add nsw i32 %2385, 1
  store i32 %2386, ptr @test_count, align 4, !tbaa !5
  %2387 = load ptr, ptr %50, align 8, !tbaa !9
  %2388 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %2387, ptr noundef %2250) #11
  %2389 = icmp eq i32 %2388, -1
  br i1 %2389, label %2390, label %2412

2390:                                             ; preds = %2384
  %2391 = load i32, ptr %288, align 4, !tbaa !5
  %2392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2393 = call i32 @s2n_print_stacktrace(ptr noundef %2392) #11
  %2394 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2395 = trunc nuw i8 %2394 to i1
  br i1 %2395, label %2396, label %2400

2396:                                             ; preds = %2390
  %2397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2398 = call i32 @fileno(ptr noundef %2397) #11
  %2399 = call i32 @isatty(i32 noundef %2398) #11
  %.not300 = icmp eq i32 %2399, 0
  br i1 %.not300, label %2400, label %2401

2400:                                             ; preds = %2396, %2390
  br label %2401

2401:                                             ; preds = %2396, %2400
  %.str.4.sink1121 = phi ptr [ @.str.4, %2400 ], [ @.str, %2396 ]
  store i32 %2391, ptr %288, align 4, !tbaa !5
  %2402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2403 = load i32, ptr @test_count, align 4, !tbaa !5
  %2404 = load i32, ptr %234, align 4, !tbaa !5
  %2405 = call ptr @s2n_strerror(i32 noundef %2404, ptr noundef nonnull @.str.3) #11
  %2406 = load i32, ptr %234, align 4, !tbaa !5
  %2407 = call ptr @s2n_strerror_debug(i32 noundef %2406, ptr noundef nonnull @.str.3) #11
  %2408 = load i32, ptr %288, align 4, !tbaa !5
  %2409 = call ptr @strerror(i32 noundef %2408) #11
  %2410 = load i32, ptr %288, align 4, !tbaa !5
  %2411 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2402, ptr noundef nonnull %.str.4.sink1121, i32 noundef %2403, ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 345, ptr noundef %2405, ptr noundef %2407, ptr noundef %2409, i32 noundef %2410) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2412:                                             ; preds = %2384
  %2413 = load i32, ptr @test_count, align 4, !tbaa !5
  %2414 = add nsw i32 %2413, 1
  store i32 %2414, ptr @test_count, align 4, !tbaa !5
  %2415 = load ptr, ptr %50, align 8, !tbaa !9
  %2416 = load ptr, ptr %3, align 8, !tbaa !9
  %2417 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %2415, ptr noundef %2416) #11
  %2418 = icmp eq i32 %2417, -1
  br i1 %2418, label %2419, label %2441

2419:                                             ; preds = %2412
  %2420 = load i32, ptr %288, align 4, !tbaa !5
  %2421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2422 = call i32 @s2n_print_stacktrace(ptr noundef %2421) #11
  %2423 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2424 = trunc nuw i8 %2423 to i1
  br i1 %2424, label %2425, label %2429

2425:                                             ; preds = %2419
  %2426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2427 = call i32 @fileno(ptr noundef %2426) #11
  %2428 = call i32 @isatty(i32 noundef %2427) #11
  %.not299 = icmp eq i32 %2428, 0
  br i1 %.not299, label %2429, label %2430

2429:                                             ; preds = %2425, %2419
  br label %2430

2430:                                             ; preds = %2425, %2429
  %.str.4.sink1130 = phi ptr [ @.str.4, %2429 ], [ @.str, %2425 ]
  store i32 %2420, ptr %288, align 4, !tbaa !5
  %2431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2432 = load i32, ptr @test_count, align 4, !tbaa !5
  %2433 = load i32, ptr %234, align 4, !tbaa !5
  %2434 = call ptr @s2n_strerror(i32 noundef %2433, ptr noundef nonnull @.str.3) #11
  %2435 = load i32, ptr %234, align 4, !tbaa !5
  %2436 = call ptr @s2n_strerror_debug(i32 noundef %2435, ptr noundef nonnull @.str.3) #11
  %2437 = load i32, ptr %288, align 4, !tbaa !5
  %2438 = call ptr @strerror(i32 noundef %2437) #11
  %2439 = load i32, ptr %288, align 4, !tbaa !5
  %2440 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2431, ptr noundef nonnull %.str.4.sink1130, i32 noundef %2432, ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.2, i32 noundef 346, ptr noundef %2434, ptr noundef %2436, ptr noundef %2438, i32 noundef %2439) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2441:                                             ; preds = %2412
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %51, i8 0, i64 16, i1 false)
  %2442 = load i32, ptr @test_count, align 4, !tbaa !5
  %2443 = add nsw i32 %2442, 1
  store i32 %2443, ptr @test_count, align 4, !tbaa !5
  %2444 = load ptr, ptr %50, align 8, !tbaa !9
  %2445 = call i32 @s2n_config_set_client_hello_cb(ptr noundef %2444, ptr noundef nonnull @s2n_check_received_supported_groups_cb, ptr noundef nonnull %51) #11
  %2446 = icmp eq i32 %2445, -1
  br i1 %2446, label %2447, label %2469

2447:                                             ; preds = %2441
  %2448 = load i32, ptr %288, align 4, !tbaa !5
  %2449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2450 = call i32 @s2n_print_stacktrace(ptr noundef %2449) #11
  %2451 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2452 = trunc nuw i8 %2451 to i1
  br i1 %2452, label %2453, label %2457

2453:                                             ; preds = %2447
  %2454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2455 = call i32 @fileno(ptr noundef %2454) #11
  %2456 = call i32 @isatty(i32 noundef %2455) #11
  %.not298 = icmp eq i32 %2456, 0
  br i1 %.not298, label %2457, label %2458

2457:                                             ; preds = %2453, %2447
  br label %2458

2458:                                             ; preds = %2453, %2457
  %.str.4.sink1139 = phi ptr [ @.str.4, %2457 ], [ @.str, %2453 ]
  store i32 %2448, ptr %288, align 4, !tbaa !5
  %2459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2460 = load i32, ptr @test_count, align 4, !tbaa !5
  %2461 = load i32, ptr %234, align 4, !tbaa !5
  %2462 = call ptr @s2n_strerror(i32 noundef %2461, ptr noundef nonnull @.str.3) #11
  %2463 = load i32, ptr %234, align 4, !tbaa !5
  %2464 = call ptr @s2n_strerror_debug(i32 noundef %2463, ptr noundef nonnull @.str.3) #11
  %2465 = load i32, ptr %288, align 4, !tbaa !5
  %2466 = call ptr @strerror(i32 noundef %2465) #11
  %2467 = load i32, ptr %288, align 4, !tbaa !5
  %2468 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2459, ptr noundef nonnull %.str.4.sink1139, i32 noundef %2460, ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.2, i32 noundef 352, ptr noundef %2462, ptr noundef %2464, ptr noundef %2466, i32 noundef %2467) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2469:                                             ; preds = %2441
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #11
  %2470 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %2470, ptr %52, align 8, !tbaa !9
  %2471 = load i32, ptr @test_count, align 4, !tbaa !5
  %2472 = add nsw i32 %2471, 1
  store i32 %2472, ptr @test_count, align 4, !tbaa !5
  %2473 = icmp eq ptr %2470, null
  br i1 %2473, label %2474, label %2496

2474:                                             ; preds = %2469
  %2475 = load i32, ptr %288, align 4, !tbaa !5
  %2476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2477 = call i32 @s2n_print_stacktrace(ptr noundef %2476) #11
  %2478 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2479 = trunc nuw i8 %2478 to i1
  br i1 %2479, label %2480, label %2484

2480:                                             ; preds = %2474
  %2481 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2482 = call i32 @fileno(ptr noundef %2481) #11
  %2483 = call i32 @isatty(i32 noundef %2482) #11
  %.not297 = icmp eq i32 %2483, 0
  br i1 %.not297, label %2484, label %2485

2484:                                             ; preds = %2480, %2474
  br label %2485

2485:                                             ; preds = %2480, %2484
  %.str.4.sink1148 = phi ptr [ @.str.4, %2484 ], [ @.str, %2480 ]
  store i32 %2475, ptr %288, align 4, !tbaa !5
  %2486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2487 = load i32, ptr @test_count, align 4, !tbaa !5
  %2488 = load i32, ptr %234, align 4, !tbaa !5
  %2489 = call ptr @s2n_strerror(i32 noundef %2488, ptr noundef nonnull @.str.3) #11
  %2490 = load i32, ptr %234, align 4, !tbaa !5
  %2491 = call ptr @s2n_strerror_debug(i32 noundef %2490, ptr noundef nonnull @.str.3) #11
  %2492 = load i32, ptr %288, align 4, !tbaa !5
  %2493 = call ptr @strerror(i32 noundef %2492) #11
  %2494 = load i32, ptr %288, align 4, !tbaa !5
  %2495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2486, ptr noundef nonnull %.str.4.sink1148, i32 noundef %2487, ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.2, i32 noundef 355, ptr noundef %2489, ptr noundef %2491, ptr noundef %2493, i32 noundef %2494) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2496:                                             ; preds = %2469
  %2497 = add nsw i32 %2471, 2
  store i32 %2497, ptr @test_count, align 4, !tbaa !5
  %2498 = load ptr, ptr %49, align 8, !tbaa !9
  %2499 = call i32 @s2n_connection_set_config(ptr noundef nonnull %2470, ptr noundef %2498) #11
  %2500 = icmp eq i32 %2499, -1
  br i1 %2500, label %2501, label %2523

2501:                                             ; preds = %2496
  %2502 = load i32, ptr %288, align 4, !tbaa !5
  %2503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2504 = call i32 @s2n_print_stacktrace(ptr noundef %2503) #11
  %2505 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2506 = trunc nuw i8 %2505 to i1
  br i1 %2506, label %2507, label %2511

2507:                                             ; preds = %2501
  %2508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2509 = call i32 @fileno(ptr noundef %2508) #11
  %2510 = call i32 @isatty(i32 noundef %2509) #11
  %.not296 = icmp eq i32 %2510, 0
  br i1 %.not296, label %2511, label %2512

2511:                                             ; preds = %2507, %2501
  br label %2512

2512:                                             ; preds = %2507, %2511
  %.str.4.sink1157 = phi ptr [ @.str.4, %2511 ], [ @.str, %2507 ]
  store i32 %2502, ptr %288, align 4, !tbaa !5
  %2513 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2514 = load i32, ptr @test_count, align 4, !tbaa !5
  %2515 = load i32, ptr %234, align 4, !tbaa !5
  %2516 = call ptr @s2n_strerror(i32 noundef %2515, ptr noundef nonnull @.str.3) #11
  %2517 = load i32, ptr %234, align 4, !tbaa !5
  %2518 = call ptr @s2n_strerror_debug(i32 noundef %2517, ptr noundef nonnull @.str.3) #11
  %2519 = load i32, ptr %288, align 4, !tbaa !5
  %2520 = call ptr @strerror(i32 noundef %2519) #11
  %2521 = load i32, ptr %288, align 4, !tbaa !5
  %2522 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2513, ptr noundef nonnull %.str.4.sink1157, i32 noundef %2514, ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.2, i32 noundef 356, ptr noundef %2516, ptr noundef %2518, ptr noundef %2520, i32 noundef %2521) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2523:                                             ; preds = %2496
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #11
  %2524 = call ptr @s2n_connection_new(i32 noundef 0) #11
  store ptr %2524, ptr %53, align 8, !tbaa !9
  %2525 = load i32, ptr @test_count, align 4, !tbaa !5
  %2526 = add nsw i32 %2525, 1
  store i32 %2526, ptr @test_count, align 4, !tbaa !5
  %2527 = icmp eq ptr %2524, null
  br i1 %2527, label %2528, label %2550

2528:                                             ; preds = %2523
  %2529 = load i32, ptr %288, align 4, !tbaa !5
  %2530 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2531 = call i32 @s2n_print_stacktrace(ptr noundef %2530) #11
  %2532 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2533 = trunc nuw i8 %2532 to i1
  br i1 %2533, label %2534, label %2538

2534:                                             ; preds = %2528
  %2535 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2536 = call i32 @fileno(ptr noundef %2535) #11
  %2537 = call i32 @isatty(i32 noundef %2536) #11
  %.not295 = icmp eq i32 %2537, 0
  br i1 %.not295, label %2538, label %2539

2538:                                             ; preds = %2534, %2528
  br label %2539

2539:                                             ; preds = %2534, %2538
  %.str.4.sink1166 = phi ptr [ @.str.4, %2538 ], [ @.str, %2534 ]
  store i32 %2529, ptr %288, align 4, !tbaa !5
  %2540 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2541 = load i32, ptr @test_count, align 4, !tbaa !5
  %2542 = load i32, ptr %234, align 4, !tbaa !5
  %2543 = call ptr @s2n_strerror(i32 noundef %2542, ptr noundef nonnull @.str.3) #11
  %2544 = load i32, ptr %234, align 4, !tbaa !5
  %2545 = call ptr @s2n_strerror_debug(i32 noundef %2544, ptr noundef nonnull @.str.3) #11
  %2546 = load i32, ptr %288, align 4, !tbaa !5
  %2547 = call ptr @strerror(i32 noundef %2546) #11
  %2548 = load i32, ptr %288, align 4, !tbaa !5
  %2549 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2540, ptr noundef nonnull %.str.4.sink1166, i32 noundef %2541, ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.2, i32 noundef 359, ptr noundef %2543, ptr noundef %2545, ptr noundef %2547, i32 noundef %2548) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2550:                                             ; preds = %2523
  %2551 = add nsw i32 %2525, 2
  store i32 %2551, ptr @test_count, align 4, !tbaa !5
  %2552 = load ptr, ptr %50, align 8, !tbaa !9
  %2553 = call i32 @s2n_connection_set_config(ptr noundef nonnull %2524, ptr noundef %2552) #11
  %2554 = icmp eq i32 %2553, -1
  br i1 %2554, label %2555, label %2577

2555:                                             ; preds = %2550
  %2556 = load i32, ptr %288, align 4, !tbaa !5
  %2557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2558 = call i32 @s2n_print_stacktrace(ptr noundef %2557) #11
  %2559 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2560 = trunc nuw i8 %2559 to i1
  br i1 %2560, label %2561, label %2565

2561:                                             ; preds = %2555
  %2562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2563 = call i32 @fileno(ptr noundef %2562) #11
  %2564 = call i32 @isatty(i32 noundef %2563) #11
  %.not294 = icmp eq i32 %2564, 0
  br i1 %.not294, label %2565, label %2566

2565:                                             ; preds = %2561, %2555
  br label %2566

2566:                                             ; preds = %2561, %2565
  %.str.4.sink1175 = phi ptr [ @.str.4, %2565 ], [ @.str, %2561 ]
  store i32 %2556, ptr %288, align 4, !tbaa !5
  %2567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2568 = load i32, ptr @test_count, align 4, !tbaa !5
  %2569 = load i32, ptr %234, align 4, !tbaa !5
  %2570 = call ptr @s2n_strerror(i32 noundef %2569, ptr noundef nonnull @.str.3) #11
  %2571 = load i32, ptr %234, align 4, !tbaa !5
  %2572 = call ptr @s2n_strerror_debug(i32 noundef %2571, ptr noundef nonnull @.str.3) #11
  %2573 = load i32, ptr %288, align 4, !tbaa !5
  %2574 = call ptr @strerror(i32 noundef %2573) #11
  %2575 = load i32, ptr %288, align 4, !tbaa !5
  %2576 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2567, ptr noundef nonnull %.str.4.sink1175, i32 noundef %2568, ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.2, i32 noundef 360, ptr noundef %2570, ptr noundef %2572, ptr noundef %2574, i32 noundef %2575) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2577:                                             ; preds = %2550
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #11
  store i64 0, ptr %54, align 8
  %2578 = load i32, ptr @test_count, align 4, !tbaa !5
  %2579 = add nsw i32 %2578, 1
  store i32 %2579, ptr @test_count, align 4, !tbaa !5
  %2580 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef nonnull %54) #11
  %2581 = icmp eq i32 %2580, -1
  br i1 %2581, label %2582, label %2604

2582:                                             ; preds = %2577
  %2583 = load i32, ptr %288, align 4, !tbaa !5
  %2584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2585 = call i32 @s2n_print_stacktrace(ptr noundef %2584) #11
  %2586 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2587 = trunc nuw i8 %2586 to i1
  br i1 %2587, label %2588, label %2592

2588:                                             ; preds = %2582
  %2589 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2590 = call i32 @fileno(ptr noundef %2589) #11
  %2591 = call i32 @isatty(i32 noundef %2590) #11
  %.not293 = icmp eq i32 %2591, 0
  br i1 %.not293, label %2592, label %2593

2592:                                             ; preds = %2588, %2582
  br label %2593

2593:                                             ; preds = %2588, %2592
  %.str.4.sink1184 = phi ptr [ @.str.4, %2592 ], [ @.str, %2588 ]
  store i32 %2583, ptr %288, align 4, !tbaa !5
  %2594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2595 = load i32, ptr @test_count, align 4, !tbaa !5
  %2596 = load i32, ptr %234, align 4, !tbaa !5
  %2597 = call ptr @s2n_strerror(i32 noundef %2596, ptr noundef nonnull @.str.3) #11
  %2598 = load i32, ptr %234, align 4, !tbaa !5
  %2599 = call ptr @s2n_strerror_debug(i32 noundef %2598, ptr noundef nonnull @.str.3) #11
  %2600 = load i32, ptr %288, align 4, !tbaa !5
  %2601 = call ptr @strerror(i32 noundef %2600) #11
  %2602 = load i32, ptr %288, align 4, !tbaa !5
  %2603 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2594, ptr noundef nonnull %.str.4.sink1184, i32 noundef %2595, ptr noundef nonnull @.str.76, ptr noundef nonnull @.str.2, i32 noundef 363, ptr noundef %2597, ptr noundef %2599, ptr noundef %2601, i32 noundef %2602) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2604:                                             ; preds = %2577
  %2605 = load i32, ptr @test_count, align 4, !tbaa !5
  %2606 = add nsw i32 %2605, 1
  store i32 %2606, ptr @test_count, align 4, !tbaa !5
  %2607 = load ptr, ptr %52, align 8, !tbaa !9
  %2608 = call i32 @s2n_connection_set_io_pair(ptr noundef %2607, ptr noundef nonnull %54) #11
  %2609 = icmp eq i32 %2608, -1
  br i1 %2609, label %2610, label %2632

2610:                                             ; preds = %2604
  %2611 = load i32, ptr %288, align 4, !tbaa !5
  %2612 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2613 = call i32 @s2n_print_stacktrace(ptr noundef %2612) #11
  %2614 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2615 = trunc nuw i8 %2614 to i1
  br i1 %2615, label %2616, label %2620

2616:                                             ; preds = %2610
  %2617 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2618 = call i32 @fileno(ptr noundef %2617) #11
  %2619 = call i32 @isatty(i32 noundef %2618) #11
  %.not292 = icmp eq i32 %2619, 0
  br i1 %.not292, label %2620, label %2621

2620:                                             ; preds = %2616, %2610
  br label %2621

2621:                                             ; preds = %2616, %2620
  %.str.4.sink1193 = phi ptr [ @.str.4, %2620 ], [ @.str, %2616 ]
  store i32 %2611, ptr %288, align 4, !tbaa !5
  %2622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2623 = load i32, ptr @test_count, align 4, !tbaa !5
  %2624 = load i32, ptr %234, align 4, !tbaa !5
  %2625 = call ptr @s2n_strerror(i32 noundef %2624, ptr noundef nonnull @.str.3) #11
  %2626 = load i32, ptr %234, align 4, !tbaa !5
  %2627 = call ptr @s2n_strerror_debug(i32 noundef %2626, ptr noundef nonnull @.str.3) #11
  %2628 = load i32, ptr %288, align 4, !tbaa !5
  %2629 = call ptr @strerror(i32 noundef %2628) #11
  %2630 = load i32, ptr %288, align 4, !tbaa !5
  %2631 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2622, ptr noundef nonnull %.str.4.sink1193, i32 noundef %2623, ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.2, i32 noundef 364, ptr noundef %2625, ptr noundef %2627, ptr noundef %2629, i32 noundef %2630) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2632:                                             ; preds = %2604
  %2633 = load i32, ptr @test_count, align 4, !tbaa !5
  %2634 = add nsw i32 %2633, 1
  store i32 %2634, ptr @test_count, align 4, !tbaa !5
  %2635 = load ptr, ptr %53, align 8, !tbaa !9
  %2636 = call i32 @s2n_connection_set_io_pair(ptr noundef %2635, ptr noundef nonnull %54) #11
  %2637 = icmp eq i32 %2636, -1
  br i1 %2637, label %2638, label %2660

2638:                                             ; preds = %2632
  %2639 = load i32, ptr %288, align 4, !tbaa !5
  %2640 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2641 = call i32 @s2n_print_stacktrace(ptr noundef %2640) #11
  %2642 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2643 = trunc nuw i8 %2642 to i1
  br i1 %2643, label %2644, label %2648

2644:                                             ; preds = %2638
  %2645 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2646 = call i32 @fileno(ptr noundef %2645) #11
  %2647 = call i32 @isatty(i32 noundef %2646) #11
  %.not291 = icmp eq i32 %2647, 0
  br i1 %.not291, label %2648, label %2649

2648:                                             ; preds = %2644, %2638
  br label %2649

2649:                                             ; preds = %2644, %2648
  %.str.4.sink1202 = phi ptr [ @.str.4, %2648 ], [ @.str, %2644 ]
  store i32 %2639, ptr %288, align 4, !tbaa !5
  %2650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2651 = load i32, ptr @test_count, align 4, !tbaa !5
  %2652 = load i32, ptr %234, align 4, !tbaa !5
  %2653 = call ptr @s2n_strerror(i32 noundef %2652, ptr noundef nonnull @.str.3) #11
  %2654 = load i32, ptr %234, align 4, !tbaa !5
  %2655 = call ptr @s2n_strerror_debug(i32 noundef %2654, ptr noundef nonnull @.str.3) #11
  %2656 = load i32, ptr %288, align 4, !tbaa !5
  %2657 = call ptr @strerror(i32 noundef %2656) #11
  %2658 = load i32, ptr %288, align 4, !tbaa !5
  %2659 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2650, ptr noundef nonnull %.str.4.sink1202, i32 noundef %2651, ptr noundef nonnull @.str.78, ptr noundef nonnull @.str.2, i32 noundef 365, ptr noundef %2653, ptr noundef %2655, ptr noundef %2657, i32 noundef %2658) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2660:                                             ; preds = %2632
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %55) #11
  store i32 0, ptr %55, align 4, !tbaa !5
  %2661 = load i32, ptr @test_count, align 4, !tbaa !5
  %2662 = add nsw i32 %2661, 1
  store i32 %2662, ptr @test_count, align 4, !tbaa !5
  %2663 = load ptr, ptr %52, align 8, !tbaa !9
  %2664 = call i32 @s2n_negotiate_until_message(ptr noundef %2663, ptr noundef nonnull %55, i32 noundef 1) #11
  %2665 = call zeroext i1 @s2n_result_is_ok(i32 %2664)
  br i1 %2665, label %2688, label %2666

2666:                                             ; preds = %2660
  %2667 = load i32, ptr %288, align 4, !tbaa !5
  %2668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2669 = call i32 @s2n_print_stacktrace(ptr noundef %2668) #11
  %2670 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2671 = trunc nuw i8 %2670 to i1
  br i1 %2671, label %2672, label %2676

2672:                                             ; preds = %2666
  %2673 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2674 = call i32 @fileno(ptr noundef %2673) #11
  %2675 = call i32 @isatty(i32 noundef %2674) #11
  %.not285 = icmp eq i32 %2675, 0
  br i1 %.not285, label %2676, label %2677

2676:                                             ; preds = %2672, %2666
  br label %2677

2677:                                             ; preds = %2672, %2676
  %.str.4.sink1211 = phi ptr [ @.str.4, %2676 ], [ @.str, %2672 ]
  store i32 %2667, ptr %288, align 4, !tbaa !5
  %2678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2679 = load i32, ptr @test_count, align 4, !tbaa !5
  %2680 = load i32, ptr %234, align 4, !tbaa !5
  %2681 = call ptr @s2n_strerror(i32 noundef %2680, ptr noundef nonnull @.str.3) #11
  %2682 = load i32, ptr %234, align 4, !tbaa !5
  %2683 = call ptr @s2n_strerror_debug(i32 noundef %2682, ptr noundef nonnull @.str.3) #11
  %2684 = load i32, ptr %288, align 4, !tbaa !5
  %2685 = call ptr @strerror(i32 noundef %2684) #11
  %2686 = load i32, ptr %288, align 4, !tbaa !5
  %2687 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2678, ptr noundef nonnull %.str.4.sink1211, i32 noundef %2679, ptr noundef nonnull @.str.79, ptr noundef nonnull @.str.2, i32 noundef 368, ptr noundef %2681, ptr noundef %2683, ptr noundef %2685, i32 noundef %2686) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2688:                                             ; preds = %2660
  call void @llvm.lifetime.start.p0(i64 34, ptr nonnull %56) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %57, i8 0, i64 24, i1 false)
  %2689 = load i32, ptr @test_count, align 4, !tbaa !5
  %2690 = add nsw i32 %2689, 1
  store i32 %2690, ptr @test_count, align 4, !tbaa !5
  %2691 = call i32 @s2n_blob_init(ptr noundef nonnull %57, ptr noundef nonnull %56, i32 noundef 34) #11
  %2692 = icmp eq i32 %2691, -1
  br i1 %2692, label %2693, label %2715

2693:                                             ; preds = %2688
  %2694 = load i32, ptr %288, align 4, !tbaa !5
  %2695 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2696 = call i32 @s2n_print_stacktrace(ptr noundef %2695) #11
  %2697 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2698 = trunc nuw i8 %2697 to i1
  br i1 %2698, label %2699, label %2703

2699:                                             ; preds = %2693
  %2700 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2701 = call i32 @fileno(ptr noundef %2700) #11
  %2702 = call i32 @isatty(i32 noundef %2701) #11
  %.not290 = icmp eq i32 %2702, 0
  br i1 %.not290, label %2703, label %2704

2703:                                             ; preds = %2699, %2693
  br label %2704

2704:                                             ; preds = %2699, %2703
  %.str.4.sink1220 = phi ptr [ @.str.4, %2703 ], [ @.str, %2699 ]
  store i32 %2694, ptr %288, align 4, !tbaa !5
  %2705 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2706 = load i32, ptr @test_count, align 4, !tbaa !5
  %2707 = load i32, ptr %234, align 4, !tbaa !5
  %2708 = call ptr @s2n_strerror(i32 noundef %2707, ptr noundef nonnull @.str.3) #11
  %2709 = load i32, ptr %234, align 4, !tbaa !5
  %2710 = call ptr @s2n_strerror_debug(i32 noundef %2709, ptr noundef nonnull @.str.3) #11
  %2711 = load i32, ptr %288, align 4, !tbaa !5
  %2712 = call ptr @strerror(i32 noundef %2711) #11
  %2713 = load i32, ptr %288, align 4, !tbaa !5
  %2714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2705, ptr noundef nonnull %.str.4.sink1220, i32 noundef %2706, ptr noundef nonnull @.str.80, ptr noundef nonnull @.str.2, i32 noundef 373, ptr noundef %2708, ptr noundef %2710, ptr noundef %2712, i32 noundef %2713) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2715:                                             ; preds = %2688
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %58) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %58, i8 0, i64 40, i1 false)
  %2716 = load i32, ptr @test_count, align 4, !tbaa !5
  %2717 = add nsw i32 %2716, 1
  store i32 %2717, ptr @test_count, align 4, !tbaa !5
  %2718 = call i32 @s2n_stuffer_init(ptr noundef nonnull %58, ptr noundef nonnull %57) #11
  %2719 = icmp eq i32 %2718, -1
  br i1 %2719, label %2720, label %2742

2720:                                             ; preds = %2715
  %2721 = load i32, ptr %288, align 4, !tbaa !5
  %2722 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2723 = call i32 @s2n_print_stacktrace(ptr noundef %2722) #11
  %2724 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2725 = trunc nuw i8 %2724 to i1
  br i1 %2725, label %2726, label %2730

2726:                                             ; preds = %2720
  %2727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2728 = call i32 @fileno(ptr noundef %2727) #11
  %2729 = call i32 @isatty(i32 noundef %2728) #11
  %.not289 = icmp eq i32 %2729, 0
  br i1 %.not289, label %2730, label %2731

2730:                                             ; preds = %2726, %2720
  br label %2731

2731:                                             ; preds = %2726, %2730
  %.str.4.sink1229 = phi ptr [ @.str.4, %2730 ], [ @.str, %2726 ]
  store i32 %2721, ptr %288, align 4, !tbaa !5
  %2732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2733 = load i32, ptr @test_count, align 4, !tbaa !5
  %2734 = load i32, ptr %234, align 4, !tbaa !5
  %2735 = call ptr @s2n_strerror(i32 noundef %2734, ptr noundef nonnull @.str.3) #11
  %2736 = load i32, ptr %234, align 4, !tbaa !5
  %2737 = call ptr @s2n_strerror_debug(i32 noundef %2736, ptr noundef nonnull @.str.3) #11
  %2738 = load i32, ptr %288, align 4, !tbaa !5
  %2739 = call ptr @strerror(i32 noundef %2738) #11
  %2740 = load i32, ptr %288, align 4, !tbaa !5
  %2741 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2732, ptr noundef nonnull %.str.4.sink1229, i32 noundef %2733, ptr noundef nonnull @.str.81, ptr noundef nonnull @.str.2, i32 noundef 376, ptr noundef %2735, ptr noundef %2737, ptr noundef %2739, i32 noundef %2740) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2742:                                             ; preds = %2715
  %2743 = load i32, ptr @test_count, align 4, !tbaa !5
  %2744 = add nsw i32 %2743, 1
  store i32 %2744, ptr @test_count, align 4, !tbaa !5
  %2745 = load ptr, ptr %52, align 8, !tbaa !9
  %2746 = call i32 %1937(ptr noundef %2745, ptr noundef nonnull %58) #11
  %2747 = icmp eq i32 %2746, -1
  br i1 %2747, label %2748, label %2770

2748:                                             ; preds = %2742
  %2749 = load i32, ptr %288, align 4, !tbaa !5
  %2750 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2751 = call i32 @s2n_print_stacktrace(ptr noundef %2750) #11
  %2752 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2753 = trunc nuw i8 %2752 to i1
  br i1 %2753, label %2754, label %2758

2754:                                             ; preds = %2748
  %2755 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2756 = call i32 @fileno(ptr noundef %2755) #11
  %2757 = call i32 @isatty(i32 noundef %2756) #11
  %.not288 = icmp eq i32 %2757, 0
  br i1 %.not288, label %2758, label %2759

2758:                                             ; preds = %2754, %2748
  br label %2759

2759:                                             ; preds = %2754, %2758
  %.str.4.sink1238 = phi ptr [ @.str.4, %2758 ], [ @.str, %2754 ]
  store i32 %2749, ptr %288, align 4, !tbaa !5
  %2760 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2761 = load i32, ptr @test_count, align 4, !tbaa !5
  %2762 = load i32, ptr %234, align 4, !tbaa !5
  %2763 = call ptr @s2n_strerror(i32 noundef %2762, ptr noundef nonnull @.str.3) #11
  %2764 = load i32, ptr %234, align 4, !tbaa !5
  %2765 = call ptr @s2n_strerror_debug(i32 noundef %2764, ptr noundef nonnull @.str.3) #11
  %2766 = load i32, ptr %288, align 4, !tbaa !5
  %2767 = call ptr @strerror(i32 noundef %2766) #11
  %2768 = load i32, ptr %288, align 4, !tbaa !5
  %2769 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2760, ptr noundef nonnull %.str.4.sink1238, i32 noundef %2761, ptr noundef nonnull @.str.82, ptr noundef nonnull @.str.2, i32 noundef 377, ptr noundef %2763, ptr noundef %2765, ptr noundef %2767, i32 noundef %2768) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2770:                                             ; preds = %2742
  store ptr %58, ptr %51, align 8, !tbaa !51
  %2771 = load i32, ptr @test_count, align 4, !tbaa !5
  %2772 = add nsw i32 %2771, 1
  store i32 %2772, ptr @test_count, align 4, !tbaa !5
  %2773 = load ptr, ptr %53, align 8, !tbaa !9
  %2774 = load ptr, ptr %52, align 8, !tbaa !9
  %2775 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %2773, ptr noundef %2774) #11
  %2776 = icmp eq i32 %2775, -1
  br i1 %2776, label %2777, label %2799

2777:                                             ; preds = %2770
  %2778 = load i32, ptr %288, align 4, !tbaa !5
  %2779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2780 = call i32 @s2n_print_stacktrace(ptr noundef %2779) #11
  %2781 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2782 = trunc nuw i8 %2781 to i1
  br i1 %2782, label %2783, label %2787

2783:                                             ; preds = %2777
  %2784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2785 = call i32 @fileno(ptr noundef %2784) #11
  %2786 = call i32 @isatty(i32 noundef %2785) #11
  %.not287 = icmp eq i32 %2786, 0
  br i1 %.not287, label %2787, label %2788

2787:                                             ; preds = %2783, %2777
  br label %2788

2788:                                             ; preds = %2783, %2787
  %.str.4.sink1247 = phi ptr [ @.str.4, %2787 ], [ @.str, %2783 ]
  store i32 %2778, ptr %288, align 4, !tbaa !5
  %2789 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2790 = load i32, ptr @test_count, align 4, !tbaa !5
  %2791 = load i32, ptr %234, align 4, !tbaa !5
  %2792 = call ptr @s2n_strerror(i32 noundef %2791, ptr noundef nonnull @.str.3) #11
  %2793 = load i32, ptr %234, align 4, !tbaa !5
  %2794 = call ptr @s2n_strerror_debug(i32 noundef %2793, ptr noundef nonnull @.str.3) #11
  %2795 = load i32, ptr %288, align 4, !tbaa !5
  %2796 = call ptr @strerror(i32 noundef %2795) #11
  %2797 = load i32, ptr %288, align 4, !tbaa !5
  %2798 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2789, ptr noundef nonnull %.str.4.sink1247, i32 noundef %2790, ptr noundef nonnull @.str.83, ptr noundef nonnull @.str.2, i32 noundef 380, ptr noundef %2792, ptr noundef %2794, ptr noundef %2796, i32 noundef %2797) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2799:                                             ; preds = %2770
  %2800 = load i32, ptr @test_count, align 4, !tbaa !5
  %2801 = add nsw i32 %2800, 1
  store i32 %2801, ptr @test_count, align 4, !tbaa !5
  %2802 = load i32, ptr %1938, align 8, !tbaa !53
  %2803 = icmp eq i32 %2802, 1
  br i1 %2803, label %2826, label %2804

2804:                                             ; preds = %2799
  %2805 = load i32, ptr %288, align 4, !tbaa !5
  %2806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2807 = call i32 @s2n_print_stacktrace(ptr noundef %2806) #11
  %2808 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2809 = trunc nuw i8 %2808 to i1
  br i1 %2809, label %2810, label %2814

2810:                                             ; preds = %2804
  %2811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2812 = call i32 @fileno(ptr noundef %2811) #11
  %2813 = call i32 @isatty(i32 noundef %2812) #11
  %.not286 = icmp eq i32 %2813, 0
  br i1 %.not286, label %2814, label %2815

2814:                                             ; preds = %2810, %2804
  br label %2815

2815:                                             ; preds = %2810, %2814
  %.str.4.sink1256 = phi ptr [ @.str.4, %2814 ], [ @.str, %2810 ]
  store i32 %2805, ptr %288, align 4, !tbaa !5
  %2816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2817 = load i32, ptr @test_count, align 4, !tbaa !5
  %2818 = load i32, ptr %234, align 4, !tbaa !5
  %2819 = call ptr @s2n_strerror(i32 noundef %2818, ptr noundef nonnull @.str.3) #11
  %2820 = load i32, ptr %234, align 4, !tbaa !5
  %2821 = call ptr @s2n_strerror_debug(i32 noundef %2820, ptr noundef nonnull @.str.3) #11
  %2822 = load i32, ptr %288, align 4, !tbaa !5
  %2823 = call ptr @strerror(i32 noundef %2822) #11
  %2824 = load i32, ptr %288, align 4, !tbaa !5
  %2825 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2816, ptr noundef nonnull %.str.4.sink1256, i32 noundef %2817, ptr noundef nonnull @.str.84, ptr noundef nonnull @.str.2, i32 noundef 382, ptr noundef %2819, ptr noundef %2821, ptr noundef %2823, i32 noundef %2824) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2826:                                             ; preds = %2799
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %58) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #11
  call void @llvm.lifetime.end.p0(i64 34, ptr nonnull %56) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #11
  %2827 = call i32 @s2n_io_pair_close(ptr noundef nonnull %54) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #11
  %2828 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %53) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #11
  %2829 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #11
  %2830 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %50) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #11
  %2831 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #11
  %indvars.iv.next369 = add nuw nsw i64 %indvars.iv368, 1
  %exitcond371.not = icmp eq i64 %indvars.iv.next369, 7
  br i1 %exitcond371.not, label %2245, label %2248, !llvm.loop !54

2832:                                             ; preds = %2245
  %2833 = load i32, ptr %288, align 4, !tbaa !5
  %2834 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2835 = call i32 @s2n_print_stacktrace(ptr noundef %2834) #11
  %2836 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2837 = trunc nuw i8 %2836 to i1
  br i1 %2837, label %2838, label %2842

2838:                                             ; preds = %2832
  %2839 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2840 = call i32 @fileno(ptr noundef %2839) #11
  %2841 = call i32 @isatty(i32 noundef %2840) #11
  %.not284 = icmp eq i32 %2841, 0
  br i1 %.not284, label %2842, label %2843

2842:                                             ; preds = %2838, %2832
  br label %2843

2843:                                             ; preds = %2838, %2842
  %.str.4.sink1265 = phi ptr [ @.str.4, %2842 ], [ @.str, %2838 ]
  store i32 %2833, ptr %288, align 4, !tbaa !5
  %2844 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2845 = load i32, ptr @test_count, align 4, !tbaa !5
  %2846 = load i32, ptr %234, align 4, !tbaa !5
  %2847 = call ptr @s2n_strerror(i32 noundef %2846, ptr noundef nonnull @.str.3) #11
  %2848 = load i32, ptr %234, align 4, !tbaa !5
  %2849 = call ptr @s2n_strerror_debug(i32 noundef %2848, ptr noundef nonnull @.str.3) #11
  %2850 = load i32, ptr %288, align 4, !tbaa !5
  %2851 = call ptr @strerror(i32 noundef %2850) #11
  %2852 = load i32, ptr %288, align 4, !tbaa !5
  %2853 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2844, ptr noundef nonnull %.str.4.sink1265, i32 noundef %2845, ptr noundef nonnull @.str.85, ptr noundef nonnull @.str.2, i32 noundef 386, ptr noundef %2847, ptr noundef %2849, ptr noundef %2851, i32 noundef %2852) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2854:                                             ; preds = %2245
  %2855 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #11
  %2856 = icmp eq i32 %2855, -1
  br i1 %2856, label %2857, label %2879

2857:                                             ; preds = %2854
  %2858 = load i32, ptr %288, align 4, !tbaa !5
  %2859 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2860 = call i32 @s2n_print_stacktrace(ptr noundef %2859) #11
  %2861 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2862 = trunc nuw i8 %2861 to i1
  br i1 %2862, label %2863, label %2867

2863:                                             ; preds = %2857
  %2864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2865 = call i32 @fileno(ptr noundef %2864) #11
  %2866 = call i32 @isatty(i32 noundef %2865) #11
  %.not283 = icmp eq i32 %2866, 0
  br i1 %.not283, label %2867, label %2868

2867:                                             ; preds = %2863, %2857
  br label %2868

2868:                                             ; preds = %2863, %2867
  %.str.4.sink1274 = phi ptr [ @.str.4, %2867 ], [ @.str, %2863 ]
  store i32 %2858, ptr %288, align 4, !tbaa !5
  %2869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2870 = load i32, ptr @test_count, align 4, !tbaa !5
  %2871 = load i32, ptr %234, align 4, !tbaa !5
  %2872 = call ptr @s2n_strerror(i32 noundef %2871, ptr noundef nonnull @.str.3) #11
  %2873 = load i32, ptr %234, align 4, !tbaa !5
  %2874 = call ptr @s2n_strerror_debug(i32 noundef %2873, ptr noundef nonnull @.str.3) #11
  %2875 = load i32, ptr %288, align 4, !tbaa !5
  %2876 = call ptr @strerror(i32 noundef %2875) #11
  %2877 = load i32, ptr %288, align 4, !tbaa !5
  %2878 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2869, ptr noundef nonnull %.str.4.sink1274, i32 noundef %2870, ptr noundef nonnull @.str.86, ptr noundef nonnull @.str.2, i32 noundef 386, ptr noundef %2872, ptr noundef %2874, ptr noundef %2876, i32 noundef %2877) #13
  call void @exit(i32 noundef 1) #14
  unreachable

2879:                                             ; preds = %2854
  %2880 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2881 = trunc nuw i8 %2880 to i1
  br i1 %2881, label %2882, label %2893

2882:                                             ; preds = %2879
  %2883 = load ptr, ptr @stdout, align 8, !tbaa !9
  %2884 = call i32 @fileno(ptr noundef %2883) #11
  %2885 = call i32 @isatty(i32 noundef %2884) #11
  %.not280 = icmp eq i32 %2885, 0
  br i1 %.not280, label %2893, label %2886

2886:                                             ; preds = %2882
  %2887 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not282 = icmp eq i32 %2887, 0
  %2888 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not282, label %2891, label %2889

2889:                                             ; preds = %2886
  %2890 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2888, ptr noundef nonnull @.str.87, i32 noundef %2887) #11
  br label %2900

2891:                                             ; preds = %2886
  %2892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2888, ptr noundef nonnull @.str.88) #11
  br label %2900

2893:                                             ; preds = %2882, %2879
  %2894 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not281 = icmp eq i32 %2894, 0
  %2895 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not281, label %2898, label %2896

2896:                                             ; preds = %2893
  %2897 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2895, ptr noundef nonnull @.str.89, i32 noundef %2894) #11
  br label %2900

2898:                                             ; preds = %2893
  %2899 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2895, ptr noundef nonnull @.str.90) #11
  br label %2900

2900:                                             ; preds = %2896, %2898, %2889, %2891
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #11
  %2901 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %3) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #11
  ret i32 0
}

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #3

declare i32 @s2n_init() local_unnamed_addr #3

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_test_cert_chain_and_key_new(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_extension_supported_iana_value_to_id(i16 noundef zeroext, ptr noundef) local_unnamed_addr #3

declare void @s2n_debug_info_reset() local_unnamed_addr #3

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

; 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 i32 @s2n_stuffer_init(ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_stuffer_write_uint16(ptr noundef, i16 noundef zeroext) local_unnamed_addr #3

declare i32 @s2n_stuffer_reread(ptr noundef) local_unnamed_addr #3

declare ptr @s2n_config_new() local_unnamed_addr #3

declare i32 @s2n_config_ptr_free(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_config_set_cipher_preferences(ptr noundef, ptr noundef) local_unnamed_addr #3

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #3

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #3

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

declare i32 @s2n_client_hello_send(ptr noundef) local_unnamed_addr #3

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

declare i32 @s2n_client_hello_recv(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_client_hello_has_extension(ptr noundef, i16 noundef zeroext, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_get_public_random_data(ptr noundef) local_unnamed_addr #3

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

declare i32 @s2n_stuffer_init_written(ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_config_set_unsafe_for_testing(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_config_set_client_hello_cb(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_io_pair_close(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) local_unnamed_addr #3

declare i32 @s2n_connection_set_io_pair(ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_negotiate_until_message(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @s2n_negotiate_test_server_and_client(ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @s2n_cleanup() local_unnamed_addr #3

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress 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 #3 = { "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 "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 = { 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 #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { 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 #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 = !{!7, !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!19, !17, i64 24}
!19 = !{!"", !20, i64 0, !17, i64 24, !17, i64 26, !6, i64 28}
!20 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!21 = !{i64 0, i64 8, !9, i64 8, i64 4, !5, i64 12, i64 4, !5, i64 16, i64 1, !15}
!22 = !{!23, !6, i64 2044}
!23 = !{!"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, !24, i64 160, !25, i64 168, !25, 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, !26, i64 240, !10, i64 632, !10, i64 640, !27, i64 648, !32, i64 1144, !35, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !37, i64 1776, !37, i64 1816, !37, i64 1856, !37, i64 1896, !6, i64 1936, !25, i64 1944, !7, i64 1952, !37, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !38, i64 2004, !38, i64 2008, !39, i64 2016, !17, i64 2208, !6, i64 2212, !17, i64 2216, !25, i64 2224, !7, i64 2232, !25, i64 2240, !25, i64 2248, !25, i64 2256, !38, i64 2264, !38, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !20, i64 2792, !6, i64 2816, !20, i64 2824, !20, i64 2848, !20, i64 2872, !41, i64 2896, !43, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !20, i64 3784, !6, i64 3808, !45, i64 3816, !7, i64 3848, !37, i64 3992, !20, i64 4032, !20, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !17, i64 4084, !17, i64 4086, !6, i64 4088, !6, i64 4092, !20, i64 4096, !6, i64 4120, !46, i64 4128, !38, i64 4176, !7, i64 4180, !7, i64 4181}
!24 = !{!"s2n_timer", !25, i64 0}
!25 = !{!"long", !7, i64 0}
!26 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!27 = !{!"s2n_kex_parameters", !28, i64 0, !29, i64 8, !7, i64 24, !29, i64 56, !30, i64 72, !30, i64 184, !7, i64 296, !31, i64 360, !20, i64 448, !20, i64 472}
!28 = !{!"s2n_dh_params", !10, i64 0}
!29 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!30 = !{!"s2n_kem_group_params", !10, i64 0, !31, i64 8, !29, i64 96}
!31 = !{!"s2n_kem_params", !10, i64 0, !20, i64 8, !20, i64 32, !20, i64 56, !12, i64 80}
!32 = !{!"s2n_handshake_parameters", !33, i64 0, !33, i64 48, !20, i64 96, !6, i64 120, !34, 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}
!33 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!34 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!35 = !{!"s2n_psk_parameters", !6, i64 0, !36, i64 8, !17, i64 40, !17, i64 42, !10, i64 48, !6, i64 56}
!36 = !{!"s2n_array", !20, i64 0, !6, i64 24, !6, i64 28}
!37 = !{!"s2n_stuffer", !20, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!38 = !{!"", !6, i64 0}
!39 = !{!"s2n_handshake", !37, 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, !40, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!40 = !{!"s2n_offered_early_data", !10, i64 0}
!41 = !{!"s2n_client_hello", !20, i64 0, !42, i64 24, !20, i64 728, !20, i64 752, !20, 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}
!42 = !{!"", !7, i64 0, !20, i64 672, !17, i64 696}
!43 = !{!"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, !44, i64 48, !12, i64 52}
!44 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!45 = !{!"s2n_ticket_fields", !20, i64 0, !6, i64 24}
!46 = !{!"s2n_post_handshake", !37, i64 0, !7, i64 40}
!47 = !{!23, !6, i64 2040}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = distinct !{!50, !49}
!51 = !{!52, !10, i64 0}
!52 = !{!"s2n_client_hello_context", !10, i64 0, !6, i64 8}
!53 = !{!52, !6, i64 8}
!54 = distinct !{!54, !49}


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