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

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

%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_result = type { 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_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }
%struct.s2n_tls12_secrets = type { [48 x i8], [48 x i8] }

@s2n_use_color_in_output = external dso_local global i8, align 1
@__const.main.premaster_secret_hex_in = external hidden unnamed_addr constant [97 x i8], align 16
@__const.main.client_random_hex_in = external hidden unnamed_addr constant [65 x i8], align 16
@__const.main.server_random_hex_in = external hidden unnamed_addr constant [65 x i8], align 16
@__const.main.master_secret_hex_in = external hidden unnamed_addr constant [97 x i8], align 16
@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.1 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [75 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
@stdout = external global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [67 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca [96 x i8], align 16
  %7 = alloca [97 x i8], align 16
  %8 = alloca [65 x i8], align 16
  %9 = alloca [65 x i8], align 16
  %10 = alloca [97 x i8], align 16
  %11 = alloca %struct.s2n_stuffer, align 8
  %12 = alloca %struct.s2n_stuffer, align 8
  %13 = alloca %struct.s2n_stuffer, align 8
  %14 = alloca %struct.s2n_stuffer, align 8
  %15 = alloca %struct.s2n_blob, align 8
  %16 = alloca i32, align 4
  %17 = alloca %struct.s2n_blob, align 8
  %18 = alloca ptr, align 8
  %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 i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  %33 = alloca %struct.s2n_result, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i8, align 1
  %37 = alloca %struct.s2n_result, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i8, align 1
  %41 = alloca %struct.s2n_result, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %struct.s2n_result, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr %6) #11
  call void @llvm.lifetime.start.p0(i64 97, ptr %7) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %7, ptr align 16 @__const.main.premaster_secret_hex_in, i64 97, i1 false)
  call void @llvm.lifetime.start.p0(i64 65, ptr %8) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %8, ptr align 16 @__const.main.client_random_hex_in, i64 65, i1 false)
  call void @llvm.lifetime.start.p0(i64 65, ptr %9) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %9, ptr align 16 @__const.main.server_random_hex_in, i64 65, i1 false)
  call void @llvm.lifetime.start.p0(i64 97, ptr %10) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %10, ptr align 16 @__const.main.master_secret_hex_in, i64 97, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr %11) #11
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr %12) #11
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr %13) #11
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr %14) #11
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #11
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 24, i1 false)
  br label %54

54:                                               ; preds = %2
  %55 = load i32, ptr @test_count, align 4, !tbaa !5
  %56 = add nsw i32 %55, 1
  store i32 %56, ptr @test_count, align 4, !tbaa !5
  %57 = getelementptr inbounds [96 x i8], ptr %6, i64 0, i64 0
  %58 = call i32 @s2n_blob_init(ptr noundef %15, ptr noundef %57, i32 noundef 96)
  %59 = icmp eq i32 %58, -1
  br i1 %59, label %60, label %113

60:                                               ; preds = %54
  br label %61

61:                                               ; preds = %60
  br label %62

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

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

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

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

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

109:                                              ; preds = %108
  br label %110

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

111:                                              ; No predecessors!
  br label %112

112:                                              ; preds = %111
  br label %113

113:                                              ; preds = %112, %54
  br label %114

114:                                              ; preds = %113
  br label %115

115:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #11
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #11
  store ptr null, ptr %18, align 8, !tbaa !9
  br label %116

116:                                              ; preds = %115
  br label %117

117:                                              ; preds = %116
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %118 = load ptr, ptr @stdout, align 8, !tbaa !9
  %119 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %118, ptr noundef @.str.5, ptr noundef @.str.2) #11
  %120 = load ptr, ptr @stdout, align 8, !tbaa !9
  %121 = call i32 @fflush(ptr noundef %120)
  br label %122

122:                                              ; preds = %117
  %123 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %124 = icmp eq i32 %123, -1
  br i1 %124, label %125, label %178

125:                                              ; preds = %122
  br label %126

126:                                              ; preds = %125
  br label %127

127:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  %128 = call ptr @__errno_location() #12
  %129 = load i32, ptr %128, align 4, !tbaa !5
  store i32 %129, ptr %19, align 4, !tbaa !5
  %130 = load ptr, ptr @stderr, align 8, !tbaa !9
  %131 = call i32 @s2n_print_stacktrace(ptr noundef %130)
  %132 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %133 = trunc i8 %132 to i1
  br i1 %133, label %134, label %156

134:                                              ; preds = %127
  %135 = load ptr, ptr @stderr, align 8, !tbaa !9
  %136 = call i32 @fileno(ptr noundef %135) #11
  %137 = call i32 @isatty(i32 noundef %136) #11
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %139, label %156

139:                                              ; preds = %134
  %140 = load i32, ptr %19, align 4, !tbaa !5
  %141 = call ptr @__errno_location() #12
  store i32 %140, ptr %141, align 4, !tbaa !5
  %142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %143 = load i32, ptr @test_count, align 4, !tbaa !5
  %144 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %145 = load i32, ptr %144, align 4, !tbaa !5
  %146 = call ptr @s2n_strerror(i32 noundef %145, ptr noundef @.str.3)
  %147 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %148 = load i32, ptr %147, align 4, !tbaa !5
  %149 = call ptr @s2n_strerror_debug(i32 noundef %148, ptr noundef @.str.3)
  %150 = call ptr @__errno_location() #12
  %151 = load i32, ptr %150, align 4, !tbaa !5
  %152 = call ptr @strerror(i32 noundef %151) #11
  %153 = call ptr @__errno_location() #12
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef @.str, i32 noundef %143, ptr noundef @.str.6, ptr noundef @.str.2, i32 noundef 53, ptr noundef %146, ptr noundef %149, ptr noundef %152, i32 noundef %154) #11
  br label %173

156:                                              ; preds = %134, %127
  %157 = load i32, ptr %19, align 4, !tbaa !5
  %158 = call ptr @__errno_location() #12
  store i32 %157, ptr %158, align 4, !tbaa !5
  %159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %160 = load i32, ptr @test_count, align 4, !tbaa !5
  %161 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %162 = load i32, ptr %161, align 4, !tbaa !5
  %163 = call ptr @s2n_strerror(i32 noundef %162, ptr noundef @.str.3)
  %164 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %165 = load i32, ptr %164, align 4, !tbaa !5
  %166 = call ptr @s2n_strerror_debug(i32 noundef %165, ptr noundef @.str.3)
  %167 = call ptr @__errno_location() #12
  %168 = load i32, ptr %167, align 4, !tbaa !5
  %169 = call ptr @strerror(i32 noundef %168) #11
  %170 = call ptr @__errno_location() #12
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %159, ptr noundef @.str.4, i32 noundef %160, ptr noundef @.str.6, ptr noundef @.str.2, i32 noundef 53, ptr noundef %163, ptr noundef %166, ptr noundef %169, i32 noundef %171) #11
  br label %173

173:                                              ; preds = %156, %139
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %174

174:                                              ; preds = %173
  br label %175

175:                                              ; preds = %174
  call void @exit(i32 noundef 1) #13
  unreachable

176:                                              ; No predecessors!
  br label %177

177:                                              ; preds = %176
  br label %178

178:                                              ; preds = %177, %122
  br label %179

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179
  br label %181

181:                                              ; preds = %180
  %182 = load i32, ptr @test_count, align 4, !tbaa !5
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr @test_count, align 4, !tbaa !5
  %184 = call i32 @s2n_enable_atexit()
  %185 = icmp eq i32 %184, -1
  br i1 %185, label %186, label %239

186:                                              ; preds = %181
  br label %187

187:                                              ; preds = %186
  br label %188

188:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  %189 = call ptr @__errno_location() #12
  %190 = load i32, ptr %189, align 4, !tbaa !5
  store i32 %190, ptr %20, align 4, !tbaa !5
  %191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %192 = call i32 @s2n_print_stacktrace(ptr noundef %191)
  %193 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %194 = trunc i8 %193 to i1
  br i1 %194, label %195, label %217

195:                                              ; preds = %188
  %196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %197 = call i32 @fileno(ptr noundef %196) #11
  %198 = call i32 @isatty(i32 noundef %197) #11
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %200, label %217

200:                                              ; preds = %195
  %201 = load i32, ptr %20, align 4, !tbaa !5
  %202 = call ptr @__errno_location() #12
  store i32 %201, ptr %202, align 4, !tbaa !5
  %203 = load ptr, ptr @stderr, align 8, !tbaa !9
  %204 = load i32, ptr @test_count, align 4, !tbaa !5
  %205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %206 = load i32, ptr %205, align 4, !tbaa !5
  %207 = call ptr @s2n_strerror(i32 noundef %206, ptr noundef @.str.3)
  %208 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %209 = load i32, ptr %208, align 4, !tbaa !5
  %210 = call ptr @s2n_strerror_debug(i32 noundef %209, ptr noundef @.str.3)
  %211 = call ptr @__errno_location() #12
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %213 = call ptr @strerror(i32 noundef %212) #11
  %214 = call ptr @__errno_location() #12
  %215 = load i32, ptr %214, align 4, !tbaa !5
  %216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %203, ptr noundef @.str, i32 noundef %204, ptr noundef @.str.7, ptr noundef @.str.2, i32 noundef 53, ptr noundef %207, ptr noundef %210, ptr noundef %213, i32 noundef %215) #11
  br label %234

217:                                              ; preds = %195, %188
  %218 = load i32, ptr %20, align 4, !tbaa !5
  %219 = call ptr @__errno_location() #12
  store i32 %218, ptr %219, align 4, !tbaa !5
  %220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %221 = load i32, ptr @test_count, align 4, !tbaa !5
  %222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %223 = load i32, ptr %222, align 4, !tbaa !5
  %224 = call ptr @s2n_strerror(i32 noundef %223, ptr noundef @.str.3)
  %225 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = call ptr @s2n_strerror_debug(i32 noundef %226, ptr noundef @.str.3)
  %228 = call ptr @__errno_location() #12
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = call ptr @strerror(i32 noundef %229) #11
  %231 = call ptr @__errno_location() #12
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %220, ptr noundef @.str.4, i32 noundef %221, ptr noundef @.str.7, ptr noundef @.str.2, i32 noundef 53, ptr noundef %224, ptr noundef %227, ptr noundef %230, i32 noundef %232) #11
  br label %234

234:                                              ; preds = %217, %200
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  br label %235

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %235
  call void @exit(i32 noundef 1) #13
  unreachable

237:                                              ; No predecessors!
  br label %238

238:                                              ; preds = %237
  br label %239

239:                                              ; preds = %238, %181
  br label %240

240:                                              ; preds = %239
  br label %241

241:                                              ; preds = %240
  br label %242

242:                                              ; preds = %241
  br label %243

243:                                              ; preds = %242
  br label %244

244:                                              ; preds = %243
  %245 = call i32 @s2n_init()
  %246 = icmp eq i32 %245, -1
  br i1 %246, label %247, label %300

247:                                              ; preds = %244
  br label %248

248:                                              ; preds = %247
  br label %249

249:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #11
  %250 = call ptr @__errno_location() #12
  %251 = load i32, ptr %250, align 4, !tbaa !5
  store i32 %251, ptr %21, align 4, !tbaa !5
  %252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %253 = call i32 @s2n_print_stacktrace(ptr noundef %252)
  %254 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %255 = trunc i8 %254 to i1
  br i1 %255, label %256, label %278

256:                                              ; preds = %249
  %257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %258 = call i32 @fileno(ptr noundef %257) #11
  %259 = call i32 @isatty(i32 noundef %258) #11
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %261, label %278

261:                                              ; preds = %256
  %262 = load i32, ptr %21, align 4, !tbaa !5
  %263 = call ptr @__errno_location() #12
  store i32 %262, ptr %263, align 4, !tbaa !5
  %264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %265 = load i32, ptr @test_count, align 4, !tbaa !5
  %266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %267 = load i32, ptr %266, align 4, !tbaa !5
  %268 = call ptr @s2n_strerror(i32 noundef %267, ptr noundef @.str.3)
  %269 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %270 = load i32, ptr %269, align 4, !tbaa !5
  %271 = call ptr @s2n_strerror_debug(i32 noundef %270, ptr noundef @.str.3)
  %272 = call ptr @__errno_location() #12
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = call ptr @strerror(i32 noundef %273) #11
  %275 = call ptr @__errno_location() #12
  %276 = load i32, ptr %275, align 4, !tbaa !5
  %277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %264, ptr noundef @.str, i32 noundef %265, ptr noundef @.str.8, ptr noundef @.str.2, i32 noundef 53, ptr noundef %268, ptr noundef %271, ptr noundef %274, i32 noundef %276) #11
  br label %295

278:                                              ; preds = %256, %249
  %279 = load i32, ptr %21, align 4, !tbaa !5
  %280 = call ptr @__errno_location() #12
  store i32 %279, ptr %280, align 4, !tbaa !5
  %281 = load ptr, ptr @stderr, align 8, !tbaa !9
  %282 = load i32, ptr @test_count, align 4, !tbaa !5
  %283 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %284 = load i32, ptr %283, align 4, !tbaa !5
  %285 = call ptr @s2n_strerror(i32 noundef %284, ptr noundef @.str.3)
  %286 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %287 = load i32, ptr %286, align 4, !tbaa !5
  %288 = call ptr @s2n_strerror_debug(i32 noundef %287, ptr noundef @.str.3)
  %289 = call ptr @__errno_location() #12
  %290 = load i32, ptr %289, align 4, !tbaa !5
  %291 = call ptr @strerror(i32 noundef %290) #11
  %292 = call ptr @__errno_location() #12
  %293 = load i32, ptr %292, align 4, !tbaa !5
  %294 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %281, ptr noundef @.str.4, i32 noundef %282, ptr noundef @.str.8, ptr noundef @.str.2, i32 noundef 53, ptr noundef %285, ptr noundef %288, ptr noundef %291, i32 noundef %293) #11
  br label %295

295:                                              ; preds = %278, %261
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  br label %296

296:                                              ; preds = %295
  br label %297

297:                                              ; preds = %296
  call void @exit(i32 noundef 1) #13
  unreachable

298:                                              ; No predecessors!
  br label %299

299:                                              ; preds = %298
  br label %300

300:                                              ; preds = %299, %244
  br label %301

301:                                              ; preds = %300
  br label %302

302:                                              ; preds = %301
  br label %303

303:                                              ; preds = %302
  br label %304

304:                                              ; preds = %303
  br label %305

305:                                              ; preds = %304
  %306 = load i32, ptr @test_count, align 4, !tbaa !5
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr @test_count, align 4, !tbaa !5
  %308 = call i32 (...) @s2n_disable_tls13_in_test()
  %309 = icmp eq i32 %308, -1
  br i1 %309, label %310, label %363

310:                                              ; preds = %305
  br label %311

311:                                              ; preds = %310
  br label %312

312:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #11
  %313 = call ptr @__errno_location() #12
  %314 = load i32, ptr %313, align 4, !tbaa !5
  store i32 %314, ptr %22, align 4, !tbaa !5
  %315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %316 = call i32 @s2n_print_stacktrace(ptr noundef %315)
  %317 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %318 = trunc i8 %317 to i1
  br i1 %318, label %319, label %341

319:                                              ; preds = %312
  %320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %321 = call i32 @fileno(ptr noundef %320) #11
  %322 = call i32 @isatty(i32 noundef %321) #11
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %341

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

341:                                              ; preds = %319, %312
  %342 = load i32, ptr %22, align 4, !tbaa !5
  %343 = call ptr @__errno_location() #12
  store i32 %342, ptr %343, align 4, !tbaa !5
  %344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %345 = load i32, ptr @test_count, align 4, !tbaa !5
  %346 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %347 = load i32, ptr %346, align 4, !tbaa !5
  %348 = call ptr @s2n_strerror(i32 noundef %347, ptr noundef @.str.3)
  %349 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %350 = load i32, ptr %349, align 4, !tbaa !5
  %351 = call ptr @s2n_strerror_debug(i32 noundef %350, ptr noundef @.str.3)
  %352 = call ptr @__errno_location() #12
  %353 = load i32, ptr %352, align 4, !tbaa !5
  %354 = call ptr @strerror(i32 noundef %353) #11
  %355 = call ptr @__errno_location() #12
  %356 = load i32, ptr %355, align 4, !tbaa !5
  %357 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %344, ptr noundef @.str.4, i32 noundef %345, ptr noundef @.str.9, ptr noundef @.str.2, i32 noundef 54, ptr noundef %348, ptr noundef %351, ptr noundef %354, i32 noundef %356) #11
  br label %358

358:                                              ; preds = %341, %324
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  br label %359

359:                                              ; preds = %358
  br label %360

360:                                              ; preds = %359
  call void @exit(i32 noundef 1) #13
  unreachable

361:                                              ; No predecessors!
  br label %362

362:                                              ; preds = %361
  br label %363

363:                                              ; preds = %362, %305
  br label %364

364:                                              ; preds = %363
  br label %365

365:                                              ; preds = %364
  %366 = call zeroext i1 @s2n_is_in_fips_mode()
  br i1 %366, label %367, label %522

367:                                              ; preds = %365
  br label %368

368:                                              ; preds = %367
  br label %369

369:                                              ; preds = %368
  %370 = call i32 @s2n_cleanup()
  %371 = icmp eq i32 %370, -1
  br i1 %371, label %372, label %425

372:                                              ; preds = %369
  br label %373

373:                                              ; preds = %372
  br label %374

374:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  %375 = call ptr @__errno_location() #12
  %376 = load i32, ptr %375, align 4, !tbaa !5
  store i32 %376, ptr %23, align 4, !tbaa !5
  %377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %378 = call i32 @s2n_print_stacktrace(ptr noundef %377)
  %379 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %380 = trunc i8 %379 to i1
  br i1 %380, label %381, label %403

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

386:                                              ; preds = %381
  %387 = load i32, ptr %23, align 4, !tbaa !5
  %388 = call ptr @__errno_location() #12
  store i32 %387, ptr %388, align 4, !tbaa !5
  %389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %390 = load i32, ptr @test_count, align 4, !tbaa !5
  %391 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %392 = load i32, ptr %391, align 4, !tbaa !5
  %393 = call ptr @s2n_strerror(i32 noundef %392, ptr noundef @.str.3)
  %394 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %395 = load i32, ptr %394, align 4, !tbaa !5
  %396 = call ptr @s2n_strerror_debug(i32 noundef %395, ptr noundef @.str.3)
  %397 = call ptr @__errno_location() #12
  %398 = load i32, ptr %397, align 4, !tbaa !5
  %399 = call ptr @strerror(i32 noundef %398) #11
  %400 = call ptr @__errno_location() #12
  %401 = load i32, ptr %400, align 4, !tbaa !5
  %402 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %389, ptr noundef @.str, i32 noundef %390, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 58, ptr noundef %393, ptr noundef %396, ptr noundef %399, i32 noundef %401) #11
  br label %420

403:                                              ; preds = %381, %374
  %404 = load i32, ptr %23, align 4, !tbaa !5
  %405 = call ptr @__errno_location() #12
  store i32 %404, ptr %405, align 4, !tbaa !5
  %406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %407 = load i32, ptr @test_count, align 4, !tbaa !5
  %408 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %409 = load i32, ptr %408, align 4, !tbaa !5
  %410 = call ptr @s2n_strerror(i32 noundef %409, ptr noundef @.str.3)
  %411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %412 = load i32, ptr %411, align 4, !tbaa !5
  %413 = call ptr @s2n_strerror_debug(i32 noundef %412, ptr noundef @.str.3)
  %414 = call ptr @__errno_location() #12
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = call ptr @strerror(i32 noundef %415) #11
  %417 = call ptr @__errno_location() #12
  %418 = load i32, ptr %417, align 4, !tbaa !5
  %419 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %406, ptr noundef @.str.4, i32 noundef %407, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 58, ptr noundef %410, ptr noundef %413, ptr noundef %416, i32 noundef %418) #11
  br label %420

420:                                              ; preds = %403, %386
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %421

421:                                              ; preds = %420
  br label %422

422:                                              ; preds = %421
  call void @exit(i32 noundef 1) #13
  unreachable

423:                                              ; No predecessors!
  br label %424

424:                                              ; preds = %423
  br label %425

425:                                              ; preds = %424, %369
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  br label %428

428:                                              ; preds = %427
  br label %429

429:                                              ; preds = %428
  %430 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %431 = icmp eq i32 %430, -1
  br i1 %431, label %432, label %485

432:                                              ; preds = %429
  br label %433

433:                                              ; preds = %432
  br label %434

434:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #11
  %435 = call ptr @__errno_location() #12
  %436 = load i32, ptr %435, align 4, !tbaa !5
  store i32 %436, ptr %24, align 4, !tbaa !5
  %437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %438 = call i32 @s2n_print_stacktrace(ptr noundef %437)
  %439 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %440 = trunc i8 %439 to i1
  br i1 %440, label %441, label %463

441:                                              ; preds = %434
  %442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %443 = call i32 @fileno(ptr noundef %442) #11
  %444 = call i32 @isatty(i32 noundef %443) #11
  %445 = icmp ne i32 %444, 0
  br i1 %445, label %446, label %463

446:                                              ; preds = %441
  %447 = load i32, ptr %24, align 4, !tbaa !5
  %448 = call ptr @__errno_location() #12
  store i32 %447, ptr %448, align 4, !tbaa !5
  %449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %450 = load i32, ptr @test_count, align 4, !tbaa !5
  %451 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %452 = load i32, ptr %451, align 4, !tbaa !5
  %453 = call ptr @s2n_strerror(i32 noundef %452, ptr noundef @.str.3)
  %454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %455 = load i32, ptr %454, align 4, !tbaa !5
  %456 = call ptr @s2n_strerror_debug(i32 noundef %455, ptr noundef @.str.3)
  %457 = call ptr @__errno_location() #12
  %458 = load i32, ptr %457, align 4, !tbaa !5
  %459 = call ptr @strerror(i32 noundef %458) #11
  %460 = call ptr @__errno_location() #12
  %461 = load i32, ptr %460, align 4, !tbaa !5
  %462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %449, ptr noundef @.str, i32 noundef %450, ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 58, ptr noundef %453, ptr noundef %456, ptr noundef %459, i32 noundef %461) #11
  br label %480

463:                                              ; preds = %441, %434
  %464 = load i32, ptr %24, align 4, !tbaa !5
  %465 = call ptr @__errno_location() #12
  store i32 %464, ptr %465, align 4, !tbaa !5
  %466 = load ptr, ptr @stderr, align 8, !tbaa !9
  %467 = load i32, ptr @test_count, align 4, !tbaa !5
  %468 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %469 = load i32, ptr %468, align 4, !tbaa !5
  %470 = call ptr @s2n_strerror(i32 noundef %469, ptr noundef @.str.3)
  %471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %472 = load i32, ptr %471, align 4, !tbaa !5
  %473 = call ptr @s2n_strerror_debug(i32 noundef %472, ptr noundef @.str.3)
  %474 = call ptr @__errno_location() #12
  %475 = load i32, ptr %474, align 4, !tbaa !5
  %476 = call ptr @strerror(i32 noundef %475) #11
  %477 = call ptr @__errno_location() #12
  %478 = load i32, ptr %477, align 4, !tbaa !5
  %479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %466, ptr noundef @.str.4, i32 noundef %467, ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 58, ptr noundef %470, ptr noundef %473, ptr noundef %476, i32 noundef %478) #11
  br label %480

480:                                              ; preds = %463, %446
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %481

481:                                              ; preds = %480
  br label %482

482:                                              ; preds = %481
  call void @exit(i32 noundef 1) #13
  unreachable

483:                                              ; No predecessors!
  br label %484

484:                                              ; preds = %483
  br label %485

485:                                              ; preds = %484, %429
  br label %486

486:                                              ; preds = %485
  br label %487

487:                                              ; preds = %486
  %488 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %489 = trunc i8 %488 to i1
  br i1 %489, label %490, label %506

490:                                              ; preds = %487
  %491 = load ptr, ptr @stdout, align 8, !tbaa !9
  %492 = call i32 @fileno(ptr noundef %491) #11
  %493 = call i32 @isatty(i32 noundef %492) #11
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %495, label %506

495:                                              ; preds = %490
  %496 = load i32, ptr @test_count, align 4, !tbaa !5
  %497 = icmp ne i32 %496, 0
  br i1 %497, label %498, label %502

498:                                              ; preds = %495
  %499 = load ptr, ptr @stdout, align 8, !tbaa !9
  %500 = load i32, ptr @test_count, align 4, !tbaa !5
  %501 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %499, ptr noundef @.str.12, i32 noundef %500) #11
  br label %505

502:                                              ; preds = %495
  %503 = load ptr, ptr @stdout, align 8, !tbaa !9
  %504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %503, ptr noundef @.str.13) #11
  br label %505

505:                                              ; preds = %502, %498
  br label %517

506:                                              ; preds = %490, %487
  %507 = load i32, ptr @test_count, align 4, !tbaa !5
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %509, label %513

509:                                              ; preds = %506
  %510 = load ptr, ptr @stdout, align 8, !tbaa !9
  %511 = load i32, ptr @test_count, align 4, !tbaa !5
  %512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %510, ptr noundef @.str.14, i32 noundef %511) #11
  br label %516

513:                                              ; preds = %506
  %514 = load ptr, ptr @stdout, align 8, !tbaa !9
  %515 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %514, ptr noundef @.str.15) #11
  br label %516

516:                                              ; preds = %513, %509
  br label %517

517:                                              ; preds = %516, %505
  store i32 0, ptr %3, align 4
  store i32 1, ptr %25, align 4
  br label %1686

518:                                              ; No predecessors!
  br label %519

519:                                              ; preds = %518
  br label %520

520:                                              ; preds = %519
  br label %521

521:                                              ; preds = %520
  br label %522

522:                                              ; preds = %521, %365
  br label %523

523:                                              ; preds = %522
  %524 = load i32, ptr @test_count, align 4, !tbaa !5
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr @test_count, align 4, !tbaa !5
  %526 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %526, ptr %18, align 8, !tbaa !9
  %527 = icmp eq ptr %526, null
  br i1 %527, label %528, label %581

528:                                              ; preds = %523
  br label %529

529:                                              ; preds = %528
  br label %530

530:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #11
  %531 = call ptr @__errno_location() #12
  %532 = load i32, ptr %531, align 4, !tbaa !5
  store i32 %532, ptr %26, align 4, !tbaa !5
  %533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %534 = call i32 @s2n_print_stacktrace(ptr noundef %533)
  %535 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %536 = trunc i8 %535 to i1
  br i1 %536, label %537, label %559

537:                                              ; preds = %530
  %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
  %541 = icmp ne i32 %540, 0
  br i1 %541, label %542, label %559

542:                                              ; preds = %537
  %543 = load i32, ptr %26, align 4, !tbaa !5
  %544 = call ptr @__errno_location() #12
  store i32 %543, ptr %544, align 4, !tbaa !5
  %545 = load ptr, ptr @stderr, align 8, !tbaa !9
  %546 = load i32, ptr @test_count, align 4, !tbaa !5
  %547 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %548 = load i32, ptr %547, align 4, !tbaa !5
  %549 = call ptr @s2n_strerror(i32 noundef %548, ptr noundef @.str.3)
  %550 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %551 = load i32, ptr %550, align 4, !tbaa !5
  %552 = call ptr @s2n_strerror_debug(i32 noundef %551, ptr noundef @.str.3)
  %553 = call ptr @__errno_location() #12
  %554 = load i32, ptr %553, align 4, !tbaa !5
  %555 = call ptr @strerror(i32 noundef %554) #11
  %556 = call ptr @__errno_location() #12
  %557 = load i32, ptr %556, align 4, !tbaa !5
  %558 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %545, ptr noundef @.str, i32 noundef %546, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 61, ptr noundef %549, ptr noundef %552, ptr noundef %555, i32 noundef %557) #11
  br label %576

559:                                              ; preds = %537, %530
  %560 = load i32, ptr %26, align 4, !tbaa !5
  %561 = call ptr @__errno_location() #12
  store i32 %560, ptr %561, align 4, !tbaa !5
  %562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %563 = load i32, ptr @test_count, align 4, !tbaa !5
  %564 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %565 = load i32, ptr %564, align 4, !tbaa !5
  %566 = call ptr @s2n_strerror(i32 noundef %565, ptr noundef @.str.3)
  %567 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %568 = load i32, ptr %567, align 4, !tbaa !5
  %569 = call ptr @s2n_strerror_debug(i32 noundef %568, ptr noundef @.str.3)
  %570 = call ptr @__errno_location() #12
  %571 = load i32, ptr %570, align 4, !tbaa !5
  %572 = call ptr @strerror(i32 noundef %571) #11
  %573 = call ptr @__errno_location() #12
  %574 = load i32, ptr %573, align 4, !tbaa !5
  %575 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %562, ptr noundef @.str.4, i32 noundef %563, ptr noundef @.str.16, ptr noundef @.str.2, i32 noundef 61, ptr noundef %566, ptr noundef %569, ptr noundef %572, i32 noundef %574) #11
  br label %576

576:                                              ; preds = %559, %542
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  br label %577

577:                                              ; preds = %576
  br label %578

578:                                              ; preds = %577
  call void @exit(i32 noundef 1) #13
  unreachable

579:                                              ; No predecessors!
  br label %580

580:                                              ; preds = %579
  br label %581

581:                                              ; preds = %580, %523
  br label %582

582:                                              ; preds = %581
  br label %583

583:                                              ; preds = %582
  br label %584

584:                                              ; preds = %583
  %585 = load i32, ptr @test_count, align 4, !tbaa !5
  %586 = add nsw i32 %585, 1
  store i32 %586, ptr @test_count, align 4, !tbaa !5
  %587 = getelementptr inbounds [65 x i8], ptr %8, i64 0, i64 0
  %588 = call i32 @s2n_stuffer_alloc_ro_from_string(ptr noundef %11, ptr noundef %587)
  %589 = icmp eq i32 %588, -1
  br i1 %589, label %590, label %643

590:                                              ; preds = %584
  br label %591

591:                                              ; preds = %590
  br label %592

592:                                              ; preds = %591
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  %593 = call ptr @__errno_location() #12
  %594 = load i32, ptr %593, align 4, !tbaa !5
  store i32 %594, ptr %27, align 4, !tbaa !5
  %595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %596 = call i32 @s2n_print_stacktrace(ptr noundef %595)
  %597 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %598 = trunc i8 %597 to i1
  br i1 %598, label %599, label %621

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

604:                                              ; preds = %599
  %605 = load i32, ptr %27, align 4, !tbaa !5
  %606 = call ptr @__errno_location() #12
  store i32 %605, ptr %606, align 4, !tbaa !5
  %607 = load ptr, ptr @stderr, align 8, !tbaa !9
  %608 = load i32, ptr @test_count, align 4, !tbaa !5
  %609 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %610 = load i32, ptr %609, align 4, !tbaa !5
  %611 = call ptr @s2n_strerror(i32 noundef %610, ptr noundef @.str.3)
  %612 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %613 = load i32, ptr %612, align 4, !tbaa !5
  %614 = call ptr @s2n_strerror_debug(i32 noundef %613, ptr noundef @.str.3)
  %615 = call ptr @__errno_location() #12
  %616 = load i32, ptr %615, align 4, !tbaa !5
  %617 = call ptr @strerror(i32 noundef %616) #11
  %618 = call ptr @__errno_location() #12
  %619 = load i32, ptr %618, align 4, !tbaa !5
  %620 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %607, ptr noundef @.str, i32 noundef %608, ptr noundef @.str.17, ptr noundef @.str.2, i32 noundef 63, ptr noundef %611, ptr noundef %614, ptr noundef %617, i32 noundef %619) #11
  br label %638

621:                                              ; preds = %599, %592
  %622 = load i32, ptr %27, align 4, !tbaa !5
  %623 = call ptr @__errno_location() #12
  store i32 %622, ptr %623, align 4, !tbaa !5
  %624 = load ptr, ptr @stderr, align 8, !tbaa !9
  %625 = load i32, ptr @test_count, align 4, !tbaa !5
  %626 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %627 = load i32, ptr %626, align 4, !tbaa !5
  %628 = call ptr @s2n_strerror(i32 noundef %627, ptr noundef @.str.3)
  %629 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %630 = load i32, ptr %629, align 4, !tbaa !5
  %631 = call ptr @s2n_strerror_debug(i32 noundef %630, ptr noundef @.str.3)
  %632 = call ptr @__errno_location() #12
  %633 = load i32, ptr %632, align 4, !tbaa !5
  %634 = call ptr @strerror(i32 noundef %633) #11
  %635 = call ptr @__errno_location() #12
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %624, ptr noundef @.str.4, i32 noundef %625, ptr noundef @.str.17, ptr noundef @.str.2, i32 noundef 63, ptr noundef %628, ptr noundef %631, ptr noundef %634, i32 noundef %636) #11
  br label %638

638:                                              ; preds = %621, %604
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %639

639:                                              ; preds = %638
  br label %640

640:                                              ; preds = %639
  call void @exit(i32 noundef 1) #13
  unreachable

641:                                              ; No predecessors!
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642, %584
  br label %644

644:                                              ; preds = %643
  br label %645

645:                                              ; preds = %644
  br label %646

646:                                              ; preds = %645
  %647 = load i32, ptr @test_count, align 4, !tbaa !5
  %648 = add nsw i32 %647, 1
  store i32 %648, ptr @test_count, align 4, !tbaa !5
  %649 = getelementptr inbounds [65 x i8], ptr %9, i64 0, i64 0
  %650 = call i32 @s2n_stuffer_alloc_ro_from_string(ptr noundef %12, ptr noundef %649)
  %651 = icmp eq i32 %650, -1
  br i1 %651, label %652, label %705

652:                                              ; preds = %646
  br label %653

653:                                              ; preds = %652
  br label %654

654:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  %655 = call ptr @__errno_location() #12
  %656 = load i32, ptr %655, align 4, !tbaa !5
  store i32 %656, ptr %28, align 4, !tbaa !5
  %657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %658 = call i32 @s2n_print_stacktrace(ptr noundef %657)
  %659 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %660 = trunc i8 %659 to i1
  br i1 %660, label %661, label %683

661:                                              ; preds = %654
  %662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %663 = call i32 @fileno(ptr noundef %662) #11
  %664 = call i32 @isatty(i32 noundef %663) #11
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %666, label %683

666:                                              ; preds = %661
  %667 = load i32, ptr %28, align 4, !tbaa !5
  %668 = call ptr @__errno_location() #12
  store i32 %667, ptr %668, align 4, !tbaa !5
  %669 = load ptr, ptr @stderr, align 8, !tbaa !9
  %670 = load i32, ptr @test_count, align 4, !tbaa !5
  %671 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %672 = load i32, ptr %671, align 4, !tbaa !5
  %673 = call ptr @s2n_strerror(i32 noundef %672, ptr noundef @.str.3)
  %674 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %675 = load i32, ptr %674, align 4, !tbaa !5
  %676 = call ptr @s2n_strerror_debug(i32 noundef %675, ptr noundef @.str.3)
  %677 = call ptr @__errno_location() #12
  %678 = load i32, ptr %677, align 4, !tbaa !5
  %679 = call ptr @strerror(i32 noundef %678) #11
  %680 = call ptr @__errno_location() #12
  %681 = load i32, ptr %680, align 4, !tbaa !5
  %682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %669, ptr noundef @.str, i32 noundef %670, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 64, ptr noundef %673, ptr noundef %676, ptr noundef %679, i32 noundef %681) #11
  br label %700

683:                                              ; preds = %661, %654
  %684 = load i32, ptr %28, align 4, !tbaa !5
  %685 = call ptr @__errno_location() #12
  store i32 %684, ptr %685, align 4, !tbaa !5
  %686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %687 = load i32, ptr @test_count, align 4, !tbaa !5
  %688 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %689 = load i32, ptr %688, align 4, !tbaa !5
  %690 = call ptr @s2n_strerror(i32 noundef %689, ptr noundef @.str.3)
  %691 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %692 = load i32, ptr %691, align 4, !tbaa !5
  %693 = call ptr @s2n_strerror_debug(i32 noundef %692, ptr noundef @.str.3)
  %694 = call ptr @__errno_location() #12
  %695 = load i32, ptr %694, align 4, !tbaa !5
  %696 = call ptr @strerror(i32 noundef %695) #11
  %697 = call ptr @__errno_location() #12
  %698 = load i32, ptr %697, align 4, !tbaa !5
  %699 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %686, ptr noundef @.str.4, i32 noundef %687, ptr noundef @.str.18, ptr noundef @.str.2, i32 noundef 64, ptr noundef %690, ptr noundef %693, ptr noundef %696, i32 noundef %698) #11
  br label %700

700:                                              ; preds = %683, %666
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %701

701:                                              ; preds = %700
  br label %702

702:                                              ; preds = %701
  call void @exit(i32 noundef 1) #13
  unreachable

703:                                              ; No predecessors!
  br label %704

704:                                              ; preds = %703
  br label %705

705:                                              ; preds = %704, %646
  br label %706

706:                                              ; preds = %705
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707
  %709 = load i32, ptr @test_count, align 4, !tbaa !5
  %710 = add nsw i32 %709, 1
  store i32 %710, ptr @test_count, align 4, !tbaa !5
  %711 = getelementptr inbounds [97 x i8], ptr %7, i64 0, i64 0
  %712 = call i32 @s2n_stuffer_alloc_ro_from_string(ptr noundef %13, ptr noundef %711)
  %713 = icmp eq i32 %712, -1
  br i1 %713, label %714, label %767

714:                                              ; preds = %708
  br label %715

715:                                              ; preds = %714
  br label %716

716:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #11
  %717 = call ptr @__errno_location() #12
  %718 = load i32, ptr %717, align 4, !tbaa !5
  store i32 %718, ptr %29, align 4, !tbaa !5
  %719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %720 = call i32 @s2n_print_stacktrace(ptr noundef %719)
  %721 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %722 = trunc i8 %721 to i1
  br i1 %722, label %723, label %745

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

728:                                              ; preds = %723
  %729 = load i32, ptr %29, align 4, !tbaa !5
  %730 = call ptr @__errno_location() #12
  store i32 %729, ptr %730, align 4, !tbaa !5
  %731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %732 = load i32, ptr @test_count, align 4, !tbaa !5
  %733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %734 = load i32, ptr %733, align 4, !tbaa !5
  %735 = call ptr @s2n_strerror(i32 noundef %734, ptr noundef @.str.3)
  %736 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %737 = load i32, ptr %736, align 4, !tbaa !5
  %738 = call ptr @s2n_strerror_debug(i32 noundef %737, ptr noundef @.str.3)
  %739 = call ptr @__errno_location() #12
  %740 = load i32, ptr %739, align 4, !tbaa !5
  %741 = call ptr @strerror(i32 noundef %740) #11
  %742 = call ptr @__errno_location() #12
  %743 = load i32, ptr %742, align 4, !tbaa !5
  %744 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %731, ptr noundef @.str, i32 noundef %732, ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 65, ptr noundef %735, ptr noundef %738, ptr noundef %741, i32 noundef %743) #11
  br label %762

745:                                              ; preds = %723, %716
  %746 = load i32, ptr %29, align 4, !tbaa !5
  %747 = call ptr @__errno_location() #12
  store i32 %746, ptr %747, align 4, !tbaa !5
  %748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %749 = load i32, ptr @test_count, align 4, !tbaa !5
  %750 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %751 = load i32, ptr %750, align 4, !tbaa !5
  %752 = call ptr @s2n_strerror(i32 noundef %751, ptr noundef @.str.3)
  %753 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %754 = load i32, ptr %753, align 4, !tbaa !5
  %755 = call ptr @s2n_strerror_debug(i32 noundef %754, ptr noundef @.str.3)
  %756 = call ptr @__errno_location() #12
  %757 = load i32, ptr %756, align 4, !tbaa !5
  %758 = call ptr @strerror(i32 noundef %757) #11
  %759 = call ptr @__errno_location() #12
  %760 = load i32, ptr %759, align 4, !tbaa !5
  %761 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %748, ptr noundef @.str.4, i32 noundef %749, ptr noundef @.str.19, ptr noundef @.str.2, i32 noundef 65, ptr noundef %752, ptr noundef %755, ptr noundef %758, i32 noundef %760) #11
  br label %762

762:                                              ; preds = %745, %728
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #11
  br label %763

763:                                              ; preds = %762
  br label %764

764:                                              ; preds = %763
  call void @exit(i32 noundef 1) #13
  unreachable

765:                                              ; No predecessors!
  br label %766

766:                                              ; preds = %765
  br label %767

767:                                              ; preds = %766, %708
  br label %768

768:                                              ; preds = %767
  br label %769

769:                                              ; preds = %768
  br label %770

770:                                              ; preds = %769
  %771 = load i32, ptr @test_count, align 4, !tbaa !5
  %772 = add nsw i32 %771, 1
  store i32 %772, ptr @test_count, align 4, !tbaa !5
  %773 = call i32 @s2n_stuffer_init(ptr noundef %14, ptr noundef %15)
  %774 = icmp eq i32 %773, -1
  br i1 %774, label %775, label %828

775:                                              ; preds = %770
  br label %776

776:                                              ; preds = %775
  br label %777

777:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  %778 = call ptr @__errno_location() #12
  %779 = load i32, ptr %778, align 4, !tbaa !5
  store i32 %779, ptr %30, align 4, !tbaa !5
  %780 = load ptr, ptr @stderr, align 8, !tbaa !9
  %781 = call i32 @s2n_print_stacktrace(ptr noundef %780)
  %782 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %783 = trunc i8 %782 to i1
  br i1 %783, label %784, label %806

784:                                              ; preds = %777
  %785 = load ptr, ptr @stderr, align 8, !tbaa !9
  %786 = call i32 @fileno(ptr noundef %785) #11
  %787 = call i32 @isatty(i32 noundef %786) #11
  %788 = icmp ne i32 %787, 0
  br i1 %788, label %789, label %806

789:                                              ; preds = %784
  %790 = load i32, ptr %30, align 4, !tbaa !5
  %791 = call ptr @__errno_location() #12
  store i32 %790, ptr %791, align 4, !tbaa !5
  %792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %793 = load i32, ptr @test_count, align 4, !tbaa !5
  %794 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %795 = load i32, ptr %794, align 4, !tbaa !5
  %796 = call ptr @s2n_strerror(i32 noundef %795, ptr noundef @.str.3)
  %797 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %798 = load i32, ptr %797, align 4, !tbaa !5
  %799 = call ptr @s2n_strerror_debug(i32 noundef %798, ptr noundef @.str.3)
  %800 = call ptr @__errno_location() #12
  %801 = load i32, ptr %800, align 4, !tbaa !5
  %802 = call ptr @strerror(i32 noundef %801) #11
  %803 = call ptr @__errno_location() #12
  %804 = load i32, ptr %803, align 4, !tbaa !5
  %805 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %792, ptr noundef @.str, i32 noundef %793, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 67, ptr noundef %796, ptr noundef %799, ptr noundef %802, i32 noundef %804) #11
  br label %823

806:                                              ; preds = %784, %777
  %807 = load i32, ptr %30, align 4, !tbaa !5
  %808 = call ptr @__errno_location() #12
  store i32 %807, ptr %808, align 4, !tbaa !5
  %809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %810 = load i32, ptr @test_count, align 4, !tbaa !5
  %811 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %812 = load i32, ptr %811, align 4, !tbaa !5
  %813 = call ptr @s2n_strerror(i32 noundef %812, ptr noundef @.str.3)
  %814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %815 = load i32, ptr %814, align 4, !tbaa !5
  %816 = call ptr @s2n_strerror_debug(i32 noundef %815, ptr noundef @.str.3)
  %817 = call ptr @__errno_location() #12
  %818 = load i32, ptr %817, align 4, !tbaa !5
  %819 = call ptr @strerror(i32 noundef %818) #11
  %820 = call ptr @__errno_location() #12
  %821 = load i32, ptr %820, align 4, !tbaa !5
  %822 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %809, ptr noundef @.str.4, i32 noundef %810, ptr noundef @.str.20, ptr noundef @.str.2, i32 noundef 67, ptr noundef %813, ptr noundef %816, ptr noundef %819, i32 noundef %821) #11
  br label %823

823:                                              ; preds = %806, %789
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  br label %824

824:                                              ; preds = %823
  br label %825

825:                                              ; preds = %824
  call void @exit(i32 noundef 1) #13
  unreachable

826:                                              ; No predecessors!
  br label %827

827:                                              ; preds = %826
  br label %828

828:                                              ; preds = %827, %770
  br label %829

829:                                              ; preds = %828
  br label %830

830:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %831

831:                                              ; preds = %908, %830
  %832 = load i32, ptr %31, align 4, !tbaa !5
  %833 = icmp slt i32 %832, 48
  br i1 %833, label %835, label %834

834:                                              ; preds = %831
  store i32 82, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  br label %911

835:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #11
  store i8 0, ptr %32, align 1, !tbaa !15
  br label %836

836:                                              ; preds = %835
  %837 = load i32, ptr @test_count, align 4, !tbaa !5
  %838 = add nsw i32 %837, 1
  store i32 %838, ptr @test_count, align 4, !tbaa !5
  %839 = call i32 @s2n_stuffer_read_uint8_hex(ptr noundef %13, ptr noundef %32)
  %840 = getelementptr inbounds %struct.s2n_result, ptr %33, i32 0, i32 0
  store i32 %839, ptr %840, align 4
  %841 = getelementptr inbounds %struct.s2n_result, ptr %33, i32 0, i32 0
  %842 = load i32, ptr %841, align 4
  %843 = call zeroext i1 @s2n_result_is_ok(i32 %842)
  br i1 %843, label %897, label %844

844:                                              ; preds = %836
  br label %845

845:                                              ; preds = %844
  br label %846

846:                                              ; preds = %845
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #11
  %847 = call ptr @__errno_location() #12
  %848 = load i32, ptr %847, align 4, !tbaa !5
  store i32 %848, ptr %34, align 4, !tbaa !5
  %849 = load ptr, ptr @stderr, align 8, !tbaa !9
  %850 = call i32 @s2n_print_stacktrace(ptr noundef %849)
  %851 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %852 = trunc i8 %851 to i1
  br i1 %852, label %853, label %875

853:                                              ; preds = %846
  %854 = load ptr, ptr @stderr, align 8, !tbaa !9
  %855 = call i32 @fileno(ptr noundef %854) #11
  %856 = call i32 @isatty(i32 noundef %855) #11
  %857 = icmp ne i32 %856, 0
  br i1 %857, label %858, label %875

858:                                              ; preds = %853
  %859 = load i32, ptr %34, align 4, !tbaa !5
  %860 = call ptr @__errno_location() #12
  store i32 %859, ptr %860, align 4, !tbaa !5
  %861 = load ptr, ptr @stderr, align 8, !tbaa !9
  %862 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %864, ptr noundef @.str.3)
  %866 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %867 = load i32, ptr %866, align 4, !tbaa !5
  %868 = call ptr @s2n_strerror_debug(i32 noundef %867, ptr noundef @.str.3)
  %869 = call ptr @__errno_location() #12
  %870 = load i32, ptr %869, align 4, !tbaa !5
  %871 = call ptr @strerror(i32 noundef %870) #11
  %872 = call ptr @__errno_location() #12
  %873 = load i32, ptr %872, align 4, !tbaa !5
  %874 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %861, ptr noundef @.str, i32 noundef %862, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 72, ptr noundef %865, ptr noundef %868, ptr noundef %871, i32 noundef %873) #11
  br label %892

875:                                              ; preds = %853, %846
  %876 = load i32, ptr %34, align 4, !tbaa !5
  %877 = call ptr @__errno_location() #12
  store i32 %876, ptr %877, align 4, !tbaa !5
  %878 = load ptr, ptr @stderr, align 8, !tbaa !9
  %879 = load i32, ptr @test_count, align 4, !tbaa !5
  %880 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %881 = load i32, ptr %880, align 4, !tbaa !5
  %882 = call ptr @s2n_strerror(i32 noundef %881, ptr noundef @.str.3)
  %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 = call ptr @__errno_location() #12
  %887 = load i32, ptr %886, align 4, !tbaa !5
  %888 = call ptr @strerror(i32 noundef %887) #11
  %889 = call ptr @__errno_location() #12
  %890 = load i32, ptr %889, align 4, !tbaa !5
  %891 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %878, ptr noundef @.str.4, i32 noundef %879, ptr noundef @.str.21, ptr noundef @.str.2, i32 noundef 72, ptr noundef %882, ptr noundef %885, ptr noundef %888, i32 noundef %890) #11
  br label %892

892:                                              ; preds = %875, %858
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %893

893:                                              ; preds = %892
  br label %894

894:                                              ; preds = %893
  call void @exit(i32 noundef 1) #13
  unreachable

895:                                              ; No predecessors!
  br label %896

896:                                              ; preds = %895
  br label %897

897:                                              ; preds = %896, %836
  br label %898

898:                                              ; preds = %897
  br label %899

899:                                              ; preds = %898
  %900 = load i8, ptr %32, align 1, !tbaa !15
  %901 = load ptr, ptr %18, align 8, !tbaa !9
  %902 = getelementptr inbounds %struct.s2n_connection, ptr %901, i32 0, i32 28
  %903 = getelementptr inbounds %struct.s2n_secrets, ptr %902, i32 0, i32 0
  %904 = getelementptr inbounds %struct.s2n_tls12_secrets, ptr %903, i32 0, i32 0
  %905 = load i32, ptr %31, align 4, !tbaa !5
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds [48 x i8], ptr %904, i64 0, i64 %906
  store i8 %900, ptr %907, align 1, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #11
  br label %908

908:                                              ; preds = %899
  %909 = load i32, ptr %31, align 4, !tbaa !5
  %910 = add nsw i32 %909, 1
  store i32 %910, ptr %31, align 4, !tbaa !5
  br label %831, !llvm.loop !16

911:                                              ; preds = %834
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #11
  store i32 0, ptr %35, align 4, !tbaa !5
  br label %912

912:                                              ; preds = %988, %911
  %913 = load i32, ptr %35, align 4, !tbaa !5
  %914 = icmp slt i32 %913, 32
  br i1 %914, label %916, label %915

915:                                              ; preds = %912
  store i32 91, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  br label %991

916:                                              ; preds = %912
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #11
  store i8 0, ptr %36, align 1, !tbaa !15
  br label %917

917:                                              ; preds = %916
  %918 = load i32, ptr @test_count, align 4, !tbaa !5
  %919 = add nsw i32 %918, 1
  store i32 %919, ptr @test_count, align 4, !tbaa !5
  %920 = call i32 @s2n_stuffer_read_uint8_hex(ptr noundef %11, ptr noundef %36)
  %921 = getelementptr inbounds %struct.s2n_result, ptr %37, i32 0, i32 0
  store i32 %920, ptr %921, align 4
  %922 = getelementptr inbounds %struct.s2n_result, ptr %37, i32 0, i32 0
  %923 = load i32, ptr %922, align 4
  %924 = call zeroext i1 @s2n_result_is_ok(i32 %923)
  br i1 %924, label %978, label %925

925:                                              ; preds = %917
  br label %926

926:                                              ; preds = %925
  br label %927

927:                                              ; preds = %926
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  %928 = call ptr @__errno_location() #12
  %929 = load i32, ptr %928, align 4, !tbaa !5
  store i32 %929, ptr %38, align 4, !tbaa !5
  %930 = load ptr, ptr @stderr, align 8, !tbaa !9
  %931 = call i32 @s2n_print_stacktrace(ptr noundef %930)
  %932 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %933 = trunc i8 %932 to i1
  br i1 %933, label %934, label %956

934:                                              ; preds = %927
  %935 = load ptr, ptr @stderr, align 8, !tbaa !9
  %936 = call i32 @fileno(ptr noundef %935) #11
  %937 = call i32 @isatty(i32 noundef %936) #11
  %938 = icmp ne i32 %937, 0
  br i1 %938, label %939, label %956

939:                                              ; preds = %934
  %940 = load i32, ptr %38, align 4, !tbaa !5
  %941 = call ptr @__errno_location() #12
  store i32 %940, ptr %941, align 4, !tbaa !5
  %942 = load ptr, ptr @stderr, align 8, !tbaa !9
  %943 = load i32, ptr @test_count, align 4, !tbaa !5
  %944 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %945 = load i32, ptr %944, align 4, !tbaa !5
  %946 = call ptr @s2n_strerror(i32 noundef %945, ptr noundef @.str.3)
  %947 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %948 = load i32, ptr %947, align 4, !tbaa !5
  %949 = call ptr @s2n_strerror_debug(i32 noundef %948, ptr noundef @.str.3)
  %950 = call ptr @__errno_location() #12
  %951 = load i32, ptr %950, align 4, !tbaa !5
  %952 = call ptr @strerror(i32 noundef %951) #11
  %953 = call ptr @__errno_location() #12
  %954 = load i32, ptr %953, align 4, !tbaa !5
  %955 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %942, ptr noundef @.str, i32 noundef %943, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 77, ptr noundef %946, ptr noundef %949, ptr noundef %952, i32 noundef %954) #11
  br label %973

956:                                              ; preds = %934, %927
  %957 = load i32, ptr %38, align 4, !tbaa !5
  %958 = call ptr @__errno_location() #12
  store i32 %957, ptr %958, align 4, !tbaa !5
  %959 = load ptr, ptr @stderr, align 8, !tbaa !9
  %960 = load i32, ptr @test_count, align 4, !tbaa !5
  %961 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %962 = load i32, ptr %961, align 4, !tbaa !5
  %963 = call ptr @s2n_strerror(i32 noundef %962, ptr noundef @.str.3)
  %964 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %965 = load i32, ptr %964, align 4, !tbaa !5
  %966 = call ptr @s2n_strerror_debug(i32 noundef %965, ptr noundef @.str.3)
  %967 = call ptr @__errno_location() #12
  %968 = load i32, ptr %967, align 4, !tbaa !5
  %969 = call ptr @strerror(i32 noundef %968) #11
  %970 = call ptr @__errno_location() #12
  %971 = load i32, ptr %970, align 4, !tbaa !5
  %972 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %959, ptr noundef @.str.4, i32 noundef %960, ptr noundef @.str.22, ptr noundef @.str.2, i32 noundef 77, ptr noundef %963, ptr noundef %966, ptr noundef %969, i32 noundef %971) #11
  br label %973

973:                                              ; preds = %956, %939
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %974

974:                                              ; preds = %973
  br label %975

975:                                              ; preds = %974
  call void @exit(i32 noundef 1) #13
  unreachable

976:                                              ; No predecessors!
  br label %977

977:                                              ; preds = %976
  br label %978

978:                                              ; preds = %977, %917
  br label %979

979:                                              ; preds = %978
  br label %980

980:                                              ; preds = %979
  %981 = load i8, ptr %36, align 1, !tbaa !15
  %982 = load ptr, ptr %18, align 8, !tbaa !9
  %983 = getelementptr inbounds %struct.s2n_connection, ptr %982, i32 0, i32 32
  %984 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %983, i32 0, i32 12
  %985 = load i32, ptr %35, align 4, !tbaa !5
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds [32 x i8], ptr %984, i64 0, i64 %986
  store i8 %981, ptr %987, align 1, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #11
  br label %988

988:                                              ; preds = %980
  %989 = load i32, ptr %35, align 4, !tbaa !5
  %990 = add nsw i32 %989, 1
  store i32 %990, ptr %35, align 4, !tbaa !5
  br label %912, !llvm.loop !18

991:                                              ; preds = %915
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #11
  store i32 0, ptr %39, align 4, !tbaa !5
  br label %992

992:                                              ; preds = %1068, %991
  %993 = load i32, ptr %39, align 4, !tbaa !5
  %994 = icmp slt i32 %993, 32
  br i1 %994, label %996, label %995

995:                                              ; preds = %992
  store i32 100, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #11
  br label %1071

996:                                              ; preds = %992
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #11
  store i8 0, ptr %40, align 1, !tbaa !15
  br label %997

997:                                              ; preds = %996
  %998 = load i32, ptr @test_count, align 4, !tbaa !5
  %999 = add nsw i32 %998, 1
  store i32 %999, ptr @test_count, align 4, !tbaa !5
  %1000 = call i32 @s2n_stuffer_read_uint8_hex(ptr noundef %12, ptr noundef %40)
  %1001 = getelementptr inbounds %struct.s2n_result, ptr %41, i32 0, i32 0
  store i32 %1000, ptr %1001, align 4
  %1002 = getelementptr inbounds %struct.s2n_result, ptr %41, i32 0, i32 0
  %1003 = load i32, ptr %1002, align 4
  %1004 = call zeroext i1 @s2n_result_is_ok(i32 %1003)
  br i1 %1004, label %1058, label %1005

1005:                                             ; preds = %997
  br label %1006

1006:                                             ; preds = %1005
  br label %1007

1007:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #11
  %1008 = call ptr @__errno_location() #12
  %1009 = load i32, ptr %1008, align 4, !tbaa !5
  store i32 %1009, ptr %42, align 4, !tbaa !5
  %1010 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1011 = call i32 @s2n_print_stacktrace(ptr noundef %1010)
  %1012 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1013 = trunc i8 %1012 to i1
  br i1 %1013, label %1014, label %1036

1014:                                             ; preds = %1007
  %1015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1016 = call i32 @fileno(ptr noundef %1015) #11
  %1017 = call i32 @isatty(i32 noundef %1016) #11
  %1018 = icmp ne i32 %1017, 0
  br i1 %1018, label %1019, label %1036

1019:                                             ; preds = %1014
  %1020 = load i32, ptr %42, align 4, !tbaa !5
  %1021 = call ptr @__errno_location() #12
  store i32 %1020, ptr %1021, align 4, !tbaa !5
  %1022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1023 = load i32, ptr @test_count, align 4, !tbaa !5
  %1024 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1025 = load i32, ptr %1024, align 4, !tbaa !5
  %1026 = call ptr @s2n_strerror(i32 noundef %1025, ptr noundef @.str.3)
  %1027 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1028 = load i32, ptr %1027, align 4, !tbaa !5
  %1029 = call ptr @s2n_strerror_debug(i32 noundef %1028, ptr noundef @.str.3)
  %1030 = call ptr @__errno_location() #12
  %1031 = load i32, ptr %1030, align 4, !tbaa !5
  %1032 = call ptr @strerror(i32 noundef %1031) #11
  %1033 = call ptr @__errno_location() #12
  %1034 = load i32, ptr %1033, align 4, !tbaa !5
  %1035 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1022, ptr noundef @.str, i32 noundef %1023, ptr noundef @.str.23, ptr noundef @.str.2, i32 noundef 82, ptr noundef %1026, ptr noundef %1029, ptr noundef %1032, i32 noundef %1034) #11
  br label %1053

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

1053:                                             ; preds = %1036, %1019
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  br label %1054

1054:                                             ; preds = %1053
  br label %1055

1055:                                             ; preds = %1054
  call void @exit(i32 noundef 1) #13
  unreachable

1056:                                             ; No predecessors!
  br label %1057

1057:                                             ; preds = %1056
  br label %1058

1058:                                             ; preds = %1057, %997
  br label %1059

1059:                                             ; preds = %1058
  br label %1060

1060:                                             ; preds = %1059
  %1061 = load i8, ptr %40, align 1, !tbaa !15
  %1062 = load ptr, ptr %18, align 8, !tbaa !9
  %1063 = getelementptr inbounds %struct.s2n_connection, ptr %1062, i32 0, i32 32
  %1064 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %1063, i32 0, i32 13
  %1065 = load i32, ptr %39, align 4, !tbaa !5
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds [32 x i8], ptr %1064, i64 0, i64 %1066
  store i8 %1061, ptr %1067, align 1, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #11
  br label %1068

1068:                                             ; preds = %1060
  %1069 = load i32, ptr %39, align 4, !tbaa !5
  %1070 = add nsw i32 %1069, 1
  store i32 %1070, ptr %39, align 4, !tbaa !5
  br label %992, !llvm.loop !19

1071:                                             ; preds = %995
  %1072 = load ptr, ptr %18, align 8, !tbaa !9
  %1073 = getelementptr inbounds %struct.s2n_connection, ptr %1072, i32 0, i32 23
  store i8 30, ptr %1073, align 4, !tbaa !20
  %1074 = load ptr, ptr %18, align 8, !tbaa !9
  %1075 = getelementptr inbounds %struct.s2n_connection, ptr %1074, i32 0, i32 28
  %1076 = getelementptr inbounds %struct.s2n_secrets, ptr %1075, i32 0, i32 0
  %1077 = getelementptr inbounds %struct.s2n_tls12_secrets, ptr %1076, i32 0, i32 0
  %1078 = getelementptr inbounds [48 x i8], ptr %1077, i64 0, i64 0
  %1079 = getelementptr inbounds %struct.s2n_blob, ptr %17, i32 0, i32 0
  store ptr %1078, ptr %1079, align 8, !tbaa !47
  %1080 = getelementptr inbounds %struct.s2n_blob, ptr %17, i32 0, i32 1
  store i32 48, ptr %1080, align 8, !tbaa !48
  br label %1081

1081:                                             ; preds = %1071
  %1082 = load i32, ptr @test_count, align 4, !tbaa !5
  %1083 = add nsw i32 %1082, 1
  store i32 %1083, ptr @test_count, align 4, !tbaa !5
  %1084 = load ptr, ptr %18, align 8, !tbaa !9
  %1085 = call i32 @s2n_prf_tls_master_secret(ptr noundef %1084, ptr noundef %17)
  %1086 = icmp eq i32 %1085, -1
  br i1 %1086, label %1087, label %1140

1087:                                             ; preds = %1081
  br label %1088

1088:                                             ; preds = %1087
  br label %1089

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

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

1101:                                             ; preds = %1096
  %1102 = load i32, ptr %43, align 4, !tbaa !5
  %1103 = call ptr @__errno_location() #12
  store i32 %1102, ptr %1103, align 4, !tbaa !5
  %1104 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1105 = load i32, ptr @test_count, align 4, !tbaa !5
  %1106 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1107 = load i32, ptr %1106, align 4, !tbaa !5
  %1108 = call ptr @s2n_strerror(i32 noundef %1107, ptr noundef @.str.3)
  %1109 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1110 = load i32, ptr %1109, align 4, !tbaa !5
  %1111 = call ptr @s2n_strerror_debug(i32 noundef %1110, ptr noundef @.str.3)
  %1112 = call ptr @__errno_location() #12
  %1113 = load i32, ptr %1112, align 4, !tbaa !5
  %1114 = call ptr @strerror(i32 noundef %1113) #11
  %1115 = call ptr @__errno_location() #12
  %1116 = load i32, ptr %1115, align 4, !tbaa !5
  %1117 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1104, ptr noundef @.str, i32 noundef %1105, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 90, ptr noundef %1108, ptr noundef %1111, ptr noundef %1114, i32 noundef %1116) #11
  br label %1135

1118:                                             ; preds = %1096, %1089
  %1119 = load i32, ptr %43, align 4, !tbaa !5
  %1120 = call ptr @__errno_location() #12
  store i32 %1119, ptr %1120, align 4, !tbaa !5
  %1121 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1122 = load i32, ptr @test_count, align 4, !tbaa !5
  %1123 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1124 = load i32, ptr %1123, align 4, !tbaa !5
  %1125 = call ptr @s2n_strerror(i32 noundef %1124, ptr noundef @.str.3)
  %1126 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1127 = load i32, ptr %1126, align 4, !tbaa !5
  %1128 = call ptr @s2n_strerror_debug(i32 noundef %1127, ptr noundef @.str.3)
  %1129 = call ptr @__errno_location() #12
  %1130 = load i32, ptr %1129, align 4, !tbaa !5
  %1131 = call ptr @strerror(i32 noundef %1130) #11
  %1132 = call ptr @__errno_location() #12
  %1133 = load i32, ptr %1132, align 4, !tbaa !5
  %1134 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1121, ptr noundef @.str.4, i32 noundef %1122, ptr noundef @.str.24, ptr noundef @.str.2, i32 noundef 90, ptr noundef %1125, ptr noundef %1128, ptr noundef %1131, i32 noundef %1133) #11
  br label %1135

1135:                                             ; preds = %1118, %1101
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #11
  br label %1136

1136:                                             ; preds = %1135
  br label %1137

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

1138:                                             ; No predecessors!
  br label %1139

1139:                                             ; preds = %1138
  br label %1140

1140:                                             ; preds = %1139, %1081
  br label %1141

1141:                                             ; preds = %1140
  br label %1142

1142:                                             ; preds = %1141
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  store i32 0, ptr %44, align 4, !tbaa !5
  br label %1143

1143:                                             ; preds = %1220, %1142
  %1144 = load i32, ptr %44, align 4, !tbaa !5
  %1145 = icmp slt i32 %1144, 48
  br i1 %1145, label %1147, label %1146

1146:                                             ; preds = %1143
  store i32 115, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %1223

1147:                                             ; preds = %1143
  br label %1148

1148:                                             ; preds = %1147
  %1149 = load i32, ptr @test_count, align 4, !tbaa !5
  %1150 = add nsw i32 %1149, 1
  store i32 %1150, ptr @test_count, align 4, !tbaa !5
  %1151 = load ptr, ptr %18, align 8, !tbaa !9
  %1152 = getelementptr inbounds %struct.s2n_connection, ptr %1151, i32 0, i32 28
  %1153 = getelementptr inbounds %struct.s2n_secrets, ptr %1152, i32 0, i32 0
  %1154 = getelementptr inbounds %struct.s2n_tls12_secrets, ptr %1153, i32 0, i32 1
  %1155 = load i32, ptr %44, align 4, !tbaa !5
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds [48 x i8], ptr %1154, i64 0, i64 %1156
  %1158 = load i8, ptr %1157, align 1, !tbaa !15
  %1159 = call i32 @s2n_stuffer_write_uint8_hex(ptr noundef %14, i8 noundef zeroext %1158)
  %1160 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  store i32 %1159, ptr %1160, align 4
  %1161 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  %1162 = load i32, ptr %1161, align 4
  %1163 = call zeroext i1 @s2n_result_is_ok(i32 %1162)
  br i1 %1163, label %1217, label %1164

1164:                                             ; preds = %1148
  br label %1165

1165:                                             ; preds = %1164
  br label %1166

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

1173:                                             ; preds = %1166
  %1174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1175 = call i32 @fileno(ptr noundef %1174) #11
  %1176 = call i32 @isatty(i32 noundef %1175) #11
  %1177 = icmp ne i32 %1176, 0
  br i1 %1177, label %1178, label %1195

1178:                                             ; preds = %1173
  %1179 = load i32, ptr %46, align 4, !tbaa !5
  %1180 = call ptr @__errno_location() #12
  store i32 %1179, ptr %1180, align 4, !tbaa !5
  %1181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1182 = load i32, ptr @test_count, align 4, !tbaa !5
  %1183 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1184 = load i32, ptr %1183, align 4, !tbaa !5
  %1185 = call ptr @s2n_strerror(i32 noundef %1184, ptr noundef @.str.3)
  %1186 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1187 = load i32, ptr %1186, align 4, !tbaa !5
  %1188 = call ptr @s2n_strerror_debug(i32 noundef %1187, ptr noundef @.str.3)
  %1189 = call ptr @__errno_location() #12
  %1190 = load i32, ptr %1189, align 4, !tbaa !5
  %1191 = call ptr @strerror(i32 noundef %1190) #11
  %1192 = call ptr @__errno_location() #12
  %1193 = load i32, ptr %1192, align 4, !tbaa !5
  %1194 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1181, ptr noundef @.str, i32 noundef %1182, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 94, ptr noundef %1185, ptr noundef %1188, ptr noundef %1191, i32 noundef %1193) #11
  br label %1212

1195:                                             ; preds = %1173, %1166
  %1196 = load i32, ptr %46, align 4, !tbaa !5
  %1197 = call ptr @__errno_location() #12
  store i32 %1196, ptr %1197, align 4, !tbaa !5
  %1198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1199 = load i32, ptr @test_count, align 4, !tbaa !5
  %1200 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1201 = load i32, ptr %1200, align 4, !tbaa !5
  %1202 = call ptr @s2n_strerror(i32 noundef %1201, ptr noundef @.str.3)
  %1203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1204 = load i32, ptr %1203, align 4, !tbaa !5
  %1205 = call ptr @s2n_strerror_debug(i32 noundef %1204, ptr noundef @.str.3)
  %1206 = call ptr @__errno_location() #12
  %1207 = load i32, ptr %1206, align 4, !tbaa !5
  %1208 = call ptr @strerror(i32 noundef %1207) #11
  %1209 = call ptr @__errno_location() #12
  %1210 = load i32, ptr %1209, align 4, !tbaa !5
  %1211 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1198, ptr noundef @.str.4, i32 noundef %1199, ptr noundef @.str.25, ptr noundef @.str.2, i32 noundef 94, ptr noundef %1202, ptr noundef %1205, ptr noundef %1208, i32 noundef %1210) #11
  br label %1212

1212:                                             ; preds = %1195, %1178
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  br label %1213

1213:                                             ; preds = %1212
  br label %1214

1214:                                             ; preds = %1213
  call void @exit(i32 noundef 1) #13
  unreachable

1215:                                             ; No predecessors!
  br label %1216

1216:                                             ; preds = %1215
  br label %1217

1217:                                             ; preds = %1216, %1148
  br label %1218

1218:                                             ; preds = %1217
  br label %1219

1219:                                             ; preds = %1218
  br label %1220

1220:                                             ; preds = %1219
  %1221 = load i32, ptr %44, align 4, !tbaa !5
  %1222 = add nsw i32 %1221, 1
  store i32 %1222, ptr %44, align 4, !tbaa !5
  br label %1143, !llvm.loop !49

1223:                                             ; preds = %1146
  br label %1224

1224:                                             ; preds = %1223
  %1225 = load i32, ptr @test_count, align 4, !tbaa !5
  %1226 = add nsw i32 %1225, 1
  store i32 %1226, ptr @test_count, align 4, !tbaa !5
  %1227 = getelementptr inbounds [96 x i8], ptr %6, i64 0, i64 0
  %1228 = getelementptr inbounds [97 x i8], ptr %10, i64 0, i64 0
  %1229 = call i32 @memcmp(ptr noundef %1227, ptr noundef %1228, i64 noundef 96) #14
  %1230 = icmp eq i32 %1229, 0
  br i1 %1230, label %1284, label %1231

1231:                                             ; preds = %1224
  br label %1232

1232:                                             ; preds = %1231
  br label %1233

1233:                                             ; preds = %1232
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #11
  %1234 = call ptr @__errno_location() #12
  %1235 = load i32, ptr %1234, align 4, !tbaa !5
  store i32 %1235, ptr %47, align 4, !tbaa !5
  %1236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1237 = call i32 @s2n_print_stacktrace(ptr noundef %1236)
  %1238 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1239 = trunc i8 %1238 to i1
  br i1 %1239, label %1240, label %1262

1240:                                             ; preds = %1233
  %1241 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1242 = call i32 @fileno(ptr noundef %1241) #11
  %1243 = call i32 @isatty(i32 noundef %1242) #11
  %1244 = icmp ne i32 %1243, 0
  br i1 %1244, label %1245, label %1262

1245:                                             ; preds = %1240
  %1246 = load i32, ptr %47, align 4, !tbaa !5
  %1247 = call ptr @__errno_location() #12
  store i32 %1246, ptr %1247, align 4, !tbaa !5
  %1248 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1249 = load i32, ptr @test_count, align 4, !tbaa !5
  %1250 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1251 = load i32, ptr %1250, align 4, !tbaa !5
  %1252 = call ptr @s2n_strerror(i32 noundef %1251, ptr noundef @.str.3)
  %1253 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1254 = load i32, ptr %1253, align 4, !tbaa !5
  %1255 = call ptr @s2n_strerror_debug(i32 noundef %1254, ptr noundef @.str.3)
  %1256 = call ptr @__errno_location() #12
  %1257 = load i32, ptr %1256, align 4, !tbaa !5
  %1258 = call ptr @strerror(i32 noundef %1257) #11
  %1259 = call ptr @__errno_location() #12
  %1260 = load i32, ptr %1259, align 4, !tbaa !5
  %1261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1248, ptr noundef @.str, i32 noundef %1249, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 97, ptr noundef %1252, ptr noundef %1255, ptr noundef %1258, i32 noundef %1260) #11
  br label %1279

1262:                                             ; preds = %1240, %1233
  %1263 = load i32, ptr %47, align 4, !tbaa !5
  %1264 = call ptr @__errno_location() #12
  store i32 %1263, ptr %1264, align 4, !tbaa !5
  %1265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1266 = load i32, ptr @test_count, align 4, !tbaa !5
  %1267 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1268 = load i32, ptr %1267, align 4, !tbaa !5
  %1269 = call ptr @s2n_strerror(i32 noundef %1268, ptr noundef @.str.3)
  %1270 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1271 = load i32, ptr %1270, align 4, !tbaa !5
  %1272 = call ptr @s2n_strerror_debug(i32 noundef %1271, ptr noundef @.str.3)
  %1273 = call ptr @__errno_location() #12
  %1274 = load i32, ptr %1273, align 4, !tbaa !5
  %1275 = call ptr @strerror(i32 noundef %1274) #11
  %1276 = call ptr @__errno_location() #12
  %1277 = load i32, ptr %1276, align 4, !tbaa !5
  %1278 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1265, ptr noundef @.str.4, i32 noundef %1266, ptr noundef @.str.26, ptr noundef @.str.2, i32 noundef 97, ptr noundef %1269, ptr noundef %1272, ptr noundef %1275, i32 noundef %1277) #11
  br label %1279

1279:                                             ; preds = %1262, %1245
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  br label %1280

1280:                                             ; preds = %1279
  br label %1281

1281:                                             ; preds = %1280
  call void @exit(i32 noundef 1) #13
  unreachable

1282:                                             ; No predecessors!
  br label %1283

1283:                                             ; preds = %1282
  br label %1284

1284:                                             ; preds = %1283, %1224
  br label %1285

1285:                                             ; preds = %1284
  br label %1286

1286:                                             ; preds = %1285
  br label %1287

1287:                                             ; preds = %1286
  %1288 = load i32, ptr @test_count, align 4, !tbaa !5
  %1289 = add nsw i32 %1288, 1
  store i32 %1289, ptr @test_count, align 4, !tbaa !5
  %1290 = load ptr, ptr %18, align 8, !tbaa !9
  %1291 = call i32 @s2n_connection_free(ptr noundef %1290)
  %1292 = icmp eq i32 %1291, -1
  br i1 %1292, label %1293, label %1346

1293:                                             ; preds = %1287
  br label %1294

1294:                                             ; preds = %1293
  br label %1295

1295:                                             ; preds = %1294
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #11
  %1296 = call ptr @__errno_location() #12
  %1297 = load i32, ptr %1296, align 4, !tbaa !5
  store i32 %1297, ptr %48, align 4, !tbaa !5
  %1298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1299 = call i32 @s2n_print_stacktrace(ptr noundef %1298)
  %1300 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1301 = trunc i8 %1300 to i1
  br i1 %1301, label %1302, label %1324

1302:                                             ; preds = %1295
  %1303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1304 = call i32 @fileno(ptr noundef %1303) #11
  %1305 = call i32 @isatty(i32 noundef %1304) #11
  %1306 = icmp ne i32 %1305, 0
  br i1 %1306, label %1307, label %1324

1307:                                             ; preds = %1302
  %1308 = load i32, ptr %48, align 4, !tbaa !5
  %1309 = call ptr @__errno_location() #12
  store i32 %1308, ptr %1309, align 4, !tbaa !5
  %1310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1311 = load i32, ptr @test_count, align 4, !tbaa !5
  %1312 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1313 = load i32, ptr %1312, align 4, !tbaa !5
  %1314 = call ptr @s2n_strerror(i32 noundef %1313, ptr noundef @.str.3)
  %1315 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1316 = load i32, ptr %1315, align 4, !tbaa !5
  %1317 = call ptr @s2n_strerror_debug(i32 noundef %1316, ptr noundef @.str.3)
  %1318 = call ptr @__errno_location() #12
  %1319 = load i32, ptr %1318, align 4, !tbaa !5
  %1320 = call ptr @strerror(i32 noundef %1319) #11
  %1321 = call ptr @__errno_location() #12
  %1322 = load i32, ptr %1321, align 4, !tbaa !5
  %1323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1310, ptr noundef @.str, i32 noundef %1311, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 99, ptr noundef %1314, ptr noundef %1317, ptr noundef %1320, i32 noundef %1322) #11
  br label %1341

1324:                                             ; preds = %1302, %1295
  %1325 = load i32, ptr %48, align 4, !tbaa !5
  %1326 = call ptr @__errno_location() #12
  store i32 %1325, ptr %1326, align 4, !tbaa !5
  %1327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1328 = load i32, ptr @test_count, align 4, !tbaa !5
  %1329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1330 = load i32, ptr %1329, align 4, !tbaa !5
  %1331 = call ptr @s2n_strerror(i32 noundef %1330, ptr noundef @.str.3)
  %1332 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1333 = load i32, ptr %1332, align 4, !tbaa !5
  %1334 = call ptr @s2n_strerror_debug(i32 noundef %1333, ptr noundef @.str.3)
  %1335 = call ptr @__errno_location() #12
  %1336 = load i32, ptr %1335, align 4, !tbaa !5
  %1337 = call ptr @strerror(i32 noundef %1336) #11
  %1338 = call ptr @__errno_location() #12
  %1339 = load i32, ptr %1338, align 4, !tbaa !5
  %1340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1327, ptr noundef @.str.4, i32 noundef %1328, ptr noundef @.str.27, ptr noundef @.str.2, i32 noundef 99, ptr noundef %1331, ptr noundef %1334, ptr noundef %1337, i32 noundef %1339) #11
  br label %1341

1341:                                             ; preds = %1324, %1307
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  br label %1342

1342:                                             ; preds = %1341
  br label %1343

1343:                                             ; preds = %1342
  call void @exit(i32 noundef 1) #13
  unreachable

1344:                                             ; No predecessors!
  br label %1345

1345:                                             ; preds = %1344
  br label %1346

1346:                                             ; preds = %1345, %1287
  br label %1347

1347:                                             ; preds = %1346
  br label %1348

1348:                                             ; preds = %1347
  br label %1349

1349:                                             ; preds = %1348
  %1350 = load i32, ptr @test_count, align 4, !tbaa !5
  %1351 = add nsw i32 %1350, 1
  store i32 %1351, ptr @test_count, align 4, !tbaa !5
  %1352 = call i32 @s2n_stuffer_free(ptr noundef %11)
  %1353 = icmp eq i32 %1352, -1
  br i1 %1353, label %1354, label %1407

1354:                                             ; preds = %1349
  br label %1355

1355:                                             ; preds = %1354
  br label %1356

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

1363:                                             ; preds = %1356
  %1364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1365 = call i32 @fileno(ptr noundef %1364) #11
  %1366 = call i32 @isatty(i32 noundef %1365) #11
  %1367 = icmp ne i32 %1366, 0
  br i1 %1367, label %1368, label %1385

1368:                                             ; preds = %1363
  %1369 = load i32, ptr %49, align 4, !tbaa !5
  %1370 = call ptr @__errno_location() #12
  store i32 %1369, ptr %1370, align 4, !tbaa !5
  %1371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1372 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1374, ptr noundef @.str.3)
  %1376 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1377 = load i32, ptr %1376, align 4, !tbaa !5
  %1378 = call ptr @s2n_strerror_debug(i32 noundef %1377, ptr noundef @.str.3)
  %1379 = call ptr @__errno_location() #12
  %1380 = load i32, ptr %1379, align 4, !tbaa !5
  %1381 = call ptr @strerror(i32 noundef %1380) #11
  %1382 = call ptr @__errno_location() #12
  %1383 = load i32, ptr %1382, align 4, !tbaa !5
  %1384 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1371, ptr noundef @.str, i32 noundef %1372, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 100, ptr noundef %1375, ptr noundef %1378, ptr noundef %1381, i32 noundef %1383) #11
  br label %1402

1385:                                             ; preds = %1363, %1356
  %1386 = load i32, ptr %49, align 4, !tbaa !5
  %1387 = call ptr @__errno_location() #12
  store i32 %1386, ptr %1387, align 4, !tbaa !5
  %1388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1389 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1391, ptr noundef @.str.3)
  %1393 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1394 = load i32, ptr %1393, align 4, !tbaa !5
  %1395 = call ptr @s2n_strerror_debug(i32 noundef %1394, ptr noundef @.str.3)
  %1396 = call ptr @__errno_location() #12
  %1397 = load i32, ptr %1396, align 4, !tbaa !5
  %1398 = call ptr @strerror(i32 noundef %1397) #11
  %1399 = call ptr @__errno_location() #12
  %1400 = load i32, ptr %1399, align 4, !tbaa !5
  %1401 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1388, ptr noundef @.str.4, i32 noundef %1389, ptr noundef @.str.28, ptr noundef @.str.2, i32 noundef 100, ptr noundef %1392, ptr noundef %1395, ptr noundef %1398, i32 noundef %1400) #11
  br label %1402

1402:                                             ; preds = %1385, %1368
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

1404:                                             ; preds = %1403
  call void @exit(i32 noundef 1) #13
  unreachable

1405:                                             ; No predecessors!
  br label %1406

1406:                                             ; preds = %1405
  br label %1407

1407:                                             ; preds = %1406, %1349
  br label %1408

1408:                                             ; preds = %1407
  br label %1409

1409:                                             ; preds = %1408
  br label %1410

1410:                                             ; preds = %1409
  %1411 = load i32, ptr @test_count, align 4, !tbaa !5
  %1412 = add nsw i32 %1411, 1
  store i32 %1412, ptr @test_count, align 4, !tbaa !5
  %1413 = call i32 @s2n_stuffer_free(ptr noundef %12)
  %1414 = icmp eq i32 %1413, -1
  br i1 %1414, label %1415, label %1468

1415:                                             ; preds = %1410
  br label %1416

1416:                                             ; preds = %1415
  br label %1417

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

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

1429:                                             ; preds = %1424
  %1430 = load i32, ptr %50, align 4, !tbaa !5
  %1431 = call ptr @__errno_location() #12
  store i32 %1430, ptr %1431, align 4, !tbaa !5
  %1432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1433 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1435, ptr noundef @.str.3)
  %1437 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1438 = load i32, ptr %1437, align 4, !tbaa !5
  %1439 = call ptr @s2n_strerror_debug(i32 noundef %1438, ptr noundef @.str.3)
  %1440 = call ptr @__errno_location() #12
  %1441 = load i32, ptr %1440, align 4, !tbaa !5
  %1442 = call ptr @strerror(i32 noundef %1441) #11
  %1443 = call ptr @__errno_location() #12
  %1444 = load i32, ptr %1443, align 4, !tbaa !5
  %1445 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1432, ptr noundef @.str, i32 noundef %1433, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 101, ptr noundef %1436, ptr noundef %1439, ptr noundef %1442, i32 noundef %1444) #11
  br label %1463

1446:                                             ; preds = %1424, %1417
  %1447 = load i32, ptr %50, align 4, !tbaa !5
  %1448 = call ptr @__errno_location() #12
  store i32 %1447, ptr %1448, align 4, !tbaa !5
  %1449 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1450 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1452, ptr noundef @.str.3)
  %1454 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1455 = load i32, ptr %1454, align 4, !tbaa !5
  %1456 = call ptr @s2n_strerror_debug(i32 noundef %1455, ptr noundef @.str.3)
  %1457 = call ptr @__errno_location() #12
  %1458 = load i32, ptr %1457, align 4, !tbaa !5
  %1459 = call ptr @strerror(i32 noundef %1458) #11
  %1460 = call ptr @__errno_location() #12
  %1461 = load i32, ptr %1460, align 4, !tbaa !5
  %1462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1449, ptr noundef @.str.4, i32 noundef %1450, ptr noundef @.str.29, ptr noundef @.str.2, i32 noundef 101, ptr noundef %1453, ptr noundef %1456, ptr noundef %1459, i32 noundef %1461) #11
  br label %1463

1463:                                             ; preds = %1446, %1429
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1464

1464:                                             ; preds = %1463
  br label %1465

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

1466:                                             ; No predecessors!
  br label %1467

1467:                                             ; preds = %1466
  br label %1468

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

1469:                                             ; preds = %1468
  br label %1470

1470:                                             ; preds = %1469
  br label %1471

1471:                                             ; preds = %1470
  %1472 = load i32, ptr @test_count, align 4, !tbaa !5
  %1473 = add nsw i32 %1472, 1
  store i32 %1473, ptr @test_count, align 4, !tbaa !5
  %1474 = call i32 @s2n_stuffer_free(ptr noundef %13)
  %1475 = icmp eq i32 %1474, -1
  br i1 %1475, label %1476, label %1529

1476:                                             ; preds = %1471
  br label %1477

1477:                                             ; preds = %1476
  br label %1478

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

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

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

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

1524:                                             ; preds = %1507, %1490
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  br label %1525

1525:                                             ; preds = %1524
  br label %1526

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

1527:                                             ; No predecessors!
  br label %1528

1528:                                             ; preds = %1527
  br label %1529

1529:                                             ; preds = %1528, %1471
  br label %1530

1530:                                             ; preds = %1529
  br label %1531

1531:                                             ; preds = %1530
  br label %1532

1532:                                             ; preds = %1531
  br label %1533

1533:                                             ; preds = %1532
  %1534 = call i32 @s2n_cleanup()
  %1535 = icmp eq i32 %1534, -1
  br i1 %1535, label %1536, label %1589

1536:                                             ; preds = %1533
  br label %1537

1537:                                             ; preds = %1536
  br label %1538

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

1545:                                             ; preds = %1538
  %1546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1547 = call i32 @fileno(ptr noundef %1546) #11
  %1548 = call i32 @isatty(i32 noundef %1547) #11
  %1549 = icmp ne i32 %1548, 0
  br i1 %1549, label %1550, label %1567

1550:                                             ; preds = %1545
  %1551 = load i32, ptr %52, align 4, !tbaa !5
  %1552 = call ptr @__errno_location() #12
  store i32 %1551, ptr %1552, align 4, !tbaa !5
  %1553 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1554 = load i32, ptr @test_count, align 4, !tbaa !5
  %1555 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1556 = load i32, ptr %1555, align 4, !tbaa !5
  %1557 = call ptr @s2n_strerror(i32 noundef %1556, ptr noundef @.str.3)
  %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_debug(i32 noundef %1559, ptr noundef @.str.3)
  %1561 = call ptr @__errno_location() #12
  %1562 = load i32, ptr %1561, align 4, !tbaa !5
  %1563 = call ptr @strerror(i32 noundef %1562) #11
  %1564 = call ptr @__errno_location() #12
  %1565 = load i32, ptr %1564, align 4, !tbaa !5
  %1566 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1553, ptr noundef @.str, i32 noundef %1554, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 104, ptr noundef %1557, ptr noundef %1560, ptr noundef %1563, i32 noundef %1565) #11
  br label %1584

1567:                                             ; preds = %1545, %1538
  %1568 = load i32, ptr %52, align 4, !tbaa !5
  %1569 = call ptr @__errno_location() #12
  store i32 %1568, ptr %1569, align 4, !tbaa !5
  %1570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1571 = load i32, ptr @test_count, align 4, !tbaa !5
  %1572 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1573 = load i32, ptr %1572, align 4, !tbaa !5
  %1574 = call ptr @s2n_strerror(i32 noundef %1573, ptr noundef @.str.3)
  %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_debug(i32 noundef %1576, ptr noundef @.str.3)
  %1578 = call ptr @__errno_location() #12
  %1579 = load i32, ptr %1578, align 4, !tbaa !5
  %1580 = call ptr @strerror(i32 noundef %1579) #11
  %1581 = call ptr @__errno_location() #12
  %1582 = load i32, ptr %1581, align 4, !tbaa !5
  %1583 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1570, ptr noundef @.str.4, i32 noundef %1571, ptr noundef @.str.10, ptr noundef @.str.2, i32 noundef 104, ptr noundef %1574, ptr noundef %1577, ptr noundef %1580, i32 noundef %1582) #11
  br label %1584

1584:                                             ; preds = %1567, %1550
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  br label %1585

1585:                                             ; preds = %1584
  br label %1586

1586:                                             ; preds = %1585
  call void @exit(i32 noundef 1) #13
  unreachable

1587:                                             ; No predecessors!
  br label %1588

1588:                                             ; preds = %1587
  br label %1589

1589:                                             ; preds = %1588, %1533
  br label %1590

1590:                                             ; preds = %1589
  br label %1591

1591:                                             ; preds = %1590
  br label %1592

1592:                                             ; preds = %1591
  br label %1593

1593:                                             ; preds = %1592
  %1594 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1595 = icmp eq i32 %1594, -1
  br i1 %1595, label %1596, label %1649

1596:                                             ; preds = %1593
  br label %1597

1597:                                             ; preds = %1596
  br label %1598

1598:                                             ; preds = %1597
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #11
  %1599 = call ptr @__errno_location() #12
  %1600 = load i32, ptr %1599, align 4, !tbaa !5
  store i32 %1600, ptr %53, align 4, !tbaa !5
  %1601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1602 = call i32 @s2n_print_stacktrace(ptr noundef %1601)
  %1603 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1604 = trunc i8 %1603 to i1
  br i1 %1604, label %1605, label %1627

1605:                                             ; preds = %1598
  %1606 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1607 = call i32 @fileno(ptr noundef %1606) #11
  %1608 = call i32 @isatty(i32 noundef %1607) #11
  %1609 = icmp ne i32 %1608, 0
  br i1 %1609, label %1610, label %1627

1610:                                             ; preds = %1605
  %1611 = load i32, ptr %53, align 4, !tbaa !5
  %1612 = call ptr @__errno_location() #12
  store i32 %1611, ptr %1612, align 4, !tbaa !5
  %1613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1614 = load i32, ptr @test_count, align 4, !tbaa !5
  %1615 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1616 = load i32, ptr %1615, align 4, !tbaa !5
  %1617 = call ptr @s2n_strerror(i32 noundef %1616, ptr noundef @.str.3)
  %1618 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1619 = load i32, ptr %1618, align 4, !tbaa !5
  %1620 = call ptr @s2n_strerror_debug(i32 noundef %1619, ptr noundef @.str.3)
  %1621 = call ptr @__errno_location() #12
  %1622 = load i32, ptr %1621, align 4, !tbaa !5
  %1623 = call ptr @strerror(i32 noundef %1622) #11
  %1624 = call ptr @__errno_location() #12
  %1625 = load i32, ptr %1624, align 4, !tbaa !5
  %1626 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1613, ptr noundef @.str, i32 noundef %1614, ptr noundef @.str.11, ptr noundef @.str.2, i32 noundef 104, ptr noundef %1617, ptr noundef %1620, ptr noundef %1623, i32 noundef %1625) #11
  br label %1644

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

1644:                                             ; preds = %1627, %1610
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %1645

1645:                                             ; preds = %1644
  br label %1646

1646:                                             ; preds = %1645
  call void @exit(i32 noundef 1) #13
  unreachable

1647:                                             ; No predecessors!
  br label %1648

1648:                                             ; preds = %1647
  br label %1649

1649:                                             ; preds = %1648, %1593
  br label %1650

1650:                                             ; preds = %1649
  br label %1651

1651:                                             ; preds = %1650
  %1652 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1653 = trunc i8 %1652 to i1
  br i1 %1653, label %1654, label %1670

1654:                                             ; preds = %1651
  %1655 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1656 = call i32 @fileno(ptr noundef %1655) #11
  %1657 = call i32 @isatty(i32 noundef %1656) #11
  %1658 = icmp ne i32 %1657, 0
  br i1 %1658, label %1659, label %1670

1659:                                             ; preds = %1654
  %1660 = load i32, ptr @test_count, align 4, !tbaa !5
  %1661 = icmp ne i32 %1660, 0
  br i1 %1661, label %1662, label %1666

1662:                                             ; preds = %1659
  %1663 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1664 = load i32, ptr @test_count, align 4, !tbaa !5
  %1665 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1663, ptr noundef @.str.12, i32 noundef %1664) #11
  br label %1669

1666:                                             ; preds = %1659
  %1667 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1668 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1667, ptr noundef @.str.13) #11
  br label %1669

1669:                                             ; preds = %1666, %1662
  br label %1681

1670:                                             ; preds = %1654, %1651
  %1671 = load i32, ptr @test_count, align 4, !tbaa !5
  %1672 = icmp ne i32 %1671, 0
  br i1 %1672, label %1673, label %1677

1673:                                             ; preds = %1670
  %1674 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1675 = load i32, ptr @test_count, align 4, !tbaa !5
  %1676 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1674, ptr noundef @.str.14, i32 noundef %1675) #11
  br label %1680

1677:                                             ; preds = %1670
  %1678 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1679 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1678, ptr noundef @.str.15) #11
  br label %1680

1680:                                             ; preds = %1677, %1673
  br label %1681

1681:                                             ; preds = %1680, %1669
  store i32 0, ptr %3, align 4
  store i32 1, ptr %25, align 4
  br label %1686

1682:                                             ; No predecessors!
  br label %1683

1683:                                             ; preds = %1682
  br label %1684

1684:                                             ; preds = %1683
  br label %1685

1685:                                             ; preds = %1684
  store i32 0, ptr %25, align 4
  br label %1686

1686:                                             ; preds = %1685, %1681, %517
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 97, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 65, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 65, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 97, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr %6) #11
  %1687 = load i32, ptr %25, align 4
  switch i32 %1687, label %1690 [
    i32 0, label %1688
    i32 1, label %1688
  ]

1688:                                             ; preds = %1686, %1686
  %1689 = load i32, ptr %3, align 4
  ret i32 %1689

1690:                                             ; preds = %1686
  unreachable
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #4

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

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

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

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

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

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

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

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

declare i32 @fflush(ptr noundef) #4

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #4

declare i32 @s2n_enable_atexit() #4

declare i32 @s2n_init() #4

declare i32 @s2n_disable_tls13_in_test(...) #4

declare zeroext i1 @s2n_is_in_fips_mode() #4

declare i32 @s2n_cleanup() #4

declare ptr @s2n_connection_new(i32 noundef) #4

declare i32 @s2n_stuffer_alloc_ro_from_string(ptr noundef, ptr noundef) #4

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

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

declare i32 @s2n_stuffer_read_uint8_hex(ptr noundef, ptr noundef) #4

declare i32 @s2n_prf_tls_master_secret(ptr noundef, ptr noundef) #4

declare i32 @s2n_stuffer_write_uint8_hex(ptr noundef, i8 noundef zeroext) #4

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

declare i32 @s2n_connection_free(ptr noundef) #4

declare i32 @s2n_stuffer_free(ptr noundef) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = !{!21, !7, i64 220}
!21 = !{!"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, !22, i64 160, !23, i64 168, !23, 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, !24, i64 240, !10, i64 632, !10, i64 640, !25, i64 648, !31, i64 1144, !34, 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, !23, 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, !36, i64 2208, !6, i64 2212, !36, i64 2216, !23, i64 2224, !7, i64 2232, !23, i64 2240, !23, i64 2248, !23, i64 2256, !38, i64 2264, !38, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !30, i64 2792, !6, i64 2816, !30, i64 2824, !30, i64 2848, !30, i64 2872, !41, i64 2896, !43, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !30, i64 3784, !6, i64 3808, !45, i64 3816, !7, i64 3848, !37, i64 3992, !30, i64 4032, !30, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !36, i64 4084, !36, i64 4086, !6, i64 4088, !6, i64 4092, !30, i64 4096, !6, i64 4120, !46, i64 4128, !38, i64 4176, !7, i64 4180, !7, i64 4181}
!22 = !{!"s2n_timer", !23, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!25 = !{!"s2n_kex_parameters", !26, i64 0, !27, i64 8, !7, i64 24, !27, i64 56, !28, i64 72, !28, i64 184, !7, i64 296, !29, i64 360, !30, i64 448, !30, i64 472}
!26 = !{!"s2n_dh_params", !10, i64 0}
!27 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!28 = !{!"s2n_kem_group_params", !10, i64 0, !29, i64 8, !27, i64 96}
!29 = !{!"s2n_kem_params", !10, i64 0, !30, i64 8, !30, i64 32, !30, i64 56, !12, i64 80}
!30 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!31 = !{!"s2n_handshake_parameters", !32, i64 0, !32, i64 48, !30, i64 96, !6, i64 120, !33, 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}
!32 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!33 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!34 = !{!"s2n_psk_parameters", !6, i64 0, !35, i64 8, !36, i64 40, !36, i64 42, !10, i64 48, !6, i64 56}
!35 = !{!"s2n_array", !30, i64 0, !6, i64 24, !6, i64 28}
!36 = !{!"short", !7, i64 0}
!37 = !{!"s2n_stuffer", !30, 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", !30, i64 0, !42, i64 24, !30, i64 728, !30, i64 752, !30, 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, !30, i64 672, !36, i64 696}
!43 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !36, 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", !30, i64 0, !6, i64 24}
!46 = !{!"s2n_post_handshake", !37, i64 0, !7, i64 40}
!47 = !{!30, !10, i64 0}
!48 = !{!30, !6, i64 8}
!49 = distinct !{!49, !17}


; 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_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@__const.main.premaster_secret_hex_in = external hidden unnamed_addr constant [97 x i8], align 16
@__const.main.client_random_hex_in = external hidden unnamed_addr constant [65 x i8], align 16
@__const.main.server_random_hex_in = external hidden unnamed_addr constant [65 x i8], align 16
@__const.main.master_secret_hex_in = external hidden unnamed_addr constant [97 x i8], align 16
@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.1 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [75 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
@stdout = external local_unnamed_addr global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [67 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca [96 x i8], align 16
  %4 = alloca [97 x i8], align 16
  %5 = alloca [65 x i8], align 16
  %6 = alloca [65 x i8], align 16
  %7 = alloca %struct.s2n_stuffer, align 8
  %8 = alloca %struct.s2n_stuffer, align 8
  %9 = alloca %struct.s2n_stuffer, align 8
  %10 = alloca %struct.s2n_stuffer, align 8
  %11 = alloca %struct.s2n_blob, align 8
  %12 = alloca %struct.s2n_blob, align 8
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %3) #12
  call void @llvm.lifetime.start.p0(i64 97, ptr nonnull %4) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(97) %4, ptr noundef nonnull align 16 dereferenceable(97) @__const.main.premaster_secret_hex_in, i64 97, i1 false)
  call void @llvm.lifetime.start.p0(i64 65, ptr nonnull %5) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(65) %5, ptr noundef nonnull align 16 dereferenceable(65) @__const.main.client_random_hex_in, i64 65, i1 false)
  call void @llvm.lifetime.start.p0(i64 65, ptr nonnull %6) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(65) %6, ptr noundef nonnull align 16 dereferenceable(65) @__const.main.server_random_hex_in, i64 65, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %7, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %8, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %9, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %10, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, i8 0, i64 24, i1 false)
  %16 = load i32, ptr @test_count, align 4, !tbaa !5
  %17 = add nsw i32 %16, 1
  store i32 %17, ptr @test_count, align 4, !tbaa !5
  %18 = call i32 @s2n_blob_init(ptr noundef nonnull %11, ptr noundef nonnull %3, i32 noundef 96) #12
  %19 = icmp eq i32 %18, -1
  br i1 %19, label %20, label %44

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

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

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

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

44:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #12
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, i8 0, i64 24, i1 false)
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %45 = load ptr, ptr @stdout, align 8, !tbaa !9
  %46 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %45, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2) #12
  %47 = load ptr, ptr @stdout, align 8, !tbaa !9
  %48 = call i32 @fflush(ptr noundef %47)
  %49 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #12
  %50 = icmp eq i32 %49, -1
  br i1 %50, label %51, label %75

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

58:                                               ; preds = %51
  %59 = load ptr, ptr @stderr, align 8, !tbaa !9
  %60 = call i32 @fileno(ptr noundef %59) #12
  %61 = call i32 @isatty(i32 noundef %60) #12
  %.not106 = icmp eq i32 %61, 0
  br i1 %.not106, label %62, label %63

62:                                               ; preds = %58, %51
  br label %63

63:                                               ; preds = %58, %62
  %.str.4.sink138 = phi ptr [ @.str.4, %62 ], [ @.str, %58 ]
  store i32 %53, ptr %52, align 4, !tbaa !5
  %64 = load ptr, ptr @stderr, align 8, !tbaa !9
  %65 = load i32, ptr @test_count, align 4, !tbaa !5
  %66 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %67 = load i32, ptr %66, align 4, !tbaa !5
  %68 = call ptr @s2n_strerror(i32 noundef %67, ptr noundef nonnull @.str.3) #12
  %69 = load i32, ptr %66, align 4, !tbaa !5
  %70 = call ptr @s2n_strerror_debug(i32 noundef %69, ptr noundef nonnull @.str.3) #12
  %71 = load i32, ptr %52, align 4, !tbaa !5
  %72 = call ptr @strerror(i32 noundef %71) #12
  %73 = load i32, ptr %52, align 4, !tbaa !5
  %74 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %64, ptr noundef nonnull %.str.4.sink138, i32 noundef %65, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.2, i32 noundef 53, ptr noundef %68, ptr noundef %70, ptr noundef %72, i32 noundef %73) #14
  call void @exit(i32 noundef 1) #15
  unreachable

75:                                               ; preds = %44
  %76 = load i32, ptr @test_count, align 4, !tbaa !5
  %77 = add nsw i32 %76, 1
  store i32 %77, ptr @test_count, align 4, !tbaa !5
  %78 = call i32 @s2n_enable_atexit() #12
  %79 = icmp eq i32 %78, -1
  br i1 %79, label %80, label %104

80:                                               ; preds = %75
  %81 = tail call ptr @__errno_location() #13
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %83 = load ptr, ptr @stderr, align 8, !tbaa !9
  %84 = call i32 @s2n_print_stacktrace(ptr noundef %83) #12
  %85 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %86 = trunc nuw i8 %85 to i1
  br i1 %86, label %87, label %91

87:                                               ; preds = %80
  %88 = load ptr, ptr @stderr, align 8, !tbaa !9
  %89 = call i32 @fileno(ptr noundef %88) #12
  %90 = call i32 @isatty(i32 noundef %89) #12
  %.not105 = icmp eq i32 %90, 0
  br i1 %.not105, label %91, label %92

91:                                               ; preds = %87, %80
  br label %92

92:                                               ; preds = %87, %91
  %.str.4.sink149 = phi ptr [ @.str.4, %91 ], [ @.str, %87 ]
  store i32 %82, ptr %81, align 4, !tbaa !5
  %93 = load ptr, ptr @stderr, align 8, !tbaa !9
  %94 = load i32, ptr @test_count, align 4, !tbaa !5
  %95 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %96 = load i32, ptr %95, align 4, !tbaa !5
  %97 = call ptr @s2n_strerror(i32 noundef %96, ptr noundef nonnull @.str.3) #12
  %98 = load i32, ptr %95, align 4, !tbaa !5
  %99 = call ptr @s2n_strerror_debug(i32 noundef %98, ptr noundef nonnull @.str.3) #12
  %100 = load i32, ptr %81, align 4, !tbaa !5
  %101 = call ptr @strerror(i32 noundef %100) #12
  %102 = load i32, ptr %81, align 4, !tbaa !5
  %103 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %93, ptr noundef nonnull %.str.4.sink149, i32 noundef %94, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.2, i32 noundef 53, ptr noundef %97, ptr noundef %99, ptr noundef %101, i32 noundef %102) #14
  call void @exit(i32 noundef 1) #15
  unreachable

104:                                              ; preds = %75
  %105 = call i32 @s2n_init() #12
  %106 = icmp eq i32 %105, -1
  br i1 %106, label %107, label %131

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

114:                                              ; preds = %107
  %115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %116 = call i32 @fileno(ptr noundef %115) #12
  %117 = call i32 @isatty(i32 noundef %116) #12
  %.not104 = icmp eq i32 %117, 0
  br i1 %.not104, label %118, label %119

118:                                              ; preds = %114, %107
  br label %119

119:                                              ; preds = %114, %118
  %.str.4.sink160 = phi ptr [ @.str.4, %118 ], [ @.str, %114 ]
  store i32 %109, ptr %108, align 4, !tbaa !5
  %120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %121 = load i32, ptr @test_count, align 4, !tbaa !5
  %122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %123 = load i32, ptr %122, align 4, !tbaa !5
  %124 = call ptr @s2n_strerror(i32 noundef %123, ptr noundef nonnull @.str.3) #12
  %125 = load i32, ptr %122, align 4, !tbaa !5
  %126 = call ptr @s2n_strerror_debug(i32 noundef %125, ptr noundef nonnull @.str.3) #12
  %127 = load i32, ptr %108, align 4, !tbaa !5
  %128 = call ptr @strerror(i32 noundef %127) #12
  %129 = load i32, ptr %108, align 4, !tbaa !5
  %130 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %120, ptr noundef nonnull %.str.4.sink160, i32 noundef %121, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.2, i32 noundef 53, ptr noundef %124, ptr noundef %126, ptr noundef %128, i32 noundef %129) #14
  call void @exit(i32 noundef 1) #15
  unreachable

131:                                              ; preds = %104
  %132 = load i32, ptr @test_count, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr @test_count, align 4, !tbaa !5
  %134 = call i32 (...) @s2n_disable_tls13_in_test() #12
  %135 = icmp eq i32 %134, -1
  br i1 %135, label %136, label %160

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

143:                                              ; preds = %136
  %144 = load ptr, ptr @stderr, align 8, !tbaa !9
  %145 = call i32 @fileno(ptr noundef %144) #12
  %146 = call i32 @isatty(i32 noundef %145) #12
  %.not103 = icmp eq i32 %146, 0
  br i1 %.not103, label %147, label %148

147:                                              ; preds = %143, %136
  br label %148

148:                                              ; preds = %143, %147
  %.str.4.sink171 = phi ptr [ @.str.4, %147 ], [ @.str, %143 ]
  store i32 %138, ptr %137, align 4, !tbaa !5
  %149 = load ptr, ptr @stderr, align 8, !tbaa !9
  %150 = load i32, ptr @test_count, align 4, !tbaa !5
  %151 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = call ptr @s2n_strerror(i32 noundef %152, ptr noundef nonnull @.str.3) #12
  %154 = load i32, ptr %151, align 4, !tbaa !5
  %155 = call ptr @s2n_strerror_debug(i32 noundef %154, ptr noundef nonnull @.str.3) #12
  %156 = load i32, ptr %137, align 4, !tbaa !5
  %157 = call ptr @strerror(i32 noundef %156) #12
  %158 = load i32, ptr %137, align 4, !tbaa !5
  %159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %149, ptr noundef nonnull %.str.4.sink171, i32 noundef %150, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.2, i32 noundef 54, ptr noundef %153, ptr noundef %155, ptr noundef %157, i32 noundef %158) #14
  call void @exit(i32 noundef 1) #15
  unreachable

160:                                              ; preds = %131
  %161 = call zeroext i1 @s2n_is_in_fips_mode() #12
  br i1 %161, label %162, label %237

162:                                              ; preds = %160
  %163 = call i32 @s2n_cleanup() #12
  %164 = icmp eq i32 %163, -1
  br i1 %164, label %165, label %189

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

172:                                              ; preds = %165
  %173 = load ptr, ptr @stderr, align 8, !tbaa !9
  %174 = call i32 @fileno(ptr noundef %173) #12
  %175 = call i32 @isatty(i32 noundef %174) #12
  %.not102 = icmp eq i32 %175, 0
  br i1 %.not102, label %176, label %177

176:                                              ; preds = %172, %165
  br label %177

177:                                              ; preds = %172, %176
  %.str.4.sink182 = phi ptr [ @.str.4, %176 ], [ @.str, %172 ]
  store i32 %167, ptr %166, align 4, !tbaa !5
  %178 = load ptr, ptr @stderr, align 8, !tbaa !9
  %179 = load i32, ptr @test_count, align 4, !tbaa !5
  %180 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %181 = load i32, ptr %180, align 4, !tbaa !5
  %182 = call ptr @s2n_strerror(i32 noundef %181, ptr noundef nonnull @.str.3) #12
  %183 = load i32, ptr %180, align 4, !tbaa !5
  %184 = call ptr @s2n_strerror_debug(i32 noundef %183, ptr noundef nonnull @.str.3) #12
  %185 = load i32, ptr %166, align 4, !tbaa !5
  %186 = call ptr @strerror(i32 noundef %185) #12
  %187 = load i32, ptr %166, align 4, !tbaa !5
  %188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %178, ptr noundef nonnull %.str.4.sink182, i32 noundef %179, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 58, ptr noundef %182, ptr noundef %184, ptr noundef %186, i32 noundef %187) #14
  call void @exit(i32 noundef 1) #15
  unreachable

189:                                              ; preds = %162
  %190 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #12
  %191 = icmp eq i32 %190, -1
  br i1 %191, label %192, label %216

192:                                              ; preds = %189
  %193 = tail call ptr @__errno_location() #13
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = load ptr, ptr @stderr, align 8, !tbaa !9
  %196 = call i32 @s2n_print_stacktrace(ptr noundef %195) #12
  %197 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %198 = trunc nuw i8 %197 to i1
  br i1 %198, label %199, label %203

199:                                              ; preds = %192
  %200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %201 = call i32 @fileno(ptr noundef %200) #12
  %202 = call i32 @isatty(i32 noundef %201) #12
  %.not101 = icmp eq i32 %202, 0
  br i1 %.not101, label %203, label %204

203:                                              ; preds = %199, %192
  br label %204

204:                                              ; preds = %199, %203
  %.str.4.sink193 = phi ptr [ @.str.4, %203 ], [ @.str, %199 ]
  store i32 %194, ptr %193, align 4, !tbaa !5
  %205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %206 = load i32, ptr @test_count, align 4, !tbaa !5
  %207 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %208 = load i32, ptr %207, align 4, !tbaa !5
  %209 = call ptr @s2n_strerror(i32 noundef %208, ptr noundef nonnull @.str.3) #12
  %210 = load i32, ptr %207, align 4, !tbaa !5
  %211 = call ptr @s2n_strerror_debug(i32 noundef %210, ptr noundef nonnull @.str.3) #12
  %212 = load i32, ptr %193, align 4, !tbaa !5
  %213 = call ptr @strerror(i32 noundef %212) #12
  %214 = load i32, ptr %193, align 4, !tbaa !5
  %215 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %205, ptr noundef nonnull %.str.4.sink193, i32 noundef %206, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.2, i32 noundef 58, ptr noundef %209, ptr noundef %211, ptr noundef %213, i32 noundef %214) #14
  call void @exit(i32 noundef 1) #15
  unreachable

216:                                              ; preds = %189
  %217 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %218 = trunc nuw i8 %217 to i1
  br i1 %218, label %219, label %230

219:                                              ; preds = %216
  %220 = load ptr, ptr @stdout, align 8, !tbaa !9
  %221 = call i32 @fileno(ptr noundef %220) #12
  %222 = call i32 @isatty(i32 noundef %221) #12
  %.not98 = icmp eq i32 %222, 0
  br i1 %.not98, label %230, label %223

223:                                              ; preds = %219
  %224 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not100 = icmp eq i32 %224, 0
  %225 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not100, label %228, label %226

226:                                              ; preds = %223
  %227 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %225, ptr noundef nonnull @.str.12, i32 noundef %224) #12
  br label %763

228:                                              ; preds = %223
  %229 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %225, ptr noundef nonnull @.str.13) #12
  br label %763

230:                                              ; preds = %219, %216
  %231 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not99 = icmp eq i32 %231, 0
  %232 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not99, label %235, label %233

233:                                              ; preds = %230
  %234 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %232, ptr noundef nonnull @.str.14, i32 noundef %231) #12
  br label %763

235:                                              ; preds = %230
  %236 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %232, ptr noundef nonnull @.str.15) #12
  br label %763

237:                                              ; preds = %160
  %238 = load i32, ptr @test_count, align 4, !tbaa !5
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr @test_count, align 4, !tbaa !5
  %240 = call ptr @s2n_connection_new(i32 noundef 0) #12
  %241 = icmp eq ptr %240, null
  br i1 %241, label %242, label %266

242:                                              ; preds = %237
  %243 = tail call ptr @__errno_location() #13
  %244 = load i32, ptr %243, align 4, !tbaa !5
  %245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %246 = call i32 @s2n_print_stacktrace(ptr noundef %245) #12
  %247 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %248 = trunc nuw i8 %247 to i1
  br i1 %248, label %249, label %253

249:                                              ; preds = %242
  %250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %251 = call i32 @fileno(ptr noundef %250) #12
  %252 = call i32 @isatty(i32 noundef %251) #12
  %.not97 = icmp eq i32 %252, 0
  br i1 %.not97, label %253, label %254

253:                                              ; preds = %249, %242
  br label %254

254:                                              ; preds = %249, %253
  %.str.4.sink204 = phi ptr [ @.str.4, %253 ], [ @.str, %249 ]
  store i32 %244, ptr %243, align 4, !tbaa !5
  %255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %256 = load i32, ptr @test_count, align 4, !tbaa !5
  %257 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %258 = load i32, ptr %257, align 4, !tbaa !5
  %259 = call ptr @s2n_strerror(i32 noundef %258, ptr noundef nonnull @.str.3) #12
  %260 = load i32, ptr %257, align 4, !tbaa !5
  %261 = call ptr @s2n_strerror_debug(i32 noundef %260, ptr noundef nonnull @.str.3) #12
  %262 = load i32, ptr %243, align 4, !tbaa !5
  %263 = call ptr @strerror(i32 noundef %262) #12
  %264 = load i32, ptr %243, align 4, !tbaa !5
  %265 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %255, ptr noundef nonnull %.str.4.sink204, i32 noundef %256, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.2, i32 noundef 61, ptr noundef %259, ptr noundef %261, ptr noundef %263, i32 noundef %264) #14
  call void @exit(i32 noundef 1) #15
  unreachable

266:                                              ; preds = %237
  %267 = load i32, ptr @test_count, align 4, !tbaa !5
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr @test_count, align 4, !tbaa !5
  %269 = call i32 @s2n_stuffer_alloc_ro_from_string(ptr noundef nonnull %7, ptr noundef nonnull %5) #12
  %270 = icmp eq i32 %269, -1
  br i1 %270, label %271, label %295

271:                                              ; preds = %266
  %272 = tail call ptr @__errno_location() #13
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %275 = call i32 @s2n_print_stacktrace(ptr noundef %274) #12
  %276 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %277 = trunc nuw i8 %276 to i1
  br i1 %277, label %278, label %282

278:                                              ; preds = %271
  %279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %280 = call i32 @fileno(ptr noundef %279) #12
  %281 = call i32 @isatty(i32 noundef %280) #12
  %.not96 = icmp eq i32 %281, 0
  br i1 %.not96, label %282, label %283

282:                                              ; preds = %278, %271
  br label %283

283:                                              ; preds = %278, %282
  %.str.4.sink215 = phi ptr [ @.str.4, %282 ], [ @.str, %278 ]
  store i32 %273, ptr %272, align 4, !tbaa !5
  %284 = load ptr, ptr @stderr, align 8, !tbaa !9
  %285 = load i32, ptr @test_count, align 4, !tbaa !5
  %286 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %287 = load i32, ptr %286, align 4, !tbaa !5
  %288 = call ptr @s2n_strerror(i32 noundef %287, ptr noundef nonnull @.str.3) #12
  %289 = load i32, ptr %286, align 4, !tbaa !5
  %290 = call ptr @s2n_strerror_debug(i32 noundef %289, ptr noundef nonnull @.str.3) #12
  %291 = load i32, ptr %272, align 4, !tbaa !5
  %292 = call ptr @strerror(i32 noundef %291) #12
  %293 = load i32, ptr %272, align 4, !tbaa !5
  %294 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %284, ptr noundef nonnull %.str.4.sink215, i32 noundef %285, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.2, i32 noundef 63, ptr noundef %288, ptr noundef %290, ptr noundef %292, i32 noundef %293) #14
  call void @exit(i32 noundef 1) #15
  unreachable

295:                                              ; preds = %266
  %296 = load i32, ptr @test_count, align 4, !tbaa !5
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr @test_count, align 4, !tbaa !5
  %298 = call i32 @s2n_stuffer_alloc_ro_from_string(ptr noundef nonnull %8, ptr noundef nonnull %6) #12
  %299 = icmp eq i32 %298, -1
  br i1 %299, label %300, label %324

300:                                              ; preds = %295
  %301 = tail call ptr @__errno_location() #13
  %302 = load i32, ptr %301, align 4, !tbaa !5
  %303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %304 = call i32 @s2n_print_stacktrace(ptr noundef %303) #12
  %305 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %306 = trunc nuw i8 %305 to i1
  br i1 %306, label %307, label %311

307:                                              ; preds = %300
  %308 = load ptr, ptr @stderr, align 8, !tbaa !9
  %309 = call i32 @fileno(ptr noundef %308) #12
  %310 = call i32 @isatty(i32 noundef %309) #12
  %.not95 = icmp eq i32 %310, 0
  br i1 %.not95, label %311, label %312

311:                                              ; preds = %307, %300
  br label %312

312:                                              ; preds = %307, %311
  %.str.4.sink226 = phi ptr [ @.str.4, %311 ], [ @.str, %307 ]
  store i32 %302, ptr %301, align 4, !tbaa !5
  %313 = load ptr, ptr @stderr, align 8, !tbaa !9
  %314 = load i32, ptr @test_count, align 4, !tbaa !5
  %315 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %316 = load i32, ptr %315, align 4, !tbaa !5
  %317 = call ptr @s2n_strerror(i32 noundef %316, ptr noundef nonnull @.str.3) #12
  %318 = load i32, ptr %315, align 4, !tbaa !5
  %319 = call ptr @s2n_strerror_debug(i32 noundef %318, ptr noundef nonnull @.str.3) #12
  %320 = load i32, ptr %301, align 4, !tbaa !5
  %321 = call ptr @strerror(i32 noundef %320) #12
  %322 = load i32, ptr %301, align 4, !tbaa !5
  %323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %313, ptr noundef nonnull %.str.4.sink226, i32 noundef %314, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.2, i32 noundef 64, ptr noundef %317, ptr noundef %319, ptr noundef %321, i32 noundef %322) #14
  call void @exit(i32 noundef 1) #15
  unreachable

324:                                              ; preds = %295
  %325 = load i32, ptr @test_count, align 4, !tbaa !5
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr @test_count, align 4, !tbaa !5
  %327 = call i32 @s2n_stuffer_alloc_ro_from_string(ptr noundef nonnull %9, ptr noundef nonnull %4) #12
  %328 = icmp eq i32 %327, -1
  br i1 %328, label %329, label %353

329:                                              ; preds = %324
  %330 = tail call ptr @__errno_location() #13
  %331 = load i32, ptr %330, align 4, !tbaa !5
  %332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %333 = call i32 @s2n_print_stacktrace(ptr noundef %332) #12
  %334 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %335 = trunc nuw i8 %334 to i1
  br i1 %335, label %336, label %340

336:                                              ; preds = %329
  %337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %338 = call i32 @fileno(ptr noundef %337) #12
  %339 = call i32 @isatty(i32 noundef %338) #12
  %.not94 = icmp eq i32 %339, 0
  br i1 %.not94, label %340, label %341

340:                                              ; preds = %336, %329
  br label %341

341:                                              ; preds = %336, %340
  %.str.4.sink237 = phi ptr [ @.str.4, %340 ], [ @.str, %336 ]
  store i32 %331, ptr %330, align 4, !tbaa !5
  %342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %343 = load i32, ptr @test_count, align 4, !tbaa !5
  %344 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %345 = load i32, ptr %344, align 4, !tbaa !5
  %346 = call ptr @s2n_strerror(i32 noundef %345, ptr noundef nonnull @.str.3) #12
  %347 = load i32, ptr %344, align 4, !tbaa !5
  %348 = call ptr @s2n_strerror_debug(i32 noundef %347, ptr noundef nonnull @.str.3) #12
  %349 = load i32, ptr %330, align 4, !tbaa !5
  %350 = call ptr @strerror(i32 noundef %349) #12
  %351 = load i32, ptr %330, align 4, !tbaa !5
  %352 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %342, ptr noundef nonnull %.str.4.sink237, i32 noundef %343, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.2, i32 noundef 65, ptr noundef %346, ptr noundef %348, ptr noundef %350, i32 noundef %351) #14
  call void @exit(i32 noundef 1) #15
  unreachable

353:                                              ; preds = %324
  %354 = load i32, ptr @test_count, align 4, !tbaa !5
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr @test_count, align 4, !tbaa !5
  %356 = call i32 @s2n_stuffer_init(ptr noundef nonnull %10, ptr noundef nonnull %11) #12
  %357 = icmp eq i32 %356, -1
  br i1 %357, label %359, label %.preheader110

.preheader110:                                    ; preds = %353
  %358 = getelementptr inbounds i8, ptr %240, i64 240
  br label %384

359:                                              ; preds = %353
  %360 = tail call ptr @__errno_location() #13
  %361 = load i32, ptr %360, align 4, !tbaa !5
  %362 = load ptr, ptr @stderr, align 8, !tbaa !9
  %363 = call i32 @s2n_print_stacktrace(ptr noundef %362) #12
  %364 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %365 = trunc nuw i8 %364 to i1
  br i1 %365, label %366, label %370

366:                                              ; preds = %359
  %367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %368 = call i32 @fileno(ptr noundef %367) #12
  %369 = call i32 @isatty(i32 noundef %368) #12
  %.not93 = icmp eq i32 %369, 0
  br i1 %.not93, label %370, label %371

370:                                              ; preds = %366, %359
  br label %371

371:                                              ; preds = %366, %370
  %.str.4.sink248 = phi ptr [ @.str.4, %370 ], [ @.str, %366 ]
  store i32 %361, ptr %360, align 4, !tbaa !5
  %372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %373 = load i32, ptr @test_count, align 4, !tbaa !5
  %374 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = call ptr @s2n_strerror(i32 noundef %375, ptr noundef nonnull @.str.3) #12
  %377 = load i32, ptr %374, align 4, !tbaa !5
  %378 = call ptr @s2n_strerror_debug(i32 noundef %377, ptr noundef nonnull @.str.3) #12
  %379 = load i32, ptr %360, align 4, !tbaa !5
  %380 = call ptr @strerror(i32 noundef %379) #12
  %381 = load i32, ptr %360, align 4, !tbaa !5
  %382 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %372, ptr noundef nonnull %.str.4.sink248, i32 noundef %373, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.2, i32 noundef 67, ptr noundef %376, ptr noundef %378, ptr noundef %380, i32 noundef %381) #14
  call void @exit(i32 noundef 1) #15
  unreachable

.preheader109:                                    ; preds = %413
  %383 = getelementptr inbounds i8, ptr %240, i64 1618
  br label %417

384:                                              ; preds = %.preheader110, %413
  %indvars.iv = phi i64 [ 0, %.preheader110 ], [ %indvars.iv.next, %413 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #12
  store i8 0, ptr %13, align 1, !tbaa !15
  %385 = load i32, ptr @test_count, align 4, !tbaa !5
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr @test_count, align 4, !tbaa !5
  %387 = call i32 @s2n_stuffer_read_uint8_hex(ptr noundef nonnull %9, ptr noundef nonnull %13) #12
  %388 = call zeroext i1 @s2n_result_is_ok(i32 %387)
  br i1 %388, label %413, label %389

389:                                              ; preds = %384
  %390 = tail call ptr @__errno_location() #13
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %393 = call i32 @s2n_print_stacktrace(ptr noundef %392) #12
  %394 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %395 = trunc nuw i8 %394 to i1
  br i1 %395, label %396, label %400

396:                                              ; preds = %389
  %397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %398 = call i32 @fileno(ptr noundef %397) #12
  %399 = call i32 @isatty(i32 noundef %398) #12
  %.not92 = icmp eq i32 %399, 0
  br i1 %.not92, label %400, label %401

400:                                              ; preds = %396, %389
  br label %401

401:                                              ; preds = %396, %400
  %.str.4.sink259 = phi ptr [ @.str.4, %400 ], [ @.str, %396 ]
  store i32 %391, ptr %390, align 4, !tbaa !5
  %402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %403 = load i32, ptr @test_count, align 4, !tbaa !5
  %404 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %405 = load i32, ptr %404, align 4, !tbaa !5
  %406 = call ptr @s2n_strerror(i32 noundef %405, ptr noundef nonnull @.str.3) #12
  %407 = load i32, ptr %404, align 4, !tbaa !5
  %408 = call ptr @s2n_strerror_debug(i32 noundef %407, ptr noundef nonnull @.str.3) #12
  %409 = load i32, ptr %390, align 4, !tbaa !5
  %410 = call ptr @strerror(i32 noundef %409) #12
  %411 = load i32, ptr %390, align 4, !tbaa !5
  %412 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %402, ptr noundef nonnull %.str.4.sink259, i32 noundef %403, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.2, i32 noundef 72, ptr noundef %406, ptr noundef %408, ptr noundef %410, i32 noundef %411) #14
  call void @exit(i32 noundef 1) #15
  unreachable

413:                                              ; preds = %384
  %414 = load i8, ptr %13, align 1, !tbaa !15
  %415 = getelementptr inbounds [48 x i8], ptr %358, i64 0, i64 %indvars.iv
  store i8 %414, ptr %415, align 1, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #12
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 48
  br i1 %exitcond.not, label %.preheader109, label %384, !llvm.loop !16

.preheader108:                                    ; preds = %446
  %416 = getelementptr inbounds i8, ptr %240, i64 1650
  br label %457

417:                                              ; preds = %.preheader109, %446
  %indvars.iv116 = phi i64 [ 0, %.preheader109 ], [ %indvars.iv.next117, %446 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #12
  store i8 0, ptr %14, align 1, !tbaa !15
  %418 = load i32, ptr @test_count, align 4, !tbaa !5
  %419 = add nsw i32 %418, 1
  store i32 %419, ptr @test_count, align 4, !tbaa !5
  %420 = call i32 @s2n_stuffer_read_uint8_hex(ptr noundef nonnull %7, ptr noundef nonnull %14) #12
  %421 = call zeroext i1 @s2n_result_is_ok(i32 %420)
  br i1 %421, label %446, label %422

422:                                              ; preds = %417
  %423 = tail call ptr @__errno_location() #13
  %424 = load i32, ptr %423, align 4, !tbaa !5
  %425 = load ptr, ptr @stderr, align 8, !tbaa !9
  %426 = call i32 @s2n_print_stacktrace(ptr noundef %425) #12
  %427 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %428 = trunc nuw i8 %427 to i1
  br i1 %428, label %429, label %433

429:                                              ; preds = %422
  %430 = load ptr, ptr @stderr, align 8, !tbaa !9
  %431 = call i32 @fileno(ptr noundef %430) #12
  %432 = call i32 @isatty(i32 noundef %431) #12
  %.not91 = icmp eq i32 %432, 0
  br i1 %.not91, label %433, label %434

433:                                              ; preds = %429, %422
  br label %434

434:                                              ; preds = %429, %433
  %.str.4.sink270 = phi ptr [ @.str.4, %433 ], [ @.str, %429 ]
  store i32 %424, ptr %423, align 4, !tbaa !5
  %435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %436 = load i32, ptr @test_count, align 4, !tbaa !5
  %437 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = call ptr @s2n_strerror(i32 noundef %438, ptr noundef nonnull @.str.3) #12
  %440 = load i32, ptr %437, align 4, !tbaa !5
  %441 = call ptr @s2n_strerror_debug(i32 noundef %440, ptr noundef nonnull @.str.3) #12
  %442 = load i32, ptr %423, align 4, !tbaa !5
  %443 = call ptr @strerror(i32 noundef %442) #12
  %444 = load i32, ptr %423, align 4, !tbaa !5
  %445 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %435, ptr noundef nonnull %.str.4.sink270, i32 noundef %436, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.2, i32 noundef 77, ptr noundef %439, ptr noundef %441, ptr noundef %443, i32 noundef %444) #14
  call void @exit(i32 noundef 1) #15
  unreachable

446:                                              ; preds = %417
  %447 = load i8, ptr %14, align 1, !tbaa !15
  %448 = getelementptr inbounds [32 x i8], ptr %383, i64 0, i64 %indvars.iv116
  store i8 %447, ptr %448, align 1, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #12
  %indvars.iv.next117 = add nuw nsw i64 %indvars.iv116, 1
  %exitcond119.not = icmp eq i64 %indvars.iv.next117, 32
  br i1 %exitcond119.not, label %.preheader108, label %417, !llvm.loop !18

449:                                              ; preds = %486
  %450 = getelementptr inbounds i8, ptr %240, i64 220
  store i8 30, ptr %450, align 4, !tbaa !19
  store ptr %358, ptr %12, align 8, !tbaa !46
  %451 = getelementptr inbounds i8, ptr %12, i64 8
  store i32 48, ptr %451, align 8, !tbaa !47
  %452 = load i32, ptr @test_count, align 4, !tbaa !5
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr @test_count, align 4, !tbaa !5
  %454 = call i32 @s2n_prf_tls_master_secret(ptr noundef nonnull %240, ptr noundef nonnull %12) #12
  %455 = icmp eq i32 %454, -1
  br i1 %455, label %489, label %.preheader

.preheader:                                       ; preds = %449
  %456 = getelementptr inbounds i8, ptr %240, i64 288
  br label %518

457:                                              ; preds = %.preheader108, %486
  %indvars.iv120 = phi i64 [ 0, %.preheader108 ], [ %indvars.iv.next121, %486 ]
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #12
  store i8 0, ptr %15, align 1, !tbaa !15
  %458 = load i32, ptr @test_count, align 4, !tbaa !5
  %459 = add nsw i32 %458, 1
  store i32 %459, ptr @test_count, align 4, !tbaa !5
  %460 = call i32 @s2n_stuffer_read_uint8_hex(ptr noundef nonnull %8, ptr noundef nonnull %15) #12
  %461 = call zeroext i1 @s2n_result_is_ok(i32 %460)
  br i1 %461, label %486, label %462

462:                                              ; preds = %457
  %463 = tail call ptr @__errno_location() #13
  %464 = load i32, ptr %463, align 4, !tbaa !5
  %465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %466 = call i32 @s2n_print_stacktrace(ptr noundef %465) #12
  %467 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %468 = trunc nuw i8 %467 to i1
  br i1 %468, label %469, label %473

469:                                              ; preds = %462
  %470 = load ptr, ptr @stderr, align 8, !tbaa !9
  %471 = call i32 @fileno(ptr noundef %470) #12
  %472 = call i32 @isatty(i32 noundef %471) #12
  %.not90 = icmp eq i32 %472, 0
  br i1 %.not90, label %473, label %474

473:                                              ; preds = %469, %462
  br label %474

474:                                              ; preds = %469, %473
  %.str.4.sink281 = phi ptr [ @.str.4, %473 ], [ @.str, %469 ]
  store i32 %464, ptr %463, align 4, !tbaa !5
  %475 = load ptr, ptr @stderr, align 8, !tbaa !9
  %476 = load i32, ptr @test_count, align 4, !tbaa !5
  %477 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %478 = load i32, ptr %477, align 4, !tbaa !5
  %479 = call ptr @s2n_strerror(i32 noundef %478, ptr noundef nonnull @.str.3) #12
  %480 = load i32, ptr %477, align 4, !tbaa !5
  %481 = call ptr @s2n_strerror_debug(i32 noundef %480, ptr noundef nonnull @.str.3) #12
  %482 = load i32, ptr %463, align 4, !tbaa !5
  %483 = call ptr @strerror(i32 noundef %482) #12
  %484 = load i32, ptr %463, align 4, !tbaa !5
  %485 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %475, ptr noundef nonnull %.str.4.sink281, i32 noundef %476, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.2, i32 noundef 82, ptr noundef %479, ptr noundef %481, ptr noundef %483, i32 noundef %484) #14
  call void @exit(i32 noundef 1) #15
  unreachable

486:                                              ; preds = %457
  %487 = load i8, ptr %15, align 1, !tbaa !15
  %488 = getelementptr inbounds [32 x i8], ptr %416, i64 0, i64 %indvars.iv120
  store i8 %487, ptr %488, align 1, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #12
  %indvars.iv.next121 = add nuw nsw i64 %indvars.iv120, 1
  %exitcond123.not = icmp eq i64 %indvars.iv.next121, 32
  br i1 %exitcond123.not, label %449, label %457, !llvm.loop !48

489:                                              ; preds = %449
  %490 = tail call ptr @__errno_location() #13
  %491 = load i32, ptr %490, align 4, !tbaa !5
  %492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %493 = call i32 @s2n_print_stacktrace(ptr noundef %492) #12
  %494 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %495 = trunc nuw i8 %494 to i1
  br i1 %495, label %496, label %500

496:                                              ; preds = %489
  %497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %498 = call i32 @fileno(ptr noundef %497) #12
  %499 = call i32 @isatty(i32 noundef %498) #12
  %.not89 = icmp eq i32 %499, 0
  br i1 %.not89, label %500, label %501

500:                                              ; preds = %496, %489
  br label %501

501:                                              ; preds = %496, %500
  %.str.4.sink292 = phi ptr [ @.str.4, %500 ], [ @.str, %496 ]
  store i32 %491, ptr %490, align 4, !tbaa !5
  %502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %503 = load i32, ptr @test_count, align 4, !tbaa !5
  %504 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %505 = load i32, ptr %504, align 4, !tbaa !5
  %506 = call ptr @s2n_strerror(i32 noundef %505, ptr noundef nonnull @.str.3) #12
  %507 = load i32, ptr %504, align 4, !tbaa !5
  %508 = call ptr @s2n_strerror_debug(i32 noundef %507, ptr noundef nonnull @.str.3) #12
  %509 = load i32, ptr %490, align 4, !tbaa !5
  %510 = call ptr @strerror(i32 noundef %509) #12
  %511 = load i32, ptr %490, align 4, !tbaa !5
  %512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %502, ptr noundef nonnull %.str.4.sink292, i32 noundef %503, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.2, i32 noundef 90, ptr noundef %506, ptr noundef %508, ptr noundef %510, i32 noundef %511) #14
  call void @exit(i32 noundef 1) #15
  unreachable

513:                                              ; preds = %518
  %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, 1
  %exitcond127.not = icmp eq i64 %indvars.iv.next125, 48
  br i1 %exitcond127.not, label %514, label %518, !llvm.loop !49

514:                                              ; preds = %513
  %515 = load i32, ptr @test_count, align 4, !tbaa !5
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr @test_count, align 4, !tbaa !5
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(96) %3, ptr noundef nonnull dereferenceable(96) @__const.main.master_secret_hex_in, i64 96)
  %517 = icmp eq i32 %bcmp, 0
  br i1 %517, label %573, label %549

518:                                              ; preds = %.preheader, %513
  %indvars.iv124 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next125, %513 ]
  %519 = load i32, ptr @test_count, align 4, !tbaa !5
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr @test_count, align 4, !tbaa !5
  %521 = getelementptr inbounds [48 x i8], ptr %456, i64 0, i64 %indvars.iv124
  %522 = load i8, ptr %521, align 1, !tbaa !15
  %523 = call i32 @s2n_stuffer_write_uint8_hex(ptr noundef nonnull %10, i8 noundef zeroext %522) #12
  %524 = call zeroext i1 @s2n_result_is_ok(i32 %523)
  br i1 %524, label %513, label %525

525:                                              ; preds = %518
  %526 = tail call ptr @__errno_location() #13
  %527 = load i32, ptr %526, align 4, !tbaa !5
  %528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %529 = call i32 @s2n_print_stacktrace(ptr noundef %528) #12
  %530 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %531 = trunc nuw i8 %530 to i1
  br i1 %531, label %532, label %536

532:                                              ; preds = %525
  %533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %534 = call i32 @fileno(ptr noundef %533) #12
  %535 = call i32 @isatty(i32 noundef %534) #12
  %.not88 = icmp eq i32 %535, 0
  br i1 %.not88, label %536, label %537

536:                                              ; preds = %532, %525
  br label %537

537:                                              ; preds = %532, %536
  %.str.4.sink303 = phi ptr [ @.str.4, %536 ], [ @.str, %532 ]
  store i32 %527, ptr %526, align 4, !tbaa !5
  %538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %539 = load i32, ptr @test_count, align 4, !tbaa !5
  %540 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %541 = load i32, ptr %540, align 4, !tbaa !5
  %542 = call ptr @s2n_strerror(i32 noundef %541, ptr noundef nonnull @.str.3) #12
  %543 = load i32, ptr %540, align 4, !tbaa !5
  %544 = call ptr @s2n_strerror_debug(i32 noundef %543, ptr noundef nonnull @.str.3) #12
  %545 = load i32, ptr %526, align 4, !tbaa !5
  %546 = call ptr @strerror(i32 noundef %545) #12
  %547 = load i32, ptr %526, align 4, !tbaa !5
  %548 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %538, ptr noundef nonnull %.str.4.sink303, i32 noundef %539, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.2, i32 noundef 94, ptr noundef %542, ptr noundef %544, ptr noundef %546, i32 noundef %547) #14
  call void @exit(i32 noundef 1) #15
  unreachable

549:                                              ; preds = %514
  %550 = tail call ptr @__errno_location() #13
  %551 = load i32, ptr %550, align 4, !tbaa !5
  %552 = load ptr, ptr @stderr, align 8, !tbaa !9
  %553 = call i32 @s2n_print_stacktrace(ptr noundef %552) #12
  %554 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %555 = trunc nuw i8 %554 to i1
  br i1 %555, label %556, label %560

556:                                              ; preds = %549
  %557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %558 = call i32 @fileno(ptr noundef %557) #12
  %559 = call i32 @isatty(i32 noundef %558) #12
  %.not = icmp eq i32 %559, 0
  br i1 %.not, label %560, label %561

560:                                              ; preds = %556, %549
  br label %561

561:                                              ; preds = %556, %560
  %.str.4.sink314 = phi ptr [ @.str.4, %560 ], [ @.str, %556 ]
  store i32 %551, ptr %550, align 4, !tbaa !5
  %562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %563 = load i32, ptr @test_count, align 4, !tbaa !5
  %564 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %565 = load i32, ptr %564, align 4, !tbaa !5
  %566 = call ptr @s2n_strerror(i32 noundef %565, ptr noundef nonnull @.str.3) #12
  %567 = load i32, ptr %564, align 4, !tbaa !5
  %568 = call ptr @s2n_strerror_debug(i32 noundef %567, ptr noundef nonnull @.str.3) #12
  %569 = load i32, ptr %550, align 4, !tbaa !5
  %570 = call ptr @strerror(i32 noundef %569) #12
  %571 = load i32, ptr %550, align 4, !tbaa !5
  %572 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %562, ptr noundef nonnull %.str.4.sink314, i32 noundef %563, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.2, i32 noundef 97, ptr noundef %566, ptr noundef %568, ptr noundef %570, i32 noundef %571) #14
  call void @exit(i32 noundef 1) #15
  unreachable

573:                                              ; preds = %514
  %574 = add nsw i32 %515, 2
  store i32 %574, ptr @test_count, align 4, !tbaa !5
  %575 = call i32 @s2n_connection_free(ptr noundef nonnull %240) #12
  %576 = icmp eq i32 %575, -1
  br i1 %576, label %577, label %601

577:                                              ; preds = %573
  %578 = tail call ptr @__errno_location() #13
  %579 = load i32, ptr %578, align 4, !tbaa !5
  %580 = load ptr, ptr @stderr, align 8, !tbaa !9
  %581 = call i32 @s2n_print_stacktrace(ptr noundef %580) #12
  %582 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %583 = trunc nuw i8 %582 to i1
  br i1 %583, label %584, label %588

584:                                              ; preds = %577
  %585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %586 = call i32 @fileno(ptr noundef %585) #12
  %587 = call i32 @isatty(i32 noundef %586) #12
  %.not87 = icmp eq i32 %587, 0
  br i1 %.not87, label %588, label %589

588:                                              ; preds = %584, %577
  br label %589

589:                                              ; preds = %584, %588
  %.str.4.sink325 = phi ptr [ @.str.4, %588 ], [ @.str, %584 ]
  store i32 %579, ptr %578, align 4, !tbaa !5
  %590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %591 = load i32, ptr @test_count, align 4, !tbaa !5
  %592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %593 = load i32, ptr %592, align 4, !tbaa !5
  %594 = call ptr @s2n_strerror(i32 noundef %593, ptr noundef nonnull @.str.3) #12
  %595 = load i32, ptr %592, align 4, !tbaa !5
  %596 = call ptr @s2n_strerror_debug(i32 noundef %595, ptr noundef nonnull @.str.3) #12
  %597 = load i32, ptr %578, align 4, !tbaa !5
  %598 = call ptr @strerror(i32 noundef %597) #12
  %599 = load i32, ptr %578, align 4, !tbaa !5
  %600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %590, ptr noundef nonnull %.str.4.sink325, i32 noundef %591, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.2, i32 noundef 99, ptr noundef %594, ptr noundef %596, ptr noundef %598, i32 noundef %599) #14
  call void @exit(i32 noundef 1) #15
  unreachable

601:                                              ; preds = %573
  %602 = load i32, ptr @test_count, align 4, !tbaa !5
  %603 = add nsw i32 %602, 1
  store i32 %603, ptr @test_count, align 4, !tbaa !5
  %604 = call i32 @s2n_stuffer_free(ptr noundef nonnull %7) #12
  %605 = icmp eq i32 %604, -1
  br i1 %605, label %606, label %630

606:                                              ; preds = %601
  %607 = tail call ptr @__errno_location() #13
  %608 = load i32, ptr %607, align 4, !tbaa !5
  %609 = load ptr, ptr @stderr, align 8, !tbaa !9
  %610 = call i32 @s2n_print_stacktrace(ptr noundef %609) #12
  %611 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %612 = trunc nuw i8 %611 to i1
  br i1 %612, label %613, label %617

613:                                              ; preds = %606
  %614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %615 = call i32 @fileno(ptr noundef %614) #12
  %616 = call i32 @isatty(i32 noundef %615) #12
  %.not86 = icmp eq i32 %616, 0
  br i1 %.not86, label %617, label %618

617:                                              ; preds = %613, %606
  br label %618

618:                                              ; preds = %613, %617
  %.str.4.sink336 = phi ptr [ @.str.4, %617 ], [ @.str, %613 ]
  store i32 %608, ptr %607, align 4, !tbaa !5
  %619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %620 = load i32, ptr @test_count, align 4, !tbaa !5
  %621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %622 = load i32, ptr %621, align 4, !tbaa !5
  %623 = call ptr @s2n_strerror(i32 noundef %622, ptr noundef nonnull @.str.3) #12
  %624 = load i32, ptr %621, align 4, !tbaa !5
  %625 = call ptr @s2n_strerror_debug(i32 noundef %624, ptr noundef nonnull @.str.3) #12
  %626 = load i32, ptr %607, align 4, !tbaa !5
  %627 = call ptr @strerror(i32 noundef %626) #12
  %628 = load i32, ptr %607, align 4, !tbaa !5
  %629 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %619, ptr noundef nonnull %.str.4.sink336, i32 noundef %620, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.2, i32 noundef 100, ptr noundef %623, ptr noundef %625, ptr noundef %627, i32 noundef %628) #14
  call void @exit(i32 noundef 1) #15
  unreachable

630:                                              ; preds = %601
  %631 = load i32, ptr @test_count, align 4, !tbaa !5
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr @test_count, align 4, !tbaa !5
  %633 = call i32 @s2n_stuffer_free(ptr noundef nonnull %8) #12
  %634 = icmp eq i32 %633, -1
  br i1 %634, label %635, label %659

635:                                              ; preds = %630
  %636 = tail call ptr @__errno_location() #13
  %637 = load i32, ptr %636, align 4, !tbaa !5
  %638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %639 = call i32 @s2n_print_stacktrace(ptr noundef %638) #12
  %640 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %641 = trunc nuw i8 %640 to i1
  br i1 %641, label %642, label %646

642:                                              ; preds = %635
  %643 = load ptr, ptr @stderr, align 8, !tbaa !9
  %644 = call i32 @fileno(ptr noundef %643) #12
  %645 = call i32 @isatty(i32 noundef %644) #12
  %.not85 = icmp eq i32 %645, 0
  br i1 %.not85, label %646, label %647

646:                                              ; preds = %642, %635
  br label %647

647:                                              ; preds = %642, %646
  %.str.4.sink347 = phi ptr [ @.str.4, %646 ], [ @.str, %642 ]
  store i32 %637, ptr %636, align 4, !tbaa !5
  %648 = load ptr, ptr @stderr, align 8, !tbaa !9
  %649 = load i32, ptr @test_count, align 4, !tbaa !5
  %650 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %651 = load i32, ptr %650, align 4, !tbaa !5
  %652 = call ptr @s2n_strerror(i32 noundef %651, ptr noundef nonnull @.str.3) #12
  %653 = load i32, ptr %650, align 4, !tbaa !5
  %654 = call ptr @s2n_strerror_debug(i32 noundef %653, ptr noundef nonnull @.str.3) #12
  %655 = load i32, ptr %636, align 4, !tbaa !5
  %656 = call ptr @strerror(i32 noundef %655) #12
  %657 = load i32, ptr %636, align 4, !tbaa !5
  %658 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %648, ptr noundef nonnull %.str.4.sink347, i32 noundef %649, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.2, i32 noundef 101, ptr noundef %652, ptr noundef %654, ptr noundef %656, i32 noundef %657) #14
  call void @exit(i32 noundef 1) #15
  unreachable

659:                                              ; preds = %630
  %660 = load i32, ptr @test_count, align 4, !tbaa !5
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr @test_count, align 4, !tbaa !5
  %662 = call i32 @s2n_stuffer_free(ptr noundef nonnull %9) #12
  %663 = icmp eq i32 %662, -1
  br i1 %663, label %664, label %688

664:                                              ; preds = %659
  %665 = tail call ptr @__errno_location() #13
  %666 = load i32, ptr %665, align 4, !tbaa !5
  %667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %668 = call i32 @s2n_print_stacktrace(ptr noundef %667) #12
  %669 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %670 = trunc nuw i8 %669 to i1
  br i1 %670, label %671, label %675

671:                                              ; preds = %664
  %672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %673 = call i32 @fileno(ptr noundef %672) #12
  %674 = call i32 @isatty(i32 noundef %673) #12
  %.not84 = icmp eq i32 %674, 0
  br i1 %.not84, label %675, label %676

675:                                              ; preds = %671, %664
  br label %676

676:                                              ; preds = %671, %675
  %.str.4.sink358 = phi ptr [ @.str.4, %675 ], [ @.str, %671 ]
  store i32 %666, ptr %665, align 4, !tbaa !5
  %677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %678 = load i32, ptr @test_count, align 4, !tbaa !5
  %679 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %680 = load i32, ptr %679, align 4, !tbaa !5
  %681 = call ptr @s2n_strerror(i32 noundef %680, ptr noundef nonnull @.str.3) #12
  %682 = load i32, ptr %679, align 4, !tbaa !5
  %683 = call ptr @s2n_strerror_debug(i32 noundef %682, ptr noundef nonnull @.str.3) #12
  %684 = load i32, ptr %665, align 4, !tbaa !5
  %685 = call ptr @strerror(i32 noundef %684) #12
  %686 = load i32, ptr %665, align 4, !tbaa !5
  %687 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %677, ptr noundef nonnull %.str.4.sink358, i32 noundef %678, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.2, i32 noundef 102, ptr noundef %681, ptr noundef %683, ptr noundef %685, i32 noundef %686) #14
  call void @exit(i32 noundef 1) #15
  unreachable

688:                                              ; preds = %659
  %689 = call i32 @s2n_cleanup() #12
  %690 = icmp eq i32 %689, -1
  br i1 %690, label %691, label %715

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

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

702:                                              ; preds = %698, %691
  br label %703

703:                                              ; preds = %698, %702
  %.str.4.sink369 = phi ptr [ @.str.4, %702 ], [ @.str, %698 ]
  store i32 %693, ptr %692, align 4, !tbaa !5
  %704 = load ptr, ptr @stderr, align 8, !tbaa !9
  %705 = load i32, ptr @test_count, align 4, !tbaa !5
  %706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %707 = load i32, ptr %706, align 4, !tbaa !5
  %708 = call ptr @s2n_strerror(i32 noundef %707, ptr noundef nonnull @.str.3) #12
  %709 = load i32, ptr %706, align 4, !tbaa !5
  %710 = call ptr @s2n_strerror_debug(i32 noundef %709, ptr noundef nonnull @.str.3) #12
  %711 = load i32, ptr %692, align 4, !tbaa !5
  %712 = call ptr @strerror(i32 noundef %711) #12
  %713 = load i32, ptr %692, align 4, !tbaa !5
  %714 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %704, ptr noundef nonnull %.str.4.sink369, i32 noundef %705, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, i32 noundef 104, ptr noundef %708, ptr noundef %710, ptr noundef %712, i32 noundef %713) #14
  call void @exit(i32 noundef 1) #15
  unreachable

715:                                              ; preds = %688
  %716 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #12
  %717 = icmp eq i32 %716, -1
  br i1 %717, label %718, label %742

718:                                              ; preds = %715
  %719 = tail call ptr @__errno_location() #13
  %720 = load i32, ptr %719, align 4, !tbaa !5
  %721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %722 = call i32 @s2n_print_stacktrace(ptr noundef %721) #12
  %723 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %724 = trunc nuw i8 %723 to i1
  br i1 %724, label %725, label %729

725:                                              ; preds = %718
  %726 = load ptr, ptr @stderr, align 8, !tbaa !9
  %727 = call i32 @fileno(ptr noundef %726) #12
  %728 = call i32 @isatty(i32 noundef %727) #12
  %.not82 = icmp eq i32 %728, 0
  br i1 %.not82, label %729, label %730

729:                                              ; preds = %725, %718
  br label %730

730:                                              ; preds = %725, %729
  %.str.4.sink380 = phi ptr [ @.str.4, %729 ], [ @.str, %725 ]
  store i32 %720, ptr %719, align 4, !tbaa !5
  %731 = load ptr, ptr @stderr, align 8, !tbaa !9
  %732 = load i32, ptr @test_count, align 4, !tbaa !5
  %733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %734 = load i32, ptr %733, align 4, !tbaa !5
  %735 = call ptr @s2n_strerror(i32 noundef %734, ptr noundef nonnull @.str.3) #12
  %736 = load i32, ptr %733, align 4, !tbaa !5
  %737 = call ptr @s2n_strerror_debug(i32 noundef %736, ptr noundef nonnull @.str.3) #12
  %738 = load i32, ptr %719, align 4, !tbaa !5
  %739 = call ptr @strerror(i32 noundef %738) #12
  %740 = load i32, ptr %719, align 4, !tbaa !5
  %741 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %731, ptr noundef nonnull %.str.4.sink380, i32 noundef %732, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.2, i32 noundef 104, ptr noundef %735, ptr noundef %737, ptr noundef %739, i32 noundef %740) #14
  call void @exit(i32 noundef 1) #15
  unreachable

742:                                              ; preds = %715
  %743 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %744 = trunc nuw i8 %743 to i1
  br i1 %744, label %745, label %756

745:                                              ; preds = %742
  %746 = load ptr, ptr @stdout, align 8, !tbaa !9
  %747 = call i32 @fileno(ptr noundef %746) #12
  %748 = call i32 @isatty(i32 noundef %747) #12
  %.not79 = icmp eq i32 %748, 0
  br i1 %.not79, label %756, label %749

749:                                              ; preds = %745
  %750 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not81 = icmp eq i32 %750, 0
  %751 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not81, label %754, label %752

752:                                              ; preds = %749
  %753 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %751, ptr noundef nonnull @.str.12, i32 noundef %750) #12
  br label %763

754:                                              ; preds = %749
  %755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %751, ptr noundef nonnull @.str.13) #12
  br label %763

756:                                              ; preds = %745, %742
  %757 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not80 = icmp eq i32 %757, 0
  %758 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not80, label %761, label %759

759:                                              ; preds = %756
  %760 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %758, ptr noundef nonnull @.str.14, i32 noundef %757) #12
  br label %763

761:                                              ; preds = %756
  %762 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %758, ptr noundef nonnull @.str.15) #12
  br label %763

763:                                              ; preds = %754, %752, %761, %759, %228, %226, %235, %233
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 65, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 65, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 97, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %3) #12
  ret i32 0
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #4

declare i32 @s2n_init() local_unnamed_addr #4

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

declare zeroext i1 @s2n_is_in_fips_mode() local_unnamed_addr #4

declare i32 @s2n_cleanup() local_unnamed_addr #4

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #4

declare i32 @s2n_stuffer_alloc_ro_from_string(ptr noundef, ptr noundef) local_unnamed_addr #4

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

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

declare i32 @s2n_stuffer_read_uint8_hex(ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_prf_tls_master_secret(ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_stuffer_write_uint8_hex(ptr noundef, i8 noundef zeroext) local_unnamed_addr #4

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #4

declare i32 @s2n_stuffer_free(ptr noundef) local_unnamed_addr #4

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { "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 = { 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 #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { 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 #11 = { nofree nounwind willreturn memory(argmem: read) }
attributes #12 = { nounwind }
attributes #13 = { nounwind willreturn memory(none) }
attributes #14 = { cold nounwind }
attributes #15 = { 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 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!20, !7, i64 220}
!20 = !{!"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, !21, i64 160, !22, i64 168, !22, 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, !23, i64 240, !10, i64 632, !10, i64 640, !24, i64 648, !30, i64 1144, !33, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !36, i64 1776, !36, i64 1816, !36, i64 1856, !36, i64 1896, !6, i64 1936, !22, i64 1944, !7, i64 1952, !36, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !37, i64 2004, !37, i64 2008, !38, i64 2016, !35, i64 2208, !6, i64 2212, !35, i64 2216, !22, i64 2224, !7, i64 2232, !22, i64 2240, !22, i64 2248, !22, i64 2256, !37, i64 2264, !37, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !29, i64 2792, !6, i64 2816, !29, i64 2824, !29, i64 2848, !29, i64 2872, !40, i64 2896, !42, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !29, i64 3784, !6, i64 3808, !44, i64 3816, !7, i64 3848, !36, i64 3992, !29, i64 4032, !29, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !35, i64 4084, !35, i64 4086, !6, i64 4088, !6, i64 4092, !29, i64 4096, !6, i64 4120, !45, i64 4128, !37, i64 4176, !7, i64 4180, !7, i64 4181}
!21 = !{!"s2n_timer", !22, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!24 = !{!"s2n_kex_parameters", !25, i64 0, !26, i64 8, !7, i64 24, !26, i64 56, !27, i64 72, !27, i64 184, !7, i64 296, !28, i64 360, !29, i64 448, !29, i64 472}
!25 = !{!"s2n_dh_params", !10, i64 0}
!26 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!27 = !{!"s2n_kem_group_params", !10, i64 0, !28, i64 8, !26, i64 96}
!28 = !{!"s2n_kem_params", !10, i64 0, !29, i64 8, !29, i64 32, !29, i64 56, !12, i64 80}
!29 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!30 = !{!"s2n_handshake_parameters", !31, i64 0, !31, i64 48, !29, i64 96, !6, i64 120, !32, 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}
!31 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!32 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!33 = !{!"s2n_psk_parameters", !6, i64 0, !34, i64 8, !35, i64 40, !35, i64 42, !10, i64 48, !6, i64 56}
!34 = !{!"s2n_array", !29, i64 0, !6, i64 24, !6, i64 28}
!35 = !{!"short", !7, i64 0}
!36 = !{!"s2n_stuffer", !29, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!37 = !{!"", !6, i64 0}
!38 = !{!"s2n_handshake", !36, 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, !39, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!39 = !{!"s2n_offered_early_data", !10, i64 0}
!40 = !{!"s2n_client_hello", !29, i64 0, !41, i64 24, !29, i64 728, !29, i64 752, !29, 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}
!41 = !{!"", !7, i64 0, !29, i64 672, !35, i64 696}
!42 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !35, i64 18, !10, i64 24, !6, i64 32, !10, i64 40, !43, i64 48, !12, i64 52}
!43 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!44 = !{!"s2n_ticket_fields", !29, i64 0, !6, i64 24}
!45 = !{!"s2n_post_handshake", !36, i64 0, !7, i64 40}
!46 = !{!29, !10, i64 0}
!47 = !{!29, !6, i64 8}
!48 = distinct !{!48, !17}
!49 = distinct !{!49, !17}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,LoopSimplifyPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass