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

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

%struct.s2n_extension_type = type { i16, i8, i16, ptr, ptr, ptr, ptr }
%struct.s2n_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_sig_scheme_list = type { [128 x i16], 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_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_signature_scheme = type { i16, ptr, i32, i32, i8, i8, i16, ptr }

@s2n_use_color_in_output = external dso_local global i8, align 1
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [105 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [200 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [94 x i8], align 1
@s2n_client_signature_algorithms_extension = external constant %struct.s2n_extension_type, align 8
@.str.14 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %struct.s2n_stuffer, align 8
  %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 %struct.s2n_sig_scheme_list, align 2
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %struct.s2n_stuffer, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i64, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %struct.s2n_result, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  br label %47

47:                                               ; preds = %2
  br label %48

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

53:                                               ; preds = %48
  %54 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %55 = icmp eq i32 %54, -1
  br i1 %55, label %56, label %107

56:                                               ; preds = %53
  br label %57

57:                                               ; preds = %56
  br label %58

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

65:                                               ; preds = %58
  %66 = load ptr, ptr @stderr, align 8, !tbaa !9
  %67 = call i32 @fileno(ptr noundef %66) #9
  %68 = call i32 @isatty(i32 noundef %67) #9
  %69 = icmp ne i32 %68, 0
  br i1 %69, label %70, label %87

70:                                               ; preds = %65
  %71 = load i32, ptr %6, align 4, !tbaa !5
  %72 = call ptr @__errno_location() #10
  store i32 %71, ptr %72, align 4, !tbaa !5
  %73 = load ptr, ptr @stderr, align 8, !tbaa !9
  %74 = load i32, ptr @test_count, align 4, !tbaa !5
  %75 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %76 = load i32, ptr %75, align 4, !tbaa !5
  %77 = call ptr @s2n_strerror(i32 noundef %76, ptr noundef @.str.4)
  %78 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %79 = load i32, ptr %78, align 4, !tbaa !5
  %80 = call ptr @s2n_strerror_debug(i32 noundef %79, ptr noundef @.str.4)
  %81 = call ptr @__errno_location() #10
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %83 = call ptr @strerror(i32 noundef %82) #9
  %84 = call ptr @__errno_location() #10
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %86 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %73, ptr noundef @.str.2, i32 noundef %74, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 29, ptr noundef %77, ptr noundef %80, ptr noundef %83, i32 noundef %85) #9
  br label %104

87:                                               ; preds = %65, %58
  %88 = load i32, ptr %6, align 4, !tbaa !5
  %89 = call ptr @__errno_location() #10
  store i32 %88, ptr %89, align 4, !tbaa !5
  %90 = load ptr, ptr @stderr, align 8, !tbaa !9
  %91 = load i32, ptr @test_count, align 4, !tbaa !5
  %92 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %93 = load i32, ptr %92, align 4, !tbaa !5
  %94 = call ptr @s2n_strerror(i32 noundef %93, ptr noundef @.str.4)
  %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_debug(i32 noundef %96, ptr noundef @.str.4)
  %98 = call ptr @__errno_location() #10
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = call ptr @strerror(i32 noundef %99) #9
  %101 = call ptr @__errno_location() #10
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %103 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %90, ptr noundef @.str.5, i32 noundef %91, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 29, ptr noundef %94, ptr noundef %97, ptr noundef %100, i32 noundef %102) #9
  br label %104

104:                                              ; preds = %87, %70
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #9
  br label %105

105:                                              ; preds = %104
  call void @exit(i32 noundef 1) #11
  unreachable

106:                                              ; No predecessors!
  br label %107

107:                                              ; preds = %106, %53
  br label %108

108:                                              ; preds = %107
  br label %109

109:                                              ; preds = %108
  %110 = load i32, ptr @test_count, align 4, !tbaa !5
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr @test_count, align 4, !tbaa !5
  %112 = call i32 @s2n_enable_atexit()
  %113 = icmp eq i32 %112, -1
  br i1 %113, label %114, label %165

114:                                              ; preds = %109
  br label %115

115:                                              ; preds = %114
  br label %116

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

123:                                              ; preds = %116
  %124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %125 = call i32 @fileno(ptr noundef %124) #9
  %126 = call i32 @isatty(i32 noundef %125) #9
  %127 = icmp ne i32 %126, 0
  br i1 %127, label %128, label %145

128:                                              ; preds = %123
  %129 = load i32, ptr %7, align 4, !tbaa !5
  %130 = call ptr @__errno_location() #10
  store i32 %129, ptr %130, align 4, !tbaa !5
  %131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %132 = load i32, ptr @test_count, align 4, !tbaa !5
  %133 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = call ptr @s2n_strerror(i32 noundef %134, ptr noundef @.str.4)
  %136 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %138 = call ptr @s2n_strerror_debug(i32 noundef %137, ptr noundef @.str.4)
  %139 = call ptr @__errno_location() #10
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = call ptr @strerror(i32 noundef %140) #9
  %142 = call ptr @__errno_location() #10
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %131, ptr noundef @.str.2, i32 noundef %132, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 29, ptr noundef %135, ptr noundef %138, ptr noundef %141, i32 noundef %143) #9
  br label %162

145:                                              ; preds = %123, %116
  %146 = load i32, ptr %7, align 4, !tbaa !5
  %147 = call ptr @__errno_location() #10
  store i32 %146, ptr %147, align 4, !tbaa !5
  %148 = load ptr, ptr @stderr, align 8, !tbaa !9
  %149 = load i32, ptr @test_count, align 4, !tbaa !5
  %150 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %151 = load i32, ptr %150, align 4, !tbaa !5
  %152 = call ptr @s2n_strerror(i32 noundef %151, ptr noundef @.str.4)
  %153 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = call ptr @s2n_strerror_debug(i32 noundef %154, ptr noundef @.str.4)
  %156 = call ptr @__errno_location() #10
  %157 = load i32, ptr %156, align 4, !tbaa !5
  %158 = call ptr @strerror(i32 noundef %157) #9
  %159 = call ptr @__errno_location() #10
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef @.str.5, i32 noundef %149, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 29, ptr noundef %152, ptr noundef %155, ptr noundef %158, i32 noundef %160) #9
  br label %162

162:                                              ; preds = %145, %128
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %163

163:                                              ; preds = %162
  call void @exit(i32 noundef 1) #11
  unreachable

164:                                              ; No predecessors!
  br label %165

165:                                              ; preds = %164, %109
  br label %166

166:                                              ; preds = %165
  br label %167

167:                                              ; preds = %166
  br label %168

168:                                              ; preds = %167
  %169 = call i32 @s2n_init()
  %170 = icmp eq i32 %169, -1
  br i1 %170, label %171, label %222

171:                                              ; preds = %168
  br label %172

172:                                              ; preds = %171
  br label %173

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

180:                                              ; preds = %173
  %181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %182 = call i32 @fileno(ptr noundef %181) #9
  %183 = call i32 @isatty(i32 noundef %182) #9
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %185, label %202

185:                                              ; preds = %180
  %186 = load i32, ptr %8, align 4, !tbaa !5
  %187 = call ptr @__errno_location() #10
  store i32 %186, ptr %187, align 4, !tbaa !5
  %188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %189 = load i32, ptr @test_count, align 4, !tbaa !5
  %190 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %191 = load i32, ptr %190, align 4, !tbaa !5
  %192 = call ptr @s2n_strerror(i32 noundef %191, ptr noundef @.str.4)
  %193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = call ptr @s2n_strerror_debug(i32 noundef %194, ptr noundef @.str.4)
  %196 = call ptr @__errno_location() #10
  %197 = load i32, ptr %196, align 4, !tbaa !5
  %198 = call ptr @strerror(i32 noundef %197) #9
  %199 = call ptr @__errno_location() #10
  %200 = load i32, ptr %199, align 4, !tbaa !5
  %201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %188, ptr noundef @.str.2, i32 noundef %189, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 29, ptr noundef %192, ptr noundef %195, ptr noundef %198, i32 noundef %200) #9
  br label %219

202:                                              ; preds = %180, %173
  %203 = load i32, ptr %8, align 4, !tbaa !5
  %204 = call ptr @__errno_location() #10
  store i32 %203, ptr %204, 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 @.str.4)
  %210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %211 = load i32, ptr %210, align 4, !tbaa !5
  %212 = call ptr @s2n_strerror_debug(i32 noundef %211, ptr noundef @.str.4)
  %213 = call ptr @__errno_location() #10
  %214 = load i32, ptr %213, align 4, !tbaa !5
  %215 = call ptr @strerror(i32 noundef %214) #9
  %216 = call ptr @__errno_location() #10
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %205, ptr noundef @.str.5, i32 noundef %206, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 29, ptr noundef %209, ptr noundef %212, ptr noundef %215, i32 noundef %217) #9
  br label %219

219:                                              ; preds = %202, %185
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  br label %220

220:                                              ; preds = %219
  call void @exit(i32 noundef 1) #11
  unreachable

221:                                              ; No predecessors!
  br label %222

222:                                              ; preds = %221, %168
  br label %223

223:                                              ; preds = %222
  br label %224

224:                                              ; preds = %223
  br label %225

225:                                              ; preds = %224
  %226 = load i32, ptr @test_count, align 4, !tbaa !5
  %227 = add nsw i32 %226, 1
  store i32 %227, ptr @test_count, align 4, !tbaa !5
  %228 = call i32 (...) @s2n_disable_tls13_in_test()
  %229 = icmp eq i32 %228, -1
  br i1 %229, label %230, label %281

230:                                              ; preds = %225
  br label %231

231:                                              ; preds = %230
  br label %232

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

239:                                              ; preds = %232
  %240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %241 = call i32 @fileno(ptr noundef %240) #9
  %242 = call i32 @isatty(i32 noundef %241) #9
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %244, label %261

244:                                              ; preds = %239
  %245 = load i32, ptr %9, align 4, !tbaa !5
  %246 = call ptr @__errno_location() #10
  store i32 %245, ptr %246, align 4, !tbaa !5
  %247 = load ptr, ptr @stderr, align 8, !tbaa !9
  %248 = load i32, ptr @test_count, align 4, !tbaa !5
  %249 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %250 = load i32, ptr %249, align 4, !tbaa !5
  %251 = call ptr @s2n_strerror(i32 noundef %250, ptr noundef @.str.4)
  %252 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %253 = load i32, ptr %252, align 4, !tbaa !5
  %254 = call ptr @s2n_strerror_debug(i32 noundef %253, ptr noundef @.str.4)
  %255 = call ptr @__errno_location() #10
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = call ptr @strerror(i32 noundef %256) #9
  %258 = call ptr @__errno_location() #10
  %259 = load i32, ptr %258, align 4, !tbaa !5
  %260 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %247, ptr noundef @.str.2, i32 noundef %248, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 30, ptr noundef %251, ptr noundef %254, ptr noundef %257, i32 noundef %259) #9
  br label %278

261:                                              ; preds = %239, %232
  %262 = load i32, ptr %9, align 4, !tbaa !5
  %263 = call ptr @__errno_location() #10
  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.4)
  %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.4)
  %272 = call ptr @__errno_location() #10
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = call ptr @strerror(i32 noundef %273) #9
  %275 = call ptr @__errno_location() #10
  %276 = load i32, ptr %275, align 4, !tbaa !5
  %277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %264, ptr noundef @.str.5, i32 noundef %265, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 30, ptr noundef %268, ptr noundef %271, ptr noundef %274, i32 noundef %276) #9
  br label %278

278:                                              ; preds = %261, %244
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  br label %279

279:                                              ; preds = %278
  call void @exit(i32 noundef 1) #11
  unreachable

280:                                              ; No predecessors!
  br label %281

281:                                              ; preds = %280, %225
  br label %282

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

283:                                              ; preds = %282
  %284 = load i32, ptr @test_count, align 4, !tbaa !5
  %285 = add nsw i32 %284, 1
  store i32 %285, ptr @test_count, align 4, !tbaa !5
  %286 = call ptr @s2n_config_new()
  store ptr %286, ptr %10, align 8, !tbaa !9
  %287 = icmp eq ptr %286, null
  br i1 %287, label %288, label %341

288:                                              ; preds = %283
  br label %289

289:                                              ; preds = %288
  br label %290

290:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  %291 = call ptr @__errno_location() #10
  %292 = load i32, ptr %291, align 4, !tbaa !5
  store i32 %292, ptr %11, align 4, !tbaa !5
  %293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %294 = call i32 @s2n_print_stacktrace(ptr noundef %293)
  %295 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %296 = trunc i8 %295 to i1
  br i1 %296, label %297, label %319

297:                                              ; preds = %290
  %298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %299 = call i32 @fileno(ptr noundef %298) #9
  %300 = call i32 @isatty(i32 noundef %299) #9
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %302, label %319

302:                                              ; preds = %297
  %303 = load i32, ptr %11, align 4, !tbaa !5
  %304 = call ptr @__errno_location() #10
  store i32 %303, ptr %304, align 4, !tbaa !5
  %305 = load ptr, ptr @stderr, align 8, !tbaa !9
  %306 = load i32, ptr @test_count, align 4, !tbaa !5
  %307 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %309 = call ptr @s2n_strerror(i32 noundef %308, ptr noundef @.str.4)
  %310 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %311 = load i32, ptr %310, align 4, !tbaa !5
  %312 = call ptr @s2n_strerror_debug(i32 noundef %311, ptr noundef @.str.4)
  %313 = call ptr @__errno_location() #10
  %314 = load i32, ptr %313, align 4, !tbaa !5
  %315 = call ptr @strerror(i32 noundef %314) #9
  %316 = call ptr @__errno_location() #10
  %317 = load i32, ptr %316, align 4, !tbaa !5
  %318 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %305, ptr noundef @.str.2, i32 noundef %306, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 32, ptr noundef %309, ptr noundef %312, ptr noundef %315, i32 noundef %317) #9
  br label %336

319:                                              ; preds = %297, %290
  %320 = load i32, ptr %11, align 4, !tbaa !5
  %321 = call ptr @__errno_location() #10
  store i32 %320, ptr %321, align 4, !tbaa !5
  %322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %323 = load i32, ptr @test_count, align 4, !tbaa !5
  %324 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %325 = load i32, ptr %324, align 4, !tbaa !5
  %326 = call ptr @s2n_strerror(i32 noundef %325, ptr noundef @.str.4)
  %327 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %328 = load i32, ptr %327, align 4, !tbaa !5
  %329 = call ptr @s2n_strerror_debug(i32 noundef %328, ptr noundef @.str.4)
  %330 = call ptr @__errno_location() #10
  %331 = load i32, ptr %330, align 4, !tbaa !5
  %332 = call ptr @strerror(i32 noundef %331) #9
  %333 = call ptr @__errno_location() #10
  %334 = load i32, ptr %333, align 4, !tbaa !5
  %335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %322, ptr noundef @.str.5, i32 noundef %323, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 32, ptr noundef %326, ptr noundef %329, ptr noundef %332, i32 noundef %334) #9
  br label %336

336:                                              ; preds = %319, %302
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %337

337:                                              ; preds = %336
  br label %338

338:                                              ; preds = %337
  call void @exit(i32 noundef 1) #11
  unreachable

339:                                              ; No predecessors!
  br label %340

340:                                              ; preds = %339
  br label %341

341:                                              ; preds = %340, %283
  br label %342

342:                                              ; preds = %341
  br label %343

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

344:                                              ; preds = %343
  %345 = load i32, ptr @test_count, align 4, !tbaa !5
  %346 = add nsw i32 %345, 1
  store i32 %346, ptr @test_count, align 4, !tbaa !5
  %347 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %12, ptr noundef @.str.10, ptr noundef @.str.11)
  %348 = icmp eq i32 %347, -1
  br i1 %348, label %349, label %402

349:                                              ; preds = %344
  br label %350

350:                                              ; preds = %349
  br label %351

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

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

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

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

397:                                              ; preds = %380, %363
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %398

398:                                              ; preds = %397
  br label %399

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

400:                                              ; No predecessors!
  br label %401

401:                                              ; preds = %400
  br label %402

402:                                              ; preds = %401, %344
  br label %403

403:                                              ; preds = %402
  br label %404

404:                                              ; preds = %403
  br label %405

405:                                              ; preds = %404
  %406 = load i32, ptr @test_count, align 4, !tbaa !5
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr @test_count, align 4, !tbaa !5
  %408 = load ptr, ptr %10, align 8, !tbaa !9
  %409 = load ptr, ptr %12, align 8, !tbaa !9
  %410 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %408, ptr noundef %409)
  %411 = icmp eq i32 %410, -1
  br i1 %411, label %412, label %465

412:                                              ; preds = %405
  br label %413

413:                                              ; preds = %412
  br label %414

414:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %415 = call ptr @__errno_location() #10
  %416 = load i32, ptr %415, align 4, !tbaa !5
  store i32 %416, ptr %14, align 4, !tbaa !5
  %417 = load ptr, ptr @stderr, align 8, !tbaa !9
  %418 = call i32 @s2n_print_stacktrace(ptr noundef %417)
  %419 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %420 = trunc i8 %419 to i1
  br i1 %420, label %421, label %443

421:                                              ; preds = %414
  %422 = load ptr, ptr @stderr, align 8, !tbaa !9
  %423 = call i32 @fileno(ptr noundef %422) #9
  %424 = call i32 @isatty(i32 noundef %423) #9
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %443

426:                                              ; preds = %421
  %427 = load i32, ptr %14, align 4, !tbaa !5
  %428 = call ptr @__errno_location() #10
  store i32 %427, ptr %428, align 4, !tbaa !5
  %429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %430 = load i32, ptr @test_count, align 4, !tbaa !5
  %431 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %432 = load i32, ptr %431, align 4, !tbaa !5
  %433 = call ptr @s2n_strerror(i32 noundef %432, ptr noundef @.str.4)
  %434 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %435 = load i32, ptr %434, align 4, !tbaa !5
  %436 = call ptr @s2n_strerror_debug(i32 noundef %435, ptr noundef @.str.4)
  %437 = call ptr @__errno_location() #10
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = call ptr @strerror(i32 noundef %438) #9
  %440 = call ptr @__errno_location() #10
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %429, ptr noundef @.str.2, i32 noundef %430, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 37, ptr noundef %433, ptr noundef %436, ptr noundef %439, i32 noundef %441) #9
  br label %460

443:                                              ; preds = %421, %414
  %444 = load i32, ptr %14, align 4, !tbaa !5
  %445 = call ptr @__errno_location() #10
  store i32 %444, ptr %445, align 4, !tbaa !5
  %446 = load ptr, ptr @stderr, align 8, !tbaa !9
  %447 = load i32, ptr @test_count, align 4, !tbaa !5
  %448 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %449 = load i32, ptr %448, align 4, !tbaa !5
  %450 = call ptr @s2n_strerror(i32 noundef %449, ptr noundef @.str.4)
  %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_debug(i32 noundef %452, ptr noundef @.str.4)
  %454 = call ptr @__errno_location() #10
  %455 = load i32, ptr %454, align 4, !tbaa !5
  %456 = call ptr @strerror(i32 noundef %455) #9
  %457 = call ptr @__errno_location() #10
  %458 = load i32, ptr %457, align 4, !tbaa !5
  %459 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %446, ptr noundef @.str.5, i32 noundef %447, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 37, ptr noundef %450, ptr noundef %453, ptr noundef %456, i32 noundef %458) #9
  br label %460

460:                                              ; preds = %443, %426
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  call void @exit(i32 noundef 1) #11
  unreachable

463:                                              ; No predecessors!
  br label %464

464:                                              ; preds = %463
  br label %465

465:                                              ; preds = %464, %405
  br label %466

466:                                              ; preds = %465
  br label %467

467:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %468 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %468, ptr %15, align 8, !tbaa !9
  %469 = load ptr, ptr %15, align 8, !tbaa !9
  %470 = getelementptr inbounds %struct.s2n_connection, ptr %469, i32 0, i32 23
  store i8 31, ptr %470, align 4, !tbaa !15
  br label %471

471:                                              ; preds = %467
  %472 = load i32, ptr @test_count, align 4, !tbaa !5
  %473 = add nsw i32 %472, 1
  store i32 %473, ptr @test_count, align 4, !tbaa !5
  %474 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_client_signature_algorithms_extension, i32 0, i32 5), align 8, !tbaa !42
  %475 = load ptr, ptr %15, align 8, !tbaa !9
  %476 = call zeroext i1 %474(ptr noundef %475)
  br i1 %476, label %477, label %530

477:                                              ; preds = %471
  br label %478

478:                                              ; preds = %477
  br label %479

479:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %480 = call ptr @__errno_location() #10
  %481 = load i32, ptr %480, align 4, !tbaa !5
  store i32 %481, ptr %16, align 4, !tbaa !5
  %482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %483 = call i32 @s2n_print_stacktrace(ptr noundef %482)
  %484 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %485 = trunc i8 %484 to i1
  br i1 %485, label %486, label %508

486:                                              ; preds = %479
  %487 = load ptr, ptr @stderr, align 8, !tbaa !9
  %488 = call i32 @fileno(ptr noundef %487) #9
  %489 = call i32 @isatty(i32 noundef %488) #9
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %508

491:                                              ; preds = %486
  %492 = load i32, ptr %16, align 4, !tbaa !5
  %493 = call ptr @__errno_location() #10
  store i32 %492, ptr %493, align 4, !tbaa !5
  %494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %495 = load i32, ptr @test_count, align 4, !tbaa !5
  %496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %497 = load i32, ptr %496, align 4, !tbaa !5
  %498 = call ptr @s2n_strerror(i32 noundef %497, ptr noundef @.str.4)
  %499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %500 = load i32, ptr %499, align 4, !tbaa !5
  %501 = call ptr @s2n_strerror_debug(i32 noundef %500, ptr noundef @.str.4)
  %502 = call ptr @__errno_location() #10
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = call ptr @strerror(i32 noundef %503) #9
  %505 = call ptr @__errno_location() #10
  %506 = load i32, ptr %505, align 4, !tbaa !5
  %507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %494, ptr noundef @.str.2, i32 noundef %495, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 44, ptr noundef %498, ptr noundef %501, ptr noundef %504, i32 noundef %506) #9
  br label %525

508:                                              ; preds = %486, %479
  %509 = load i32, ptr %16, align 4, !tbaa !5
  %510 = call ptr @__errno_location() #10
  store i32 %509, ptr %510, align 4, !tbaa !5
  %511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %512 = load i32, ptr @test_count, align 4, !tbaa !5
  %513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %514 = load i32, ptr %513, align 4, !tbaa !5
  %515 = call ptr @s2n_strerror(i32 noundef %514, ptr noundef @.str.4)
  %516 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %517 = load i32, ptr %516, align 4, !tbaa !5
  %518 = call ptr @s2n_strerror_debug(i32 noundef %517, ptr noundef @.str.4)
  %519 = call ptr @__errno_location() #10
  %520 = load i32, ptr %519, align 4, !tbaa !5
  %521 = call ptr @strerror(i32 noundef %520) #9
  %522 = call ptr @__errno_location() #10
  %523 = load i32, ptr %522, align 4, !tbaa !5
  %524 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %511, ptr noundef @.str.5, i32 noundef %512, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 44, ptr noundef %515, ptr noundef %518, ptr noundef %521, i32 noundef %523) #9
  br label %525

525:                                              ; preds = %508, %491
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %526

526:                                              ; preds = %525
  br label %527

527:                                              ; preds = %526
  call void @exit(i32 noundef 1) #11
  unreachable

528:                                              ; No predecessors!
  br label %529

529:                                              ; preds = %528
  br label %530

530:                                              ; preds = %529, %471
  br label %531

531:                                              ; preds = %530
  br label %532

532:                                              ; preds = %531
  %533 = load ptr, ptr %15, align 8, !tbaa !9
  %534 = getelementptr inbounds %struct.s2n_connection, ptr %533, i32 0, i32 23
  store i8 33, ptr %534, align 4, !tbaa !15
  br label %535

535:                                              ; preds = %532
  %536 = load i32, ptr @test_count, align 4, !tbaa !5
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr @test_count, align 4, !tbaa !5
  %538 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_client_signature_algorithms_extension, i32 0, i32 5), align 8, !tbaa !42
  %539 = load ptr, ptr %15, align 8, !tbaa !9
  %540 = call zeroext i1 %538(ptr noundef %539)
  br i1 %540, label %594, label %541

541:                                              ; preds = %535
  br label %542

542:                                              ; preds = %541
  br label %543

543:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %544 = call ptr @__errno_location() #10
  %545 = load i32, ptr %544, align 4, !tbaa !5
  store i32 %545, ptr %17, align 4, !tbaa !5
  %546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %547 = call i32 @s2n_print_stacktrace(ptr noundef %546)
  %548 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %549 = trunc i8 %548 to i1
  br i1 %549, label %550, label %572

550:                                              ; preds = %543
  %551 = load ptr, ptr @stderr, align 8, !tbaa !9
  %552 = call i32 @fileno(ptr noundef %551) #9
  %553 = call i32 @isatty(i32 noundef %552) #9
  %554 = icmp ne i32 %553, 0
  br i1 %554, label %555, label %572

555:                                              ; preds = %550
  %556 = load i32, ptr %17, align 4, !tbaa !5
  %557 = call ptr @__errno_location() #10
  store i32 %556, ptr %557, align 4, !tbaa !5
  %558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %559 = load i32, ptr @test_count, align 4, !tbaa !5
  %560 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %561 = load i32, ptr %560, align 4, !tbaa !5
  %562 = call ptr @s2n_strerror(i32 noundef %561, ptr noundef @.str.4)
  %563 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %564 = load i32, ptr %563, align 4, !tbaa !5
  %565 = call ptr @s2n_strerror_debug(i32 noundef %564, ptr noundef @.str.4)
  %566 = call ptr @__errno_location() #10
  %567 = load i32, ptr %566, align 4, !tbaa !5
  %568 = call ptr @strerror(i32 noundef %567) #9
  %569 = call ptr @__errno_location() #10
  %570 = load i32, ptr %569, align 4, !tbaa !5
  %571 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %558, ptr noundef @.str.2, i32 noundef %559, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 47, ptr noundef %562, ptr noundef %565, ptr noundef %568, i32 noundef %570) #9
  br label %589

572:                                              ; preds = %550, %543
  %573 = load i32, ptr %17, align 4, !tbaa !5
  %574 = call ptr @__errno_location() #10
  store i32 %573, ptr %574, align 4, !tbaa !5
  %575 = load ptr, ptr @stderr, align 8, !tbaa !9
  %576 = load i32, ptr @test_count, align 4, !tbaa !5
  %577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %578 = load i32, ptr %577, align 4, !tbaa !5
  %579 = call ptr @s2n_strerror(i32 noundef %578, ptr noundef @.str.4)
  %580 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %581 = load i32, ptr %580, align 4, !tbaa !5
  %582 = call ptr @s2n_strerror_debug(i32 noundef %581, ptr noundef @.str.4)
  %583 = call ptr @__errno_location() #10
  %584 = load i32, ptr %583, align 4, !tbaa !5
  %585 = call ptr @strerror(i32 noundef %584) #9
  %586 = call ptr @__errno_location() #10
  %587 = load i32, ptr %586, align 4, !tbaa !5
  %588 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %575, ptr noundef @.str.5, i32 noundef %576, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 47, ptr noundef %579, ptr noundef %582, ptr noundef %585, i32 noundef %587) #9
  br label %589

589:                                              ; preds = %572, %555
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %590

590:                                              ; preds = %589
  br label %591

591:                                              ; preds = %590
  call void @exit(i32 noundef 1) #11
  unreachable

592:                                              ; No predecessors!
  br label %593

593:                                              ; preds = %592
  br label %594

594:                                              ; preds = %593, %535
  br label %595

595:                                              ; preds = %594
  br label %596

596:                                              ; preds = %595
  %597 = load ptr, ptr %15, align 8, !tbaa !9
  %598 = getelementptr inbounds %struct.s2n_connection, ptr %597, i32 0, i32 23
  store i8 34, ptr %598, align 4, !tbaa !15
  br label %599

599:                                              ; preds = %596
  %600 = load i32, ptr @test_count, align 4, !tbaa !5
  %601 = add nsw i32 %600, 1
  store i32 %601, ptr @test_count, align 4, !tbaa !5
  %602 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_client_signature_algorithms_extension, i32 0, i32 5), align 8, !tbaa !42
  %603 = load ptr, ptr %15, align 8, !tbaa !9
  %604 = call zeroext i1 %602(ptr noundef %603)
  br i1 %604, label %658, label %605

605:                                              ; preds = %599
  br label %606

606:                                              ; preds = %605
  br label %607

607:                                              ; preds = %606
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %608 = call ptr @__errno_location() #10
  %609 = load i32, ptr %608, align 4, !tbaa !5
  store i32 %609, ptr %18, align 4, !tbaa !5
  %610 = load ptr, ptr @stderr, align 8, !tbaa !9
  %611 = call i32 @s2n_print_stacktrace(ptr noundef %610)
  %612 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %613 = trunc i8 %612 to i1
  br i1 %613, label %614, label %636

614:                                              ; preds = %607
  %615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %616 = call i32 @fileno(ptr noundef %615) #9
  %617 = call i32 @isatty(i32 noundef %616) #9
  %618 = icmp ne i32 %617, 0
  br i1 %618, label %619, label %636

619:                                              ; preds = %614
  %620 = load i32, ptr %18, align 4, !tbaa !5
  %621 = call ptr @__errno_location() #10
  store i32 %620, ptr %621, align 4, !tbaa !5
  %622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %623 = load i32, ptr @test_count, align 4, !tbaa !5
  %624 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %625 = load i32, ptr %624, align 4, !tbaa !5
  %626 = call ptr @s2n_strerror(i32 noundef %625, ptr noundef @.str.4)
  %627 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %628 = load i32, ptr %627, align 4, !tbaa !5
  %629 = call ptr @s2n_strerror_debug(i32 noundef %628, ptr noundef @.str.4)
  %630 = call ptr @__errno_location() #10
  %631 = load i32, ptr %630, align 4, !tbaa !5
  %632 = call ptr @strerror(i32 noundef %631) #9
  %633 = call ptr @__errno_location() #10
  %634 = load i32, ptr %633, align 4, !tbaa !5
  %635 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %622, ptr noundef @.str.2, i32 noundef %623, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 50, ptr noundef %626, ptr noundef %629, ptr noundef %632, i32 noundef %634) #9
  br label %653

636:                                              ; preds = %614, %607
  %637 = load i32, ptr %18, align 4, !tbaa !5
  %638 = call ptr @__errno_location() #10
  store i32 %637, ptr %638, align 4, !tbaa !5
  %639 = load ptr, ptr @stderr, align 8, !tbaa !9
  %640 = load i32, ptr @test_count, align 4, !tbaa !5
  %641 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %642 = load i32, ptr %641, align 4, !tbaa !5
  %643 = call ptr @s2n_strerror(i32 noundef %642, ptr noundef @.str.4)
  %644 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %645 = load i32, ptr %644, align 4, !tbaa !5
  %646 = call ptr @s2n_strerror_debug(i32 noundef %645, ptr noundef @.str.4)
  %647 = call ptr @__errno_location() #10
  %648 = load i32, ptr %647, align 4, !tbaa !5
  %649 = call ptr @strerror(i32 noundef %648) #9
  %650 = call ptr @__errno_location() #10
  %651 = load i32, ptr %650, align 4, !tbaa !5
  %652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %639, ptr noundef @.str.5, i32 noundef %640, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 50, ptr noundef %643, ptr noundef %646, ptr noundef %649, i32 noundef %651) #9
  br label %653

653:                                              ; preds = %636, %619
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %654

654:                                              ; preds = %653
  br label %655

655:                                              ; preds = %654
  call void @exit(i32 noundef 1) #11
  unreachable

656:                                              ; No predecessors!
  br label %657

657:                                              ; preds = %656
  br label %658

658:                                              ; preds = %657, %599
  br label %659

659:                                              ; preds = %658
  br label %660

660:                                              ; preds = %659
  %661 = load ptr, ptr %15, align 8, !tbaa !9
  %662 = call i32 @s2n_connection_free(ptr noundef %661)
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %663 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %663, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %664 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %664, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr %21) #9
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 40, i1 false)
  br label %665

665:                                              ; preds = %660
  %666 = load i32, ptr @test_count, align 4, !tbaa !5
  %667 = add nsw i32 %666, 1
  store i32 %667, ptr @test_count, align 4, !tbaa !5
  %668 = call i32 @s2n_stuffer_growable_alloc(ptr noundef %21, i32 noundef 0)
  %669 = icmp eq i32 %668, -1
  br i1 %669, label %670, label %723

670:                                              ; preds = %665
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  %673 = call ptr @__errno_location() #10
  %674 = load i32, ptr %673, align 4, !tbaa !5
  store i32 %674, ptr %22, align 4, !tbaa !5
  %675 = load ptr, ptr @stderr, align 8, !tbaa !9
  %676 = call i32 @s2n_print_stacktrace(ptr noundef %675)
  %677 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %678 = trunc i8 %677 to i1
  br i1 %678, label %679, label %701

679:                                              ; preds = %672
  %680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %681 = call i32 @fileno(ptr noundef %680) #9
  %682 = call i32 @isatty(i32 noundef %681) #9
  %683 = icmp ne i32 %682, 0
  br i1 %683, label %684, label %701

684:                                              ; preds = %679
  %685 = load i32, ptr %22, align 4, !tbaa !5
  %686 = call ptr @__errno_location() #10
  store i32 %685, ptr %686, align 4, !tbaa !5
  %687 = load ptr, ptr @stderr, align 8, !tbaa !9
  %688 = load i32, ptr @test_count, align 4, !tbaa !5
  %689 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %690 = load i32, ptr %689, align 4, !tbaa !5
  %691 = call ptr @s2n_strerror(i32 noundef %690, ptr noundef @.str.4)
  %692 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %693 = load i32, ptr %692, align 4, !tbaa !5
  %694 = call ptr @s2n_strerror_debug(i32 noundef %693, ptr noundef @.str.4)
  %695 = call ptr @__errno_location() #10
  %696 = load i32, ptr %695, align 4, !tbaa !5
  %697 = call ptr @strerror(i32 noundef %696) #9
  %698 = call ptr @__errno_location() #10
  %699 = load i32, ptr %698, align 4, !tbaa !5
  %700 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %687, ptr noundef @.str.2, i32 noundef %688, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 61, ptr noundef %691, ptr noundef %694, ptr noundef %697, i32 noundef %699) #9
  br label %718

701:                                              ; preds = %679, %672
  %702 = load i32, ptr %22, align 4, !tbaa !5
  %703 = call ptr @__errno_location() #10
  store i32 %702, ptr %703, 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 @.str.4)
  %709 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %710 = load i32, ptr %709, align 4, !tbaa !5
  %711 = call ptr @s2n_strerror_debug(i32 noundef %710, ptr noundef @.str.4)
  %712 = call ptr @__errno_location() #10
  %713 = load i32, ptr %712, align 4, !tbaa !5
  %714 = call ptr @strerror(i32 noundef %713) #9
  %715 = call ptr @__errno_location() #10
  %716 = load i32, ptr %715, align 4, !tbaa !5
  %717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %704, ptr noundef @.str.5, i32 noundef %705, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 61, ptr noundef %708, ptr noundef %711, ptr noundef %714, i32 noundef %716) #9
  br label %718

718:                                              ; preds = %701, %684
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %719

719:                                              ; preds = %718
  br label %720

720:                                              ; preds = %719
  call void @exit(i32 noundef 1) #11
  unreachable

721:                                              ; No predecessors!
  br label %722

722:                                              ; preds = %721
  br label %723

723:                                              ; preds = %722, %665
  br label %724

724:                                              ; preds = %723
  br label %725

725:                                              ; preds = %724
  br label %726

726:                                              ; preds = %725
  %727 = load i32, ptr @test_count, align 4, !tbaa !5
  %728 = add nsw i32 %727, 1
  store i32 %728, ptr @test_count, align 4, !tbaa !5
  %729 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_client_signature_algorithms_extension, i32 0, i32 3), align 8, !tbaa !44
  %730 = load ptr, ptr %19, align 8, !tbaa !9
  %731 = call i32 %729(ptr noundef %730, ptr noundef %21)
  %732 = icmp eq i32 %731, -1
  br i1 %732, label %733, label %786

733:                                              ; preds = %726
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %736 = call ptr @__errno_location() #10
  %737 = load i32, ptr %736, align 4, !tbaa !5
  store i32 %737, ptr %23, align 4, !tbaa !5
  %738 = load ptr, ptr @stderr, align 8, !tbaa !9
  %739 = call i32 @s2n_print_stacktrace(ptr noundef %738)
  %740 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %741 = trunc i8 %740 to i1
  br i1 %741, label %742, label %764

742:                                              ; preds = %735
  %743 = load ptr, ptr @stderr, align 8, !tbaa !9
  %744 = call i32 @fileno(ptr noundef %743) #9
  %745 = call i32 @isatty(i32 noundef %744) #9
  %746 = icmp ne i32 %745, 0
  br i1 %746, label %747, label %764

747:                                              ; preds = %742
  %748 = load i32, ptr %23, align 4, !tbaa !5
  %749 = call ptr @__errno_location() #10
  store i32 %748, ptr %749, align 4, !tbaa !5
  %750 = load ptr, ptr @stderr, align 8, !tbaa !9
  %751 = load i32, ptr @test_count, align 4, !tbaa !5
  %752 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %753 = load i32, ptr %752, align 4, !tbaa !5
  %754 = call ptr @s2n_strerror(i32 noundef %753, ptr noundef @.str.4)
  %755 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %756 = load i32, ptr %755, align 4, !tbaa !5
  %757 = call ptr @s2n_strerror_debug(i32 noundef %756, ptr noundef @.str.4)
  %758 = call ptr @__errno_location() #10
  %759 = load i32, ptr %758, align 4, !tbaa !5
  %760 = call ptr @strerror(i32 noundef %759) #9
  %761 = call ptr @__errno_location() #10
  %762 = load i32, ptr %761, align 4, !tbaa !5
  %763 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %750, ptr noundef @.str.2, i32 noundef %751, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 63, ptr noundef %754, ptr noundef %757, ptr noundef %760, i32 noundef %762) #9
  br label %781

764:                                              ; preds = %742, %735
  %765 = load i32, ptr %23, align 4, !tbaa !5
  %766 = call ptr @__errno_location() #10
  store i32 %765, ptr %766, align 4, !tbaa !5
  %767 = load ptr, ptr @stderr, align 8, !tbaa !9
  %768 = load i32, ptr @test_count, align 4, !tbaa !5
  %769 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %770 = load i32, ptr %769, align 4, !tbaa !5
  %771 = call ptr @s2n_strerror(i32 noundef %770, ptr noundef @.str.4)
  %772 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %773 = load i32, ptr %772, align 4, !tbaa !5
  %774 = call ptr @s2n_strerror_debug(i32 noundef %773, ptr noundef @.str.4)
  %775 = call ptr @__errno_location() #10
  %776 = load i32, ptr %775, align 4, !tbaa !5
  %777 = call ptr @strerror(i32 noundef %776) #9
  %778 = call ptr @__errno_location() #10
  %779 = load i32, ptr %778, align 4, !tbaa !5
  %780 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %767, ptr noundef @.str.5, i32 noundef %768, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 63, ptr noundef %771, ptr noundef %774, ptr noundef %777, i32 noundef %779) #9
  br label %781

781:                                              ; preds = %764, %747
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %782

782:                                              ; preds = %781
  br label %783

783:                                              ; preds = %782
  call void @exit(i32 noundef 1) #11
  unreachable

784:                                              ; No predecessors!
  br label %785

785:                                              ; preds = %784
  br label %786

786:                                              ; preds = %785, %726
  br label %787

787:                                              ; preds = %786
  br label %788

788:                                              ; preds = %787
  br label %789

789:                                              ; preds = %788
  %790 = load i32, ptr @test_count, align 4, !tbaa !5
  %791 = add nsw i32 %790, 1
  store i32 %791, ptr @test_count, align 4, !tbaa !5
  %792 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_client_signature_algorithms_extension, i32 0, i32 4), align 8, !tbaa !45
  %793 = load ptr, ptr %20, align 8, !tbaa !9
  %794 = call i32 %792(ptr noundef %793, ptr noundef %21)
  %795 = icmp eq i32 %794, -1
  br i1 %795, label %796, label %849

796:                                              ; preds = %789
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %799 = call ptr @__errno_location() #10
  %800 = load i32, ptr %799, align 4, !tbaa !5
  store i32 %800, ptr %24, align 4, !tbaa !5
  %801 = load ptr, ptr @stderr, align 8, !tbaa !9
  %802 = call i32 @s2n_print_stacktrace(ptr noundef %801)
  %803 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %804 = trunc i8 %803 to i1
  br i1 %804, label %805, label %827

805:                                              ; preds = %798
  %806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %807 = call i32 @fileno(ptr noundef %806) #9
  %808 = call i32 @isatty(i32 noundef %807) #9
  %809 = icmp ne i32 %808, 0
  br i1 %809, label %810, label %827

810:                                              ; preds = %805
  %811 = load i32, ptr %24, align 4, !tbaa !5
  %812 = call ptr @__errno_location() #10
  store i32 %811, ptr %812, align 4, !tbaa !5
  %813 = load ptr, ptr @stderr, align 8, !tbaa !9
  %814 = load i32, ptr @test_count, align 4, !tbaa !5
  %815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %816 = load i32, ptr %815, align 4, !tbaa !5
  %817 = call ptr @s2n_strerror(i32 noundef %816, ptr noundef @.str.4)
  %818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %819 = load i32, ptr %818, align 4, !tbaa !5
  %820 = call ptr @s2n_strerror_debug(i32 noundef %819, ptr noundef @.str.4)
  %821 = call ptr @__errno_location() #10
  %822 = load i32, ptr %821, align 4, !tbaa !5
  %823 = call ptr @strerror(i32 noundef %822) #9
  %824 = call ptr @__errno_location() #10
  %825 = load i32, ptr %824, align 4, !tbaa !5
  %826 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %813, ptr noundef @.str.2, i32 noundef %814, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 64, ptr noundef %817, ptr noundef %820, ptr noundef %823, i32 noundef %825) #9
  br label %844

827:                                              ; preds = %805, %798
  %828 = load i32, ptr %24, align 4, !tbaa !5
  %829 = call ptr @__errno_location() #10
  store i32 %828, ptr %829, align 4, !tbaa !5
  %830 = load ptr, ptr @stderr, align 8, !tbaa !9
  %831 = load i32, ptr @test_count, align 4, !tbaa !5
  %832 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %833 = load i32, ptr %832, align 4, !tbaa !5
  %834 = call ptr @s2n_strerror(i32 noundef %833, ptr noundef @.str.4)
  %835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %836 = load i32, ptr %835, align 4, !tbaa !5
  %837 = call ptr @s2n_strerror_debug(i32 noundef %836, ptr noundef @.str.4)
  %838 = call ptr @__errno_location() #10
  %839 = load i32, ptr %838, align 4, !tbaa !5
  %840 = call ptr @strerror(i32 noundef %839) #9
  %841 = call ptr @__errno_location() #10
  %842 = load i32, ptr %841, align 4, !tbaa !5
  %843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %830, ptr noundef @.str.5, i32 noundef %831, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 64, ptr noundef %834, ptr noundef %837, ptr noundef %840, i32 noundef %842) #9
  br label %844

844:                                              ; preds = %827, %810
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %845

845:                                              ; preds = %844
  br label %846

846:                                              ; preds = %845
  call void @exit(i32 noundef 1) #11
  unreachable

847:                                              ; No predecessors!
  br label %848

848:                                              ; preds = %847
  br label %849

849:                                              ; preds = %848, %789
  br label %850

850:                                              ; preds = %849
  br label %851

851:                                              ; preds = %850
  br label %852

852:                                              ; preds = %851
  %853 = load i32, ptr @test_count, align 4, !tbaa !5
  %854 = add nsw i32 %853, 1
  store i32 %854, ptr @test_count, align 4, !tbaa !5
  %855 = getelementptr inbounds %struct.s2n_stuffer, ptr %21, i32 0, i32 2
  %856 = load i32, ptr %855, align 4, !tbaa !46
  %857 = getelementptr inbounds %struct.s2n_stuffer, ptr %21, i32 0, i32 1
  %858 = load i32, ptr %857, align 8, !tbaa !47
  %859 = sub i32 %856, %858
  %860 = icmp eq i32 %859, 0
  br i1 %860, label %914, label %861

861:                                              ; preds = %852
  br label %862

862:                                              ; preds = %861
  br label %863

863:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %864 = call ptr @__errno_location() #10
  %865 = load i32, ptr %864, align 4, !tbaa !5
  store i32 %865, ptr %25, align 4, !tbaa !5
  %866 = load ptr, ptr @stderr, align 8, !tbaa !9
  %867 = call i32 @s2n_print_stacktrace(ptr noundef %866)
  %868 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %869 = trunc i8 %868 to i1
  br i1 %869, label %870, label %892

870:                                              ; preds = %863
  %871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %872 = call i32 @fileno(ptr noundef %871) #9
  %873 = call i32 @isatty(i32 noundef %872) #9
  %874 = icmp ne i32 %873, 0
  br i1 %874, label %875, label %892

875:                                              ; preds = %870
  %876 = load i32, ptr %25, align 4, !tbaa !5
  %877 = call ptr @__errno_location() #10
  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.4)
  %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.4)
  %886 = call ptr @__errno_location() #10
  %887 = load i32, ptr %886, align 4, !tbaa !5
  %888 = call ptr @strerror(i32 noundef %887) #9
  %889 = call ptr @__errno_location() #10
  %890 = load i32, ptr %889, align 4, !tbaa !5
  %891 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %878, ptr noundef @.str.2, i32 noundef %879, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 65, ptr noundef %882, ptr noundef %885, ptr noundef %888, i32 noundef %890) #9
  br label %909

892:                                              ; preds = %870, %863
  %893 = load i32, ptr %25, align 4, !tbaa !5
  %894 = call ptr @__errno_location() #10
  store i32 %893, ptr %894, align 4, !tbaa !5
  %895 = load ptr, ptr @stderr, align 8, !tbaa !9
  %896 = load i32, ptr @test_count, align 4, !tbaa !5
  %897 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %898 = load i32, ptr %897, align 4, !tbaa !5
  %899 = call ptr @s2n_strerror(i32 noundef %898, ptr noundef @.str.4)
  %900 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %901 = load i32, ptr %900, align 4, !tbaa !5
  %902 = call ptr @s2n_strerror_debug(i32 noundef %901, ptr noundef @.str.4)
  %903 = call ptr @__errno_location() #10
  %904 = load i32, ptr %903, align 4, !tbaa !5
  %905 = call ptr @strerror(i32 noundef %904) #9
  %906 = call ptr @__errno_location() #10
  %907 = load i32, ptr %906, align 4, !tbaa !5
  %908 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %895, ptr noundef @.str.5, i32 noundef %896, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 65, ptr noundef %899, ptr noundef %902, ptr noundef %905, i32 noundef %907) #9
  br label %909

909:                                              ; preds = %892, %875
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %910

910:                                              ; preds = %909
  br label %911

911:                                              ; preds = %910
  call void @exit(i32 noundef 1) #11
  unreachable

912:                                              ; No predecessors!
  br label %913

913:                                              ; preds = %912
  br label %914

914:                                              ; preds = %913, %852
  br label %915

915:                                              ; preds = %914
  br label %916

916:                                              ; preds = %915
  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 = load ptr, ptr %20, align 8, !tbaa !9
  %921 = getelementptr inbounds %struct.s2n_connection, ptr %920, i32 0, i32 32
  %922 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %921, i32 0, i32 4
  %923 = getelementptr inbounds %struct.s2n_sig_scheme_list, ptr %922, i32 0, i32 1
  %924 = load i8, ptr %923, align 4, !tbaa !48
  %925 = zext i8 %924 to i32
  %926 = icmp sgt i32 %925, 0
  br i1 %926, label %980, label %927

927:                                              ; preds = %917
  br label %928

928:                                              ; preds = %927
  br label %929

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

936:                                              ; preds = %929
  %937 = load ptr, ptr @stderr, align 8, !tbaa !9
  %938 = call i32 @fileno(ptr noundef %937) #9
  %939 = call i32 @isatty(i32 noundef %938) #9
  %940 = icmp ne i32 %939, 0
  br i1 %940, label %941, label %958

941:                                              ; preds = %936
  %942 = load i32, ptr %26, align 4, !tbaa !5
  %943 = call ptr @__errno_location() #10
  store i32 %942, ptr %943, align 4, !tbaa !5
  %944 = load ptr, ptr @stderr, align 8, !tbaa !9
  %945 = load i32, ptr @test_count, align 4, !tbaa !5
  %946 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %947 = load i32, ptr %946, align 4, !tbaa !5
  %948 = call ptr @s2n_strerror(i32 noundef %947, ptr noundef @.str.4)
  %949 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %950 = load i32, ptr %949, align 4, !tbaa !5
  %951 = call ptr @s2n_strerror_debug(i32 noundef %950, ptr noundef @.str.4)
  %952 = call ptr @__errno_location() #10
  %953 = load i32, ptr %952, align 4, !tbaa !5
  %954 = call ptr @strerror(i32 noundef %953) #9
  %955 = call ptr @__errno_location() #10
  %956 = load i32, ptr %955, align 4, !tbaa !5
  %957 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %944, ptr noundef @.str.2, i32 noundef %945, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 67, ptr noundef %948, ptr noundef %951, ptr noundef %954, i32 noundef %956) #9
  br label %975

958:                                              ; preds = %936, %929
  %959 = load i32, ptr %26, align 4, !tbaa !5
  %960 = call ptr @__errno_location() #10
  store i32 %959, ptr %960, align 4, !tbaa !5
  %961 = load ptr, ptr @stderr, align 8, !tbaa !9
  %962 = load i32, ptr @test_count, align 4, !tbaa !5
  %963 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %964 = load i32, ptr %963, align 4, !tbaa !5
  %965 = call ptr @s2n_strerror(i32 noundef %964, ptr noundef @.str.4)
  %966 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %967 = load i32, ptr %966, align 4, !tbaa !5
  %968 = call ptr @s2n_strerror_debug(i32 noundef %967, ptr noundef @.str.4)
  %969 = call ptr @__errno_location() #10
  %970 = load i32, ptr %969, align 4, !tbaa !5
  %971 = call ptr @strerror(i32 noundef %970) #9
  %972 = call ptr @__errno_location() #10
  %973 = load i32, ptr %972, align 4, !tbaa !5
  %974 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %961, ptr noundef @.str.5, i32 noundef %962, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 67, ptr noundef %965, ptr noundef %968, ptr noundef %971, i32 noundef %973) #9
  br label %975

975:                                              ; preds = %958, %941
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %976

976:                                              ; preds = %975
  br label %977

977:                                              ; preds = %976
  call void @exit(i32 noundef 1) #11
  unreachable

978:                                              ; No predecessors!
  br label %979

979:                                              ; preds = %978
  br label %980

980:                                              ; preds = %979, %917
  br label %981

981:                                              ; preds = %980
  br label %982

982:                                              ; preds = %981
  %983 = call i32 @s2n_stuffer_free(ptr noundef %21)
  %984 = load ptr, ptr %19, align 8, !tbaa !9
  %985 = call i32 @s2n_connection_free(ptr noundef %984)
  %986 = load ptr, ptr %20, align 8, !tbaa !9
  %987 = call i32 @s2n_connection_free(ptr noundef %986)
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 258, ptr %27) #9
  call void @llvm.memset.p0.i64(ptr align 2 %27, i8 0, i64 258, i1 false)
  %988 = getelementptr inbounds { <{ i16, i16, i16, [125 x i16] }>, i8, i8 }, ptr %27, i32 0, i32 0
  %989 = getelementptr inbounds <{ i16, i16, i16, [125 x i16] }>, ptr %988, i32 0, i32 0
  store i16 -255, ptr %989, align 2
  %990 = getelementptr inbounds <{ i16, i16, i16, [125 x i16] }>, ptr %988, i32 0, i32 1
  store i16 -1, ptr %990, align 2
  %991 = getelementptr inbounds <{ i16, i16, i16, [125 x i16] }>, ptr %988, i32 0, i32 2
  store i16 1281, ptr %991, align 2
  %992 = getelementptr inbounds { <{ i16, i16, i16, [125 x i16] }>, i8, i8 }, ptr %27, i32 0, i32 1
  store i8 3, ptr %992, align 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  store ptr null, ptr %28, align 8, !tbaa !9
  br label %993

993:                                              ; preds = %982
  %994 = load i32, ptr @test_count, align 4, !tbaa !5
  %995 = add nsw i32 %994, 1
  store i32 %995, ptr @test_count, align 4, !tbaa !5
  %996 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %996, ptr %28, align 8, !tbaa !9
  %997 = icmp eq ptr %996, null
  br i1 %997, label %998, label %1051

998:                                              ; preds = %993
  br label %999

999:                                              ; preds = %998
  br label %1000

1000:                                             ; preds = %999
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %1001 = call ptr @__errno_location() #10
  %1002 = load i32, ptr %1001, align 4, !tbaa !5
  store i32 %1002, ptr %29, align 4, !tbaa !5
  %1003 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1004 = call i32 @s2n_print_stacktrace(ptr noundef %1003)
  %1005 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1006 = trunc i8 %1005 to i1
  br i1 %1006, label %1007, label %1029

1007:                                             ; preds = %1000
  %1008 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1009 = call i32 @fileno(ptr noundef %1008) #9
  %1010 = call i32 @isatty(i32 noundef %1009) #9
  %1011 = icmp ne i32 %1010, 0
  br i1 %1011, label %1012, label %1029

1012:                                             ; preds = %1007
  %1013 = load i32, ptr %29, align 4, !tbaa !5
  %1014 = call ptr @__errno_location() #10
  store i32 %1013, ptr %1014, align 4, !tbaa !5
  %1015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1016 = load i32, ptr @test_count, align 4, !tbaa !5
  %1017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1018 = load i32, ptr %1017, align 4, !tbaa !5
  %1019 = call ptr @s2n_strerror(i32 noundef %1018, ptr noundef @.str.4)
  %1020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1021 = load i32, ptr %1020, align 4, !tbaa !5
  %1022 = call ptr @s2n_strerror_debug(i32 noundef %1021, ptr noundef @.str.4)
  %1023 = call ptr @__errno_location() #10
  %1024 = load i32, ptr %1023, align 4, !tbaa !5
  %1025 = call ptr @strerror(i32 noundef %1024) #9
  %1026 = call ptr @__errno_location() #10
  %1027 = load i32, ptr %1026, align 4, !tbaa !5
  %1028 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1015, ptr noundef @.str.2, i32 noundef %1016, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 81, ptr noundef %1019, ptr noundef %1022, ptr noundef %1025, i32 noundef %1027) #9
  br label %1046

1029:                                             ; preds = %1007, %1000
  %1030 = load i32, ptr %29, align 4, !tbaa !5
  %1031 = call ptr @__errno_location() #10
  store i32 %1030, ptr %1031, align 4, !tbaa !5
  %1032 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1033 = load i32, ptr @test_count, align 4, !tbaa !5
  %1034 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1035 = load i32, ptr %1034, align 4, !tbaa !5
  %1036 = call ptr @s2n_strerror(i32 noundef %1035, ptr noundef @.str.4)
  %1037 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1038 = load i32, ptr %1037, align 4, !tbaa !5
  %1039 = call ptr @s2n_strerror_debug(i32 noundef %1038, ptr noundef @.str.4)
  %1040 = call ptr @__errno_location() #10
  %1041 = load i32, ptr %1040, align 4, !tbaa !5
  %1042 = call ptr @strerror(i32 noundef %1041) #9
  %1043 = call ptr @__errno_location() #10
  %1044 = load i32, ptr %1043, align 4, !tbaa !5
  %1045 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1032, ptr noundef @.str.5, i32 noundef %1033, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 81, ptr noundef %1036, ptr noundef %1039, ptr noundef %1042, i32 noundef %1044) #9
  br label %1046

1046:                                             ; preds = %1029, %1012
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  br label %1047

1047:                                             ; preds = %1046
  br label %1048

1048:                                             ; preds = %1047
  call void @exit(i32 noundef 1) #11
  unreachable

1049:                                             ; No predecessors!
  br label %1050

1050:                                             ; preds = %1049
  br label %1051

1051:                                             ; preds = %1050, %993
  br label %1052

1052:                                             ; preds = %1051
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

1054:                                             ; preds = %1053
  %1055 = load ptr, ptr %28, align 8, !tbaa !9
  %1056 = load ptr, ptr %10, align 8, !tbaa !9
  %1057 = call i32 @s2n_connection_set_config(ptr noundef %1055, ptr noundef %1056)
  %1058 = icmp sgt i32 %1057, -1
  br i1 %1058, label %1060, label %1059

1059:                                             ; preds = %1054
  store i32 -1, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1661

1060:                                             ; preds = %1054
  br label %1061

1061:                                             ; preds = %1060
  br label %1062

1062:                                             ; preds = %1061
  %1063 = load ptr, ptr %28, align 8, !tbaa !9
  %1064 = getelementptr inbounds %struct.s2n_connection, ptr %1063, i32 0, i32 23
  store i8 33, ptr %1064, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 40, ptr %31) #9
  call void @llvm.memset.p0.i64(ptr align 8 %31, i8 0, i64 40, i1 false)
  br label %1065

1065:                                             ; preds = %1062
  %1066 = load i32, ptr @test_count, align 4, !tbaa !5
  %1067 = add nsw i32 %1066, 1
  store i32 %1067, ptr @test_count, align 4, !tbaa !5
  %1068 = getelementptr inbounds %struct.s2n_sig_scheme_list, ptr %27, i32 0, i32 1
  %1069 = load i8, ptr %1068, align 2, !tbaa !49
  %1070 = zext i8 %1069 to i32
  %1071 = mul nsw i32 %1070, 2
  %1072 = add nsw i32 2, %1071
  %1073 = call i32 @s2n_stuffer_alloc(ptr noundef %31, i32 noundef %1072)
  %1074 = icmp eq i32 %1073, -1
  br i1 %1074, label %1075, label %1128

1075:                                             ; preds = %1065
  br label %1076

1076:                                             ; preds = %1075
  br label %1077

1077:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  %1078 = call ptr @__errno_location() #10
  %1079 = load i32, ptr %1078, align 4, !tbaa !5
  store i32 %1079, ptr %32, align 4, !tbaa !5
  %1080 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1081 = call i32 @s2n_print_stacktrace(ptr noundef %1080)
  %1082 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1083 = trunc i8 %1082 to i1
  br i1 %1083, label %1084, label %1106

1084:                                             ; preds = %1077
  %1085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1086 = call i32 @fileno(ptr noundef %1085) #9
  %1087 = call i32 @isatty(i32 noundef %1086) #9
  %1088 = icmp ne i32 %1087, 0
  br i1 %1088, label %1089, label %1106

1089:                                             ; preds = %1084
  %1090 = load i32, ptr %32, align 4, !tbaa !5
  %1091 = call ptr @__errno_location() #10
  store i32 %1090, ptr %1091, align 4, !tbaa !5
  %1092 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1093 = load i32, ptr @test_count, align 4, !tbaa !5
  %1094 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1095 = load i32, ptr %1094, align 4, !tbaa !5
  %1096 = call ptr @s2n_strerror(i32 noundef %1095, ptr noundef @.str.4)
  %1097 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1098 = load i32, ptr %1097, align 4, !tbaa !5
  %1099 = call ptr @s2n_strerror_debug(i32 noundef %1098, ptr noundef @.str.4)
  %1100 = call ptr @__errno_location() #10
  %1101 = load i32, ptr %1100, align 4, !tbaa !5
  %1102 = call ptr @strerror(i32 noundef %1101) #9
  %1103 = call ptr @__errno_location() #10
  %1104 = load i32, ptr %1103, align 4, !tbaa !5
  %1105 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1092, ptr noundef @.str.2, i32 noundef %1093, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 86, ptr noundef %1096, ptr noundef %1099, ptr noundef %1102, i32 noundef %1104) #9
  br label %1123

1106:                                             ; preds = %1084, %1077
  %1107 = load i32, ptr %32, align 4, !tbaa !5
  %1108 = call ptr @__errno_location() #10
  store i32 %1107, ptr %1108, align 4, !tbaa !5
  %1109 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1110 = load i32, ptr @test_count, align 4, !tbaa !5
  %1111 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1112 = load i32, ptr %1111, align 4, !tbaa !5
  %1113 = call ptr @s2n_strerror(i32 noundef %1112, ptr noundef @.str.4)
  %1114 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1115 = load i32, ptr %1114, align 4, !tbaa !5
  %1116 = call ptr @s2n_strerror_debug(i32 noundef %1115, ptr noundef @.str.4)
  %1117 = call ptr @__errno_location() #10
  %1118 = load i32, ptr %1117, align 4, !tbaa !5
  %1119 = call ptr @strerror(i32 noundef %1118) #9
  %1120 = call ptr @__errno_location() #10
  %1121 = load i32, ptr %1120, align 4, !tbaa !5
  %1122 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1109, ptr noundef @.str.5, i32 noundef %1110, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 86, ptr noundef %1113, ptr noundef %1116, ptr noundef %1119, i32 noundef %1121) #9
  br label %1123

1123:                                             ; preds = %1106, %1089
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %1124

1124:                                             ; preds = %1123
  br label %1125

1125:                                             ; preds = %1124
  call void @exit(i32 noundef 1) #11
  unreachable

1126:                                             ; No predecessors!
  br label %1127

1127:                                             ; preds = %1126
  br label %1128

1128:                                             ; preds = %1127, %1065
  br label %1129

1129:                                             ; preds = %1128
  br label %1130

1130:                                             ; preds = %1129
  br label %1131

1131:                                             ; preds = %1130
  %1132 = load i32, ptr @test_count, align 4, !tbaa !5
  %1133 = add nsw i32 %1132, 1
  store i32 %1133, ptr @test_count, align 4, !tbaa !5
  %1134 = getelementptr inbounds %struct.s2n_sig_scheme_list, ptr %27, i32 0, i32 1
  %1135 = load i8, ptr %1134, align 2, !tbaa !49
  %1136 = zext i8 %1135 to i32
  %1137 = mul nsw i32 %1136, 2
  %1138 = trunc i32 %1137 to i16
  %1139 = call i32 @s2n_stuffer_write_uint16(ptr noundef %31, i16 noundef zeroext %1138)
  %1140 = icmp eq i32 %1139, -1
  br i1 %1140, label %1141, label %1194

1141:                                             ; preds = %1131
  br label %1142

1142:                                             ; preds = %1141
  br label %1143

1143:                                             ; preds = %1142
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  %1144 = call ptr @__errno_location() #10
  %1145 = load i32, ptr %1144, align 4, !tbaa !5
  store i32 %1145, ptr %33, align 4, !tbaa !5
  %1146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1147 = call i32 @s2n_print_stacktrace(ptr noundef %1146)
  %1148 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1149 = trunc i8 %1148 to i1
  br i1 %1149, label %1150, label %1172

1150:                                             ; preds = %1143
  %1151 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1152 = call i32 @fileno(ptr noundef %1151) #9
  %1153 = call i32 @isatty(i32 noundef %1152) #9
  %1154 = icmp ne i32 %1153, 0
  br i1 %1154, label %1155, label %1172

1155:                                             ; preds = %1150
  %1156 = load i32, ptr %33, align 4, !tbaa !5
  %1157 = call ptr @__errno_location() #10
  store i32 %1156, ptr %1157, align 4, !tbaa !5
  %1158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1159 = load i32, ptr @test_count, align 4, !tbaa !5
  %1160 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1161 = load i32, ptr %1160, align 4, !tbaa !5
  %1162 = call ptr @s2n_strerror(i32 noundef %1161, ptr noundef @.str.4)
  %1163 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1164 = load i32, ptr %1163, align 4, !tbaa !5
  %1165 = call ptr @s2n_strerror_debug(i32 noundef %1164, ptr noundef @.str.4)
  %1166 = call ptr @__errno_location() #10
  %1167 = load i32, ptr %1166, align 4, !tbaa !5
  %1168 = call ptr @strerror(i32 noundef %1167) #9
  %1169 = call ptr @__errno_location() #10
  %1170 = load i32, ptr %1169, align 4, !tbaa !5
  %1171 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1158, ptr noundef @.str.2, i32 noundef %1159, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 87, ptr noundef %1162, ptr noundef %1165, ptr noundef %1168, i32 noundef %1170) #9
  br label %1189

1172:                                             ; preds = %1150, %1143
  %1173 = load i32, ptr %33, align 4, !tbaa !5
  %1174 = call ptr @__errno_location() #10
  store i32 %1173, ptr %1174, align 4, !tbaa !5
  %1175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1176 = load i32, ptr @test_count, align 4, !tbaa !5
  %1177 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  %1179 = call ptr @s2n_strerror(i32 noundef %1178, ptr noundef @.str.4)
  %1180 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1181 = load i32, ptr %1180, align 4, !tbaa !5
  %1182 = call ptr @s2n_strerror_debug(i32 noundef %1181, ptr noundef @.str.4)
  %1183 = call ptr @__errno_location() #10
  %1184 = load i32, ptr %1183, align 4, !tbaa !5
  %1185 = call ptr @strerror(i32 noundef %1184) #9
  %1186 = call ptr @__errno_location() #10
  %1187 = load i32, ptr %1186, align 4, !tbaa !5
  %1188 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1175, ptr noundef @.str.5, i32 noundef %1176, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 87, ptr noundef %1179, ptr noundef %1182, ptr noundef %1185, i32 noundef %1187) #9
  br label %1189

1189:                                             ; preds = %1172, %1155
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %1190

1190:                                             ; preds = %1189
  br label %1191

1191:                                             ; preds = %1190
  call void @exit(i32 noundef 1) #11
  unreachable

1192:                                             ; No predecessors!
  br label %1193

1193:                                             ; preds = %1192
  br label %1194

1194:                                             ; preds = %1193, %1131
  br label %1195

1195:                                             ; preds = %1194
  br label %1196

1196:                                             ; preds = %1195
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  store i64 0, ptr %34, align 8, !tbaa !50
  br label %1197

1197:                                             ; preds = %1270, %1196
  %1198 = load i64, ptr %34, align 8, !tbaa !50
  %1199 = getelementptr inbounds %struct.s2n_sig_scheme_list, ptr %27, i32 0, i32 1
  %1200 = load i8, ptr %1199, align 2, !tbaa !49
  %1201 = zext i8 %1200 to i64
  %1202 = icmp ult i64 %1198, %1201
  br i1 %1202, label %1204, label %1203

1203:                                             ; preds = %1197
  store i32 116, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %1273

1204:                                             ; preds = %1197
  br label %1205

1205:                                             ; preds = %1204
  %1206 = load i32, ptr @test_count, align 4, !tbaa !5
  %1207 = add nsw i32 %1206, 1
  store i32 %1207, ptr @test_count, align 4, !tbaa !5
  %1208 = getelementptr inbounds %struct.s2n_sig_scheme_list, ptr %27, i32 0, i32 0
  %1209 = load i64, ptr %34, align 8, !tbaa !50
  %1210 = getelementptr inbounds [128 x i16], ptr %1208, i64 0, i64 %1209
  %1211 = load i16, ptr %1210, align 2, !tbaa !51
  %1212 = call i32 @s2n_stuffer_write_uint16(ptr noundef %31, i16 noundef zeroext %1211)
  %1213 = icmp eq i32 %1212, -1
  br i1 %1213, label %1214, label %1267

1214:                                             ; preds = %1205
  br label %1215

1215:                                             ; preds = %1214
  br label %1216

1216:                                             ; preds = %1215
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  %1217 = call ptr @__errno_location() #10
  %1218 = load i32, ptr %1217, align 4, !tbaa !5
  store i32 %1218, ptr %35, align 4, !tbaa !5
  %1219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1220 = call i32 @s2n_print_stacktrace(ptr noundef %1219)
  %1221 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1222 = trunc i8 %1221 to i1
  br i1 %1222, label %1223, label %1245

1223:                                             ; preds = %1216
  %1224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1225 = call i32 @fileno(ptr noundef %1224) #9
  %1226 = call i32 @isatty(i32 noundef %1225) #9
  %1227 = icmp ne i32 %1226, 0
  br i1 %1227, label %1228, label %1245

1228:                                             ; preds = %1223
  %1229 = load i32, ptr %35, align 4, !tbaa !5
  %1230 = call ptr @__errno_location() #10
  store i32 %1229, ptr %1230, align 4, !tbaa !5
  %1231 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1232 = load i32, ptr @test_count, align 4, !tbaa !5
  %1233 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1234 = load i32, ptr %1233, align 4, !tbaa !5
  %1235 = call ptr @s2n_strerror(i32 noundef %1234, ptr noundef @.str.4)
  %1236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1237 = load i32, ptr %1236, align 4, !tbaa !5
  %1238 = call ptr @s2n_strerror_debug(i32 noundef %1237, ptr noundef @.str.4)
  %1239 = call ptr @__errno_location() #10
  %1240 = load i32, ptr %1239, align 4, !tbaa !5
  %1241 = call ptr @strerror(i32 noundef %1240) #9
  %1242 = call ptr @__errno_location() #10
  %1243 = load i32, ptr %1242, align 4, !tbaa !5
  %1244 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1231, ptr noundef @.str.2, i32 noundef %1232, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 89, ptr noundef %1235, ptr noundef %1238, ptr noundef %1241, i32 noundef %1243) #9
  br label %1262

1245:                                             ; preds = %1223, %1216
  %1246 = load i32, ptr %35, align 4, !tbaa !5
  %1247 = call ptr @__errno_location() #10
  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.4)
  %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.4)
  %1256 = call ptr @__errno_location() #10
  %1257 = load i32, ptr %1256, align 4, !tbaa !5
  %1258 = call ptr @strerror(i32 noundef %1257) #9
  %1259 = call ptr @__errno_location() #10
  %1260 = load i32, ptr %1259, align 4, !tbaa !5
  %1261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1248, ptr noundef @.str.5, i32 noundef %1249, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 89, ptr noundef %1252, ptr noundef %1255, ptr noundef %1258, i32 noundef %1260) #9
  br label %1262

1262:                                             ; preds = %1245, %1228
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  br label %1263

1263:                                             ; preds = %1262
  br label %1264

1264:                                             ; preds = %1263
  call void @exit(i32 noundef 1) #11
  unreachable

1265:                                             ; No predecessors!
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

1267:                                             ; preds = %1266, %1205
  br label %1268

1268:                                             ; preds = %1267
  br label %1269

1269:                                             ; preds = %1268
  br label %1270

1270:                                             ; preds = %1269
  %1271 = load i64, ptr %34, align 8, !tbaa !50
  %1272 = add i64 %1271, 1
  store i64 %1272, ptr %34, align 8, !tbaa !50
  br label %1197, !llvm.loop !52

1273:                                             ; preds = %1203
  br label %1274

1274:                                             ; preds = %1273
  %1275 = load i32, ptr @test_count, align 4, !tbaa !5
  %1276 = add nsw i32 %1275, 1
  store i32 %1276, ptr @test_count, align 4, !tbaa !5
  %1277 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_client_signature_algorithms_extension, i32 0, i32 4), align 8, !tbaa !45
  %1278 = load ptr, ptr %28, align 8, !tbaa !9
  %1279 = call i32 %1277(ptr noundef %1278, ptr noundef %31)
  %1280 = icmp eq i32 %1279, -1
  br i1 %1280, label %1281, label %1334

1281:                                             ; preds = %1274
  br label %1282

1282:                                             ; preds = %1281
  br label %1283

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

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

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

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

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

1330:                                             ; preds = %1329
  br label %1331

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

1332:                                             ; No predecessors!
  br label %1333

1333:                                             ; preds = %1332
  br label %1334

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

1335:                                             ; preds = %1334
  br label %1336

1336:                                             ; preds = %1335
  br label %1337

1337:                                             ; preds = %1336
  %1338 = load i32, ptr @test_count, align 4, !tbaa !5
  %1339 = add nsw i32 %1338, 1
  store i32 %1339, ptr @test_count, align 4, !tbaa !5
  %1340 = load ptr, ptr %28, align 8, !tbaa !9
  %1341 = getelementptr inbounds %struct.s2n_connection, ptr %1340, i32 0, i32 32
  %1342 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %1341, i32 0, i32 4
  %1343 = getelementptr inbounds %struct.s2n_sig_scheme_list, ptr %1342, i32 0, i32 1
  %1344 = load i8, ptr %1343, align 4, !tbaa !48
  %1345 = zext i8 %1344 to i32
  %1346 = getelementptr inbounds %struct.s2n_sig_scheme_list, ptr %27, i32 0, i32 1
  %1347 = load i8, ptr %1346, align 2, !tbaa !49
  %1348 = zext i8 %1347 to i32
  %1349 = icmp eq i32 %1345, %1348
  br i1 %1349, label %1403, label %1350

1350:                                             ; preds = %1337
  br label %1351

1351:                                             ; preds = %1350
  br label %1352

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

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

1364:                                             ; preds = %1359
  %1365 = load i32, ptr %37, align 4, !tbaa !5
  %1366 = call ptr @__errno_location() #10
  store i32 %1365, ptr %1366, align 4, !tbaa !5
  %1367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1368 = load i32, ptr @test_count, align 4, !tbaa !5
  %1369 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1370 = load i32, ptr %1369, align 4, !tbaa !5
  %1371 = call ptr @s2n_strerror(i32 noundef %1370, ptr noundef @.str.4)
  %1372 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1373 = load i32, ptr %1372, align 4, !tbaa !5
  %1374 = call ptr @s2n_strerror_debug(i32 noundef %1373, ptr noundef @.str.4)
  %1375 = call ptr @__errno_location() #10
  %1376 = load i32, ptr %1375, align 4, !tbaa !5
  %1377 = call ptr @strerror(i32 noundef %1376) #9
  %1378 = call ptr @__errno_location() #10
  %1379 = load i32, ptr %1378, align 4, !tbaa !5
  %1380 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1367, ptr noundef @.str.2, i32 noundef %1368, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 94, ptr noundef %1371, ptr noundef %1374, ptr noundef %1377, i32 noundef %1379) #9
  br label %1398

1381:                                             ; preds = %1359, %1352
  %1382 = load i32, ptr %37, align 4, !tbaa !5
  %1383 = call ptr @__errno_location() #10
  store i32 %1382, ptr %1383, align 4, !tbaa !5
  %1384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1385 = load i32, ptr @test_count, align 4, !tbaa !5
  %1386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1387 = load i32, ptr %1386, align 4, !tbaa !5
  %1388 = call ptr @s2n_strerror(i32 noundef %1387, ptr noundef @.str.4)
  %1389 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1390 = load i32, ptr %1389, align 4, !tbaa !5
  %1391 = call ptr @s2n_strerror_debug(i32 noundef %1390, ptr noundef @.str.4)
  %1392 = call ptr @__errno_location() #10
  %1393 = load i32, ptr %1392, align 4, !tbaa !5
  %1394 = call ptr @strerror(i32 noundef %1393) #9
  %1395 = call ptr @__errno_location() #10
  %1396 = load i32, ptr %1395, align 4, !tbaa !5
  %1397 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1384, ptr noundef @.str.5, i32 noundef %1385, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 94, ptr noundef %1388, ptr noundef %1391, ptr noundef %1394, i32 noundef %1396) #9
  br label %1398

1398:                                             ; preds = %1381, %1364
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %1399

1399:                                             ; preds = %1398
  br label %1400

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

1401:                                             ; No predecessors!
  br label %1402

1402:                                             ; preds = %1401
  br label %1403

1403:                                             ; preds = %1402, %1337
  br label %1404

1404:                                             ; preds = %1403
  br label %1405

1405:                                             ; preds = %1404
  br label %1406

1406:                                             ; preds = %1405
  %1407 = load i32, ptr @test_count, align 4, !tbaa !5
  %1408 = add nsw i32 %1407, 1
  store i32 %1408, ptr @test_count, align 4, !tbaa !5
  %1409 = load ptr, ptr %28, align 8, !tbaa !9
  %1410 = call i32 @s2n_signature_algorithm_select(ptr noundef %1409)
  %1411 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  store i32 %1410, ptr %1411, align 4
  %1412 = getelementptr inbounds %struct.s2n_result, ptr %38, i32 0, i32 0
  %1413 = load i32, ptr %1412, align 4
  %1414 = call zeroext i1 @s2n_result_is_ok(i32 %1413)
  br i1 %1414, label %1468, label %1415

1415:                                             ; preds = %1406
  br label %1416

1416:                                             ; preds = %1415
  br label %1417

1417:                                             ; preds = %1416
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  %1418 = call ptr @__errno_location() #10
  %1419 = load i32, ptr %1418, align 4, !tbaa !5
  store i32 %1419, ptr %39, 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) #9
  %1427 = call i32 @isatty(i32 noundef %1426) #9
  %1428 = icmp ne i32 %1427, 0
  br i1 %1428, label %1429, label %1446

1429:                                             ; preds = %1424
  %1430 = load i32, ptr %39, align 4, !tbaa !5
  %1431 = call ptr @__errno_location() #10
  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.4)
  %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.4)
  %1440 = call ptr @__errno_location() #10
  %1441 = load i32, ptr %1440, align 4, !tbaa !5
  %1442 = call ptr @strerror(i32 noundef %1441) #9
  %1443 = call ptr @__errno_location() #10
  %1444 = load i32, ptr %1443, align 4, !tbaa !5
  %1445 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1432, ptr noundef @.str.2, i32 noundef %1433, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 95, ptr noundef %1436, ptr noundef %1439, ptr noundef %1442, i32 noundef %1444) #9
  br label %1463

1446:                                             ; preds = %1424, %1417
  %1447 = load i32, ptr %39, align 4, !tbaa !5
  %1448 = call ptr @__errno_location() #10
  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.4)
  %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.4)
  %1457 = call ptr @__errno_location() #10
  %1458 = load i32, ptr %1457, align 4, !tbaa !5
  %1459 = call ptr @strerror(i32 noundef %1458) #9
  %1460 = call ptr @__errno_location() #10
  %1461 = load i32, ptr %1460, align 4, !tbaa !5
  %1462 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1449, ptr noundef @.str.5, i32 noundef %1450, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 95, ptr noundef %1453, ptr noundef %1456, ptr noundef %1459, i32 noundef %1461) #9
  br label %1463

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

1464:                                             ; preds = %1463
  br label %1465

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

1466:                                             ; No predecessors!
  br label %1467

1467:                                             ; preds = %1466
  br label %1468

1468:                                             ; preds = %1467, %1406
  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 = load ptr, ptr %28, align 8, !tbaa !9
  %1475 = getelementptr inbounds %struct.s2n_connection, ptr %1474, i32 0, i32 32
  %1476 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %1475, i32 0, i32 5
  %1477 = load ptr, ptr %1476, align 8, !tbaa !54
  %1478 = getelementptr inbounds %struct.s2n_signature_scheme, ptr %1477, i32 0, i32 0
  %1479 = load i16, ptr %1478, align 8, !tbaa !55
  %1480 = zext i16 %1479 to i32
  %1481 = icmp eq i32 %1480, 1281
  br i1 %1481, label %1535, label %1482

1482:                                             ; preds = %1471
  br label %1483

1483:                                             ; preds = %1482
  br label %1484

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

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

1496:                                             ; preds = %1491
  %1497 = load i32, ptr %40, align 4, !tbaa !5
  %1498 = call ptr @__errno_location() #10
  store i32 %1497, ptr %1498, align 4, !tbaa !5
  %1499 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1500 = load i32, ptr @test_count, align 4, !tbaa !5
  %1501 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1502 = load i32, ptr %1501, align 4, !tbaa !5
  %1503 = call ptr @s2n_strerror(i32 noundef %1502, ptr noundef @.str.4)
  %1504 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1505 = load i32, ptr %1504, align 4, !tbaa !5
  %1506 = call ptr @s2n_strerror_debug(i32 noundef %1505, ptr noundef @.str.4)
  %1507 = call ptr @__errno_location() #10
  %1508 = load i32, ptr %1507, align 4, !tbaa !5
  %1509 = call ptr @strerror(i32 noundef %1508) #9
  %1510 = call ptr @__errno_location() #10
  %1511 = load i32, ptr %1510, align 4, !tbaa !5
  %1512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1499, ptr noundef @.str.2, i32 noundef %1500, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 96, ptr noundef %1503, ptr noundef %1506, ptr noundef %1509, i32 noundef %1511) #9
  br label %1530

1513:                                             ; preds = %1491, %1484
  %1514 = load i32, ptr %40, align 4, !tbaa !5
  %1515 = call ptr @__errno_location() #10
  store i32 %1514, ptr %1515, align 4, !tbaa !5
  %1516 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1517 = load i32, ptr @test_count, align 4, !tbaa !5
  %1518 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1519 = load i32, ptr %1518, align 4, !tbaa !5
  %1520 = call ptr @s2n_strerror(i32 noundef %1519, ptr noundef @.str.4)
  %1521 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1522 = load i32, ptr %1521, align 4, !tbaa !5
  %1523 = call ptr @s2n_strerror_debug(i32 noundef %1522, ptr noundef @.str.4)
  %1524 = call ptr @__errno_location() #10
  %1525 = load i32, ptr %1524, align 4, !tbaa !5
  %1526 = call ptr @strerror(i32 noundef %1525) #9
  %1527 = call ptr @__errno_location() #10
  %1528 = load i32, ptr %1527, align 4, !tbaa !5
  %1529 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1516, ptr noundef @.str.5, i32 noundef %1517, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 96, ptr noundef %1520, ptr noundef %1523, ptr noundef %1526, i32 noundef %1528) #9
  br label %1530

1530:                                             ; preds = %1513, %1496
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %1531

1531:                                             ; preds = %1530
  br label %1532

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

1533:                                             ; No predecessors!
  br label %1534

1534:                                             ; preds = %1533
  br label %1535

1535:                                             ; preds = %1534, %1471
  br label %1536

1536:                                             ; preds = %1535
  br label %1537

1537:                                             ; preds = %1536
  br label %1538

1538:                                             ; preds = %1537
  %1539 = load i32, ptr @test_count, align 4, !tbaa !5
  %1540 = add nsw i32 %1539, 1
  store i32 %1540, ptr @test_count, align 4, !tbaa !5
  %1541 = call i32 @s2n_stuffer_free(ptr noundef %31)
  %1542 = icmp eq i32 %1541, -1
  br i1 %1542, label %1543, label %1596

1543:                                             ; preds = %1538
  br label %1544

1544:                                             ; preds = %1543
  br label %1545

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

1552:                                             ; preds = %1545
  %1553 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1554 = call i32 @fileno(ptr noundef %1553) #9
  %1555 = call i32 @isatty(i32 noundef %1554) #9
  %1556 = icmp ne i32 %1555, 0
  br i1 %1556, label %1557, label %1574

1557:                                             ; preds = %1552
  %1558 = load i32, ptr %41, align 4, !tbaa !5
  %1559 = call ptr @__errno_location() #10
  store i32 %1558, ptr %1559, align 4, !tbaa !5
  %1560 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1561 = load i32, ptr @test_count, align 4, !tbaa !5
  %1562 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1563 = load i32, ptr %1562, align 4, !tbaa !5
  %1564 = call ptr @s2n_strerror(i32 noundef %1563, ptr noundef @.str.4)
  %1565 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1566 = load i32, ptr %1565, align 4, !tbaa !5
  %1567 = call ptr @s2n_strerror_debug(i32 noundef %1566, ptr noundef @.str.4)
  %1568 = call ptr @__errno_location() #10
  %1569 = load i32, ptr %1568, align 4, !tbaa !5
  %1570 = call ptr @strerror(i32 noundef %1569) #9
  %1571 = call ptr @__errno_location() #10
  %1572 = load i32, ptr %1571, align 4, !tbaa !5
  %1573 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1560, ptr noundef @.str.2, i32 noundef %1561, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 98, ptr noundef %1564, ptr noundef %1567, ptr noundef %1570, i32 noundef %1572) #9
  br label %1591

1574:                                             ; preds = %1552, %1545
  %1575 = load i32, ptr %41, align 4, !tbaa !5
  %1576 = call ptr @__errno_location() #10
  store i32 %1575, ptr %1576, align 4, !tbaa !5
  %1577 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1578 = load i32, ptr @test_count, align 4, !tbaa !5
  %1579 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1580 = load i32, ptr %1579, align 4, !tbaa !5
  %1581 = call ptr @s2n_strerror(i32 noundef %1580, ptr noundef @.str.4)
  %1582 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1583 = load i32, ptr %1582, align 4, !tbaa !5
  %1584 = call ptr @s2n_strerror_debug(i32 noundef %1583, ptr noundef @.str.4)
  %1585 = call ptr @__errno_location() #10
  %1586 = load i32, ptr %1585, align 4, !tbaa !5
  %1587 = call ptr @strerror(i32 noundef %1586) #9
  %1588 = call ptr @__errno_location() #10
  %1589 = load i32, ptr %1588, align 4, !tbaa !5
  %1590 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1577, ptr noundef @.str.5, i32 noundef %1578, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 98, ptr noundef %1581, ptr noundef %1584, ptr noundef %1587, i32 noundef %1589) #9
  br label %1591

1591:                                             ; preds = %1574, %1557
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %1592

1592:                                             ; preds = %1591
  br label %1593

1593:                                             ; preds = %1592
  call void @exit(i32 noundef 1) #11
  unreachable

1594:                                             ; No predecessors!
  br label %1595

1595:                                             ; preds = %1594
  br label %1596

1596:                                             ; preds = %1595, %1538
  br label %1597

1597:                                             ; preds = %1596
  br label %1598

1598:                                             ; preds = %1597
  br label %1599

1599:                                             ; preds = %1598
  %1600 = load i32, ptr @test_count, align 4, !tbaa !5
  %1601 = add nsw i32 %1600, 1
  store i32 %1601, ptr @test_count, align 4, !tbaa !5
  %1602 = load ptr, ptr %28, align 8, !tbaa !9
  %1603 = call i32 @s2n_connection_free(ptr noundef %1602)
  %1604 = icmp eq i32 %1603, -1
  br i1 %1604, label %1605, label %1658

1605:                                             ; preds = %1599
  br label %1606

1606:                                             ; preds = %1605
  br label %1607

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

1614:                                             ; preds = %1607
  %1615 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1616 = call i32 @fileno(ptr noundef %1615) #9
  %1617 = call i32 @isatty(i32 noundef %1616) #9
  %1618 = icmp ne i32 %1617, 0
  br i1 %1618, label %1619, label %1636

1619:                                             ; preds = %1614
  %1620 = load i32, ptr %42, align 4, !tbaa !5
  %1621 = call ptr @__errno_location() #10
  store i32 %1620, ptr %1621, align 4, !tbaa !5
  %1622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1623 = load i32, ptr @test_count, align 4, !tbaa !5
  %1624 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1625 = load i32, ptr %1624, align 4, !tbaa !5
  %1626 = call ptr @s2n_strerror(i32 noundef %1625, ptr noundef @.str.4)
  %1627 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1628 = load i32, ptr %1627, align 4, !tbaa !5
  %1629 = call ptr @s2n_strerror_debug(i32 noundef %1628, ptr noundef @.str.4)
  %1630 = call ptr @__errno_location() #10
  %1631 = load i32, ptr %1630, align 4, !tbaa !5
  %1632 = call ptr @strerror(i32 noundef %1631) #9
  %1633 = call ptr @__errno_location() #10
  %1634 = load i32, ptr %1633, align 4, !tbaa !5
  %1635 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1622, ptr noundef @.str.2, i32 noundef %1623, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 99, ptr noundef %1626, ptr noundef %1629, ptr noundef %1632, i32 noundef %1634) #9
  br label %1653

1636:                                             ; preds = %1614, %1607
  %1637 = load i32, ptr %42, align 4, !tbaa !5
  %1638 = call ptr @__errno_location() #10
  store i32 %1637, ptr %1638, align 4, !tbaa !5
  %1639 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1640 = load i32, ptr @test_count, align 4, !tbaa !5
  %1641 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1642 = load i32, ptr %1641, align 4, !tbaa !5
  %1643 = call ptr @s2n_strerror(i32 noundef %1642, ptr noundef @.str.4)
  %1644 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1645 = load i32, ptr %1644, align 4, !tbaa !5
  %1646 = call ptr @s2n_strerror_debug(i32 noundef %1645, ptr noundef @.str.4)
  %1647 = call ptr @__errno_location() #10
  %1648 = load i32, ptr %1647, align 4, !tbaa !5
  %1649 = call ptr @strerror(i32 noundef %1648) #9
  %1650 = call ptr @__errno_location() #10
  %1651 = load i32, ptr %1650, align 4, !tbaa !5
  %1652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1639, ptr noundef @.str.5, i32 noundef %1640, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 99, ptr noundef %1643, ptr noundef %1646, ptr noundef %1649, i32 noundef %1651) #9
  br label %1653

1653:                                             ; preds = %1636, %1619
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %1654

1654:                                             ; preds = %1653
  br label %1655

1655:                                             ; preds = %1654
  call void @exit(i32 noundef 1) #11
  unreachable

1656:                                             ; No predecessors!
  br label %1657

1657:                                             ; preds = %1656
  br label %1658

1658:                                             ; preds = %1657, %1599
  br label %1659

1659:                                             ; preds = %1658
  br label %1660

1660:                                             ; preds = %1659
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #9
  store i32 0, ptr %30, align 4
  br label %1661

1661:                                             ; preds = %1660, %1059
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 258, ptr %27) #9
  %1662 = load i32, ptr %30, align 4
  switch i32 %1662, label %1942 [
    i32 0, label %1663
  ]

1663:                                             ; preds = %1661
  br label %1664

1664:                                             ; preds = %1663
  %1665 = load i32, ptr @test_count, align 4, !tbaa !5
  %1666 = add nsw i32 %1665, 1
  store i32 %1666, ptr @test_count, align 4, !tbaa !5
  %1667 = load ptr, ptr %10, align 8, !tbaa !9
  %1668 = call i32 @s2n_config_free(ptr noundef %1667)
  %1669 = icmp eq i32 %1668, -1
  br i1 %1669, label %1670, label %1723

1670:                                             ; preds = %1664
  br label %1671

1671:                                             ; preds = %1670
  br label %1672

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

1679:                                             ; preds = %1672
  %1680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1681 = call i32 @fileno(ptr noundef %1680) #9
  %1682 = call i32 @isatty(i32 noundef %1681) #9
  %1683 = icmp ne i32 %1682, 0
  br i1 %1683, label %1684, label %1701

1684:                                             ; preds = %1679
  %1685 = load i32, ptr %43, align 4, !tbaa !5
  %1686 = call ptr @__errno_location() #10
  store i32 %1685, ptr %1686, align 4, !tbaa !5
  %1687 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1688 = load i32, ptr @test_count, align 4, !tbaa !5
  %1689 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1690 = load i32, ptr %1689, align 4, !tbaa !5
  %1691 = call ptr @s2n_strerror(i32 noundef %1690, ptr noundef @.str.4)
  %1692 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1693 = load i32, ptr %1692, align 4, !tbaa !5
  %1694 = call ptr @s2n_strerror_debug(i32 noundef %1693, ptr noundef @.str.4)
  %1695 = call ptr @__errno_location() #10
  %1696 = load i32, ptr %1695, align 4, !tbaa !5
  %1697 = call ptr @strerror(i32 noundef %1696) #9
  %1698 = call ptr @__errno_location() #10
  %1699 = load i32, ptr %1698, align 4, !tbaa !5
  %1700 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1687, ptr noundef @.str.2, i32 noundef %1688, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 102, ptr noundef %1691, ptr noundef %1694, ptr noundef %1697, i32 noundef %1699) #9
  br label %1718

1701:                                             ; preds = %1679, %1672
  %1702 = load i32, ptr %43, align 4, !tbaa !5
  %1703 = call ptr @__errno_location() #10
  store i32 %1702, ptr %1703, align 4, !tbaa !5
  %1704 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1705 = load i32, ptr @test_count, align 4, !tbaa !5
  %1706 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1707 = load i32, ptr %1706, align 4, !tbaa !5
  %1708 = call ptr @s2n_strerror(i32 noundef %1707, ptr noundef @.str.4)
  %1709 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1710 = load i32, ptr %1709, align 4, !tbaa !5
  %1711 = call ptr @s2n_strerror_debug(i32 noundef %1710, ptr noundef @.str.4)
  %1712 = call ptr @__errno_location() #10
  %1713 = load i32, ptr %1712, align 4, !tbaa !5
  %1714 = call ptr @strerror(i32 noundef %1713) #9
  %1715 = call ptr @__errno_location() #10
  %1716 = load i32, ptr %1715, align 4, !tbaa !5
  %1717 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1704, ptr noundef @.str.5, i32 noundef %1705, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 102, ptr noundef %1708, ptr noundef %1711, ptr noundef %1714, i32 noundef %1716) #9
  br label %1718

1718:                                             ; preds = %1701, %1684
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #9
  br label %1719

1719:                                             ; preds = %1718
  br label %1720

1720:                                             ; preds = %1719
  call void @exit(i32 noundef 1) #11
  unreachable

1721:                                             ; No predecessors!
  br label %1722

1722:                                             ; preds = %1721
  br label %1723

1723:                                             ; preds = %1722, %1664
  br label %1724

1724:                                             ; preds = %1723
  br label %1725

1725:                                             ; preds = %1724
  br label %1726

1726:                                             ; preds = %1725
  %1727 = load i32, ptr @test_count, align 4, !tbaa !5
  %1728 = add nsw i32 %1727, 1
  store i32 %1728, ptr @test_count, align 4, !tbaa !5
  %1729 = load ptr, ptr %12, align 8, !tbaa !9
  %1730 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %1729)
  %1731 = icmp eq i32 %1730, -1
  br i1 %1731, label %1732, label %1785

1732:                                             ; preds = %1726
  br label %1733

1733:                                             ; preds = %1732
  br label %1734

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

1741:                                             ; preds = %1734
  %1742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1743 = call i32 @fileno(ptr noundef %1742) #9
  %1744 = call i32 @isatty(i32 noundef %1743) #9
  %1745 = icmp ne i32 %1744, 0
  br i1 %1745, label %1746, label %1763

1746:                                             ; preds = %1741
  %1747 = load i32, ptr %44, align 4, !tbaa !5
  %1748 = call ptr @__errno_location() #10
  store i32 %1747, ptr %1748, align 4, !tbaa !5
  %1749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1750 = load i32, ptr @test_count, align 4, !tbaa !5
  %1751 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1752 = load i32, ptr %1751, align 4, !tbaa !5
  %1753 = call ptr @s2n_strerror(i32 noundef %1752, ptr noundef @.str.4)
  %1754 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1755 = load i32, ptr %1754, align 4, !tbaa !5
  %1756 = call ptr @s2n_strerror_debug(i32 noundef %1755, ptr noundef @.str.4)
  %1757 = call ptr @__errno_location() #10
  %1758 = load i32, ptr %1757, align 4, !tbaa !5
  %1759 = call ptr @strerror(i32 noundef %1758) #9
  %1760 = call ptr @__errno_location() #10
  %1761 = load i32, ptr %1760, align 4, !tbaa !5
  %1762 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1749, ptr noundef @.str.2, i32 noundef %1750, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 103, ptr noundef %1753, ptr noundef %1756, ptr noundef %1759, i32 noundef %1761) #9
  br label %1780

1763:                                             ; preds = %1741, %1734
  %1764 = load i32, ptr %44, align 4, !tbaa !5
  %1765 = call ptr @__errno_location() #10
  store i32 %1764, ptr %1765, align 4, !tbaa !5
  %1766 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1767 = load i32, ptr @test_count, align 4, !tbaa !5
  %1768 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1769 = load i32, ptr %1768, align 4, !tbaa !5
  %1770 = call ptr @s2n_strerror(i32 noundef %1769, ptr noundef @.str.4)
  %1771 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1772 = load i32, ptr %1771, align 4, !tbaa !5
  %1773 = call ptr @s2n_strerror_debug(i32 noundef %1772, ptr noundef @.str.4)
  %1774 = call ptr @__errno_location() #10
  %1775 = load i32, ptr %1774, align 4, !tbaa !5
  %1776 = call ptr @strerror(i32 noundef %1775) #9
  %1777 = call ptr @__errno_location() #10
  %1778 = load i32, ptr %1777, align 4, !tbaa !5
  %1779 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1766, ptr noundef @.str.5, i32 noundef %1767, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 103, ptr noundef %1770, ptr noundef %1773, ptr noundef %1776, i32 noundef %1778) #9
  br label %1780

1780:                                             ; preds = %1763, %1746
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %1781

1781:                                             ; preds = %1780
  br label %1782

1782:                                             ; preds = %1781
  call void @exit(i32 noundef 1) #11
  unreachable

1783:                                             ; No predecessors!
  br label %1784

1784:                                             ; preds = %1783
  br label %1785

1785:                                             ; preds = %1784, %1726
  br label %1786

1786:                                             ; preds = %1785
  br label %1787

1787:                                             ; preds = %1786
  br label %1788

1788:                                             ; preds = %1787
  br label %1789

1789:                                             ; preds = %1788
  %1790 = call i32 @s2n_cleanup()
  %1791 = icmp eq i32 %1790, -1
  br i1 %1791, label %1792, label %1845

1792:                                             ; preds = %1789
  br label %1793

1793:                                             ; preds = %1792
  br label %1794

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

1801:                                             ; preds = %1794
  %1802 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1803 = call i32 @fileno(ptr noundef %1802) #9
  %1804 = call i32 @isatty(i32 noundef %1803) #9
  %1805 = icmp ne i32 %1804, 0
  br i1 %1805, label %1806, label %1823

1806:                                             ; preds = %1801
  %1807 = load i32, ptr %45, align 4, !tbaa !5
  %1808 = call ptr @__errno_location() #10
  store i32 %1807, ptr %1808, align 4, !tbaa !5
  %1809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1810 = load i32, ptr @test_count, align 4, !tbaa !5
  %1811 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1812 = load i32, ptr %1811, align 4, !tbaa !5
  %1813 = call ptr @s2n_strerror(i32 noundef %1812, ptr noundef @.str.4)
  %1814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1815 = load i32, ptr %1814, align 4, !tbaa !5
  %1816 = call ptr @s2n_strerror_debug(i32 noundef %1815, ptr noundef @.str.4)
  %1817 = call ptr @__errno_location() #10
  %1818 = load i32, ptr %1817, align 4, !tbaa !5
  %1819 = call ptr @strerror(i32 noundef %1818) #9
  %1820 = call ptr @__errno_location() #10
  %1821 = load i32, ptr %1820, align 4, !tbaa !5
  %1822 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1809, ptr noundef @.str.2, i32 noundef %1810, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 105, ptr noundef %1813, ptr noundef %1816, ptr noundef %1819, i32 noundef %1821) #9
  br label %1840

1823:                                             ; preds = %1801, %1794
  %1824 = load i32, ptr %45, align 4, !tbaa !5
  %1825 = call ptr @__errno_location() #10
  store i32 %1824, ptr %1825, align 4, !tbaa !5
  %1826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1827 = load i32, ptr @test_count, align 4, !tbaa !5
  %1828 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1829 = load i32, ptr %1828, align 4, !tbaa !5
  %1830 = call ptr @s2n_strerror(i32 noundef %1829, ptr noundef @.str.4)
  %1831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1832 = load i32, ptr %1831, align 4, !tbaa !5
  %1833 = call ptr @s2n_strerror_debug(i32 noundef %1832, ptr noundef @.str.4)
  %1834 = call ptr @__errno_location() #10
  %1835 = load i32, ptr %1834, align 4, !tbaa !5
  %1836 = call ptr @strerror(i32 noundef %1835) #9
  %1837 = call ptr @__errno_location() #10
  %1838 = load i32, ptr %1837, align 4, !tbaa !5
  %1839 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1826, ptr noundef @.str.5, i32 noundef %1827, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 105, ptr noundef %1830, ptr noundef %1833, ptr noundef %1836, i32 noundef %1838) #9
  br label %1840

1840:                                             ; preds = %1823, %1806
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %1841

1841:                                             ; preds = %1840
  br label %1842

1842:                                             ; preds = %1841
  call void @exit(i32 noundef 1) #11
  unreachable

1843:                                             ; No predecessors!
  br label %1844

1844:                                             ; preds = %1843
  br label %1845

1845:                                             ; preds = %1844, %1789
  br label %1846

1846:                                             ; preds = %1845
  br label %1847

1847:                                             ; preds = %1846
  br label %1848

1848:                                             ; preds = %1847
  br label %1849

1849:                                             ; preds = %1848
  %1850 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1851 = icmp eq i32 %1850, -1
  br i1 %1851, label %1852, label %1905

1852:                                             ; preds = %1849
  br label %1853

1853:                                             ; preds = %1852
  br label %1854

1854:                                             ; preds = %1853
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  %1855 = call ptr @__errno_location() #10
  %1856 = load i32, ptr %1855, align 4, !tbaa !5
  store i32 %1856, ptr %46, align 4, !tbaa !5
  %1857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1858 = call i32 @s2n_print_stacktrace(ptr noundef %1857)
  %1859 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1860 = trunc i8 %1859 to i1
  br i1 %1860, label %1861, label %1883

1861:                                             ; preds = %1854
  %1862 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1863 = call i32 @fileno(ptr noundef %1862) #9
  %1864 = call i32 @isatty(i32 noundef %1863) #9
  %1865 = icmp ne i32 %1864, 0
  br i1 %1865, label %1866, label %1883

1866:                                             ; preds = %1861
  %1867 = load i32, ptr %46, align 4, !tbaa !5
  %1868 = call ptr @__errno_location() #10
  store i32 %1867, ptr %1868, align 4, !tbaa !5
  %1869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1870 = load i32, ptr @test_count, align 4, !tbaa !5
  %1871 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1872 = load i32, ptr %1871, align 4, !tbaa !5
  %1873 = call ptr @s2n_strerror(i32 noundef %1872, ptr noundef @.str.4)
  %1874 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1875 = load i32, ptr %1874, align 4, !tbaa !5
  %1876 = call ptr @s2n_strerror_debug(i32 noundef %1875, ptr noundef @.str.4)
  %1877 = call ptr @__errno_location() #10
  %1878 = load i32, ptr %1877, align 4, !tbaa !5
  %1879 = call ptr @strerror(i32 noundef %1878) #9
  %1880 = call ptr @__errno_location() #10
  %1881 = load i32, ptr %1880, align 4, !tbaa !5
  %1882 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1869, ptr noundef @.str.2, i32 noundef %1870, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 105, ptr noundef %1873, ptr noundef %1876, ptr noundef %1879, i32 noundef %1881) #9
  br label %1900

1883:                                             ; preds = %1861, %1854
  %1884 = load i32, ptr %46, align 4, !tbaa !5
  %1885 = call ptr @__errno_location() #10
  store i32 %1884, ptr %1885, align 4, !tbaa !5
  %1886 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1887 = load i32, ptr @test_count, align 4, !tbaa !5
  %1888 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1889 = load i32, ptr %1888, align 4, !tbaa !5
  %1890 = call ptr @s2n_strerror(i32 noundef %1889, ptr noundef @.str.4)
  %1891 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1892 = load i32, ptr %1891, align 4, !tbaa !5
  %1893 = call ptr @s2n_strerror_debug(i32 noundef %1892, ptr noundef @.str.4)
  %1894 = call ptr @__errno_location() #10
  %1895 = load i32, ptr %1894, align 4, !tbaa !5
  %1896 = call ptr @strerror(i32 noundef %1895) #9
  %1897 = call ptr @__errno_location() #10
  %1898 = load i32, ptr %1897, align 4, !tbaa !5
  %1899 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1886, ptr noundef @.str.5, i32 noundef %1887, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 105, ptr noundef %1890, ptr noundef %1893, ptr noundef %1896, i32 noundef %1898) #9
  br label %1900

1900:                                             ; preds = %1883, %1866
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  br label %1901

1901:                                             ; preds = %1900
  br label %1902

1902:                                             ; preds = %1901
  call void @exit(i32 noundef 1) #11
  unreachable

1903:                                             ; No predecessors!
  br label %1904

1904:                                             ; preds = %1903
  br label %1905

1905:                                             ; preds = %1904, %1849
  br label %1906

1906:                                             ; preds = %1905
  br label %1907

1907:                                             ; preds = %1906
  %1908 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1909 = trunc i8 %1908 to i1
  br i1 %1909, label %1910, label %1926

1910:                                             ; preds = %1907
  %1911 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1912 = call i32 @fileno(ptr noundef %1911) #9
  %1913 = call i32 @isatty(i32 noundef %1912) #9
  %1914 = icmp ne i32 %1913, 0
  br i1 %1914, label %1915, label %1926

1915:                                             ; preds = %1910
  %1916 = load i32, ptr @test_count, align 4, !tbaa !5
  %1917 = icmp ne i32 %1916, 0
  br i1 %1917, label %1918, label %1922

1918:                                             ; preds = %1915
  %1919 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1920 = load i32, ptr @test_count, align 4, !tbaa !5
  %1921 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1919, ptr noundef @.str.35, i32 noundef %1920) #9
  br label %1925

1922:                                             ; preds = %1915
  %1923 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1924 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1923, ptr noundef @.str.36) #9
  br label %1925

1925:                                             ; preds = %1922, %1918
  br label %1937

1926:                                             ; preds = %1910, %1907
  %1927 = load i32, ptr @test_count, align 4, !tbaa !5
  %1928 = icmp ne i32 %1927, 0
  br i1 %1928, label %1929, label %1933

1929:                                             ; preds = %1926
  %1930 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1931 = load i32, ptr @test_count, align 4, !tbaa !5
  %1932 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1930, ptr noundef @.str.37, i32 noundef %1931) #9
  br label %1936

1933:                                             ; preds = %1926
  %1934 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1935 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1934, ptr noundef @.str.38) #9
  br label %1936

1936:                                             ; preds = %1933, %1929
  br label %1937

1937:                                             ; preds = %1936, %1925
  store i32 0, ptr %3, align 4
  store i32 1, ptr %30, align 4
  br label %1942

1938:                                             ; No predecessors!
  br label %1939

1939:                                             ; preds = %1938
  br label %1940

1940:                                             ; preds = %1939
  br label %1941

1941:                                             ; preds = %1940
  store i32 0, ptr %30, align 4
  br label %1942

1942:                                             ; preds = %1941, %1937, %1661
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  %1943 = load i32, ptr %30, align 4
  switch i32 %1943, label %1946 [
    i32 0, label %1944
    i32 1, label %1944
  ]

1944:                                             ; preds = %1942, %1942
  %1945 = load i32, ptr %3, align 4
  ret i32 %1945

1946:                                             ; preds = %1942
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

declare i32 @s2n_disable_tls13_in_test(...) #2

declare ptr @s2n_config_new() #2

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

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

declare ptr @s2n_connection_new(i32 noundef) #2

declare i32 @s2n_connection_free(ptr noundef) #2

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

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

declare i32 @s2n_stuffer_free(ptr noundef) #2

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

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

declare i32 @s2n_stuffer_write_uint16(ptr noundef, i16 noundef zeroext) #2

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

declare i32 @s2n_signature_algorithm_select(ptr noundef) #2

declare i32 @s2n_config_free(ptr noundef) #2

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) #2

declare i32 @s2n_cleanup() #2

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

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

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


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

%struct.s2n_extension_type = type { i16, i8, i16, ptr, ptr, ptr, ptr }
%struct.s2n_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
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [105 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [200 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [94 x i8], align 1
@s2n_client_signature_algorithms_extension = external local_unnamed_addr constant %struct.s2n_extension_type, align 8
@.str.14 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [114 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [85 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local range(i32 -1, 1) i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca ptr, align 8
  %4 = alloca %struct.s2n_stuffer, align 8
  %5 = alloca %struct.s2n_stuffer, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %6 = load ptr, ptr @stdout, align 8, !tbaa !9
  %7 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #10
  %8 = load ptr, ptr @stdout, align 8, !tbaa !9
  %9 = tail call i32 @fflush(ptr noundef %8)
  %10 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #10
  %11 = icmp eq i32 %10, -1
  br i1 %11, label %12, label %36

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

19:                                               ; preds = %12
  %20 = load ptr, ptr @stderr, align 8, !tbaa !9
  %21 = tail call i32 @fileno(ptr noundef %20) #10
  %22 = tail call i32 @isatty(i32 noundef %21) #10
  %.not121 = icmp eq i32 %22, 0
  br i1 %.not121, label %23, label %24

23:                                               ; preds = %19, %12
  br label %24

24:                                               ; preds = %19, %23
  %.str.5.sink = phi ptr [ @.str.5, %23 ], [ @.str.2, %19 ]
  store i32 %14, ptr %13, align 4, !tbaa !5
  %25 = load ptr, ptr @stderr, align 8, !tbaa !9
  %26 = load i32, ptr @test_count, align 4, !tbaa !5
  %27 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %28 = load i32, ptr %27, align 4, !tbaa !5
  %29 = tail call ptr @s2n_strerror(i32 noundef %28, ptr noundef nonnull @.str.4) #10
  %30 = load i32, ptr %27, align 4, !tbaa !5
  %31 = tail call ptr @s2n_strerror_debug(i32 noundef %30, ptr noundef nonnull @.str.4) #10
  %32 = load i32, ptr %13, align 4, !tbaa !5
  %33 = tail call ptr @strerror(i32 noundef %32) #10
  %34 = load i32, ptr %13, align 4, !tbaa !5
  %35 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %25, ptr noundef nonnull %.str.5.sink, i32 noundef %26, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, i32 noundef 29, ptr noundef %29, ptr noundef %31, ptr noundef %33, i32 noundef %34) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

36:                                               ; preds = %2
  %37 = load i32, ptr @test_count, align 4, !tbaa !5
  %38 = add nsw i32 %37, 1
  store i32 %38, ptr @test_count, align 4, !tbaa !5
  %39 = tail call i32 @s2n_enable_atexit() #10
  %40 = icmp eq i32 %39, -1
  br i1 %40, label %41, label %65

41:                                               ; preds = %36
  %42 = tail call ptr @__errno_location() #11
  %43 = load i32, ptr %42, align 4, !tbaa !5
  %44 = load ptr, ptr @stderr, align 8, !tbaa !9
  %45 = tail call i32 @s2n_print_stacktrace(ptr noundef %44) #10
  %46 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %47 = trunc nuw i8 %46 to i1
  br i1 %47, label %48, label %52

48:                                               ; preds = %41
  %49 = load ptr, ptr @stderr, align 8, !tbaa !9
  %50 = tail call i32 @fileno(ptr noundef %49) #10
  %51 = tail call i32 @isatty(i32 noundef %50) #10
  %.not120 = icmp eq i32 %51, 0
  br i1 %.not120, label %52, label %53

52:                                               ; preds = %48, %41
  br label %53

53:                                               ; preds = %48, %52
  %.str.5.sink135 = phi ptr [ @.str.5, %52 ], [ @.str.2, %48 ]
  store i32 %43, ptr %42, align 4, !tbaa !5
  %54 = load ptr, ptr @stderr, align 8, !tbaa !9
  %55 = load i32, ptr @test_count, align 4, !tbaa !5
  %56 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %57 = load i32, ptr %56, align 4, !tbaa !5
  %58 = tail call ptr @s2n_strerror(i32 noundef %57, ptr noundef nonnull @.str.4) #10
  %59 = load i32, ptr %56, align 4, !tbaa !5
  %60 = tail call ptr @s2n_strerror_debug(i32 noundef %59, ptr noundef nonnull @.str.4) #10
  %61 = load i32, ptr %42, align 4, !tbaa !5
  %62 = tail call ptr @strerror(i32 noundef %61) #10
  %63 = load i32, ptr %42, align 4, !tbaa !5
  %64 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %54, ptr noundef nonnull %.str.5.sink135, i32 noundef %55, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 29, ptr noundef %58, ptr noundef %60, ptr noundef %62, i32 noundef %63) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

65:                                               ; preds = %36
  %66 = tail call i32 @s2n_init() #10
  %67 = icmp eq i32 %66, -1
  br i1 %67, label %68, label %92

68:                                               ; preds = %65
  %69 = tail call ptr @__errno_location() #11
  %70 = load i32, ptr %69, align 4, !tbaa !5
  %71 = load ptr, ptr @stderr, align 8, !tbaa !9
  %72 = tail call i32 @s2n_print_stacktrace(ptr noundef %71) #10
  %73 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %74 = trunc nuw i8 %73 to i1
  br i1 %74, label %75, label %79

75:                                               ; preds = %68
  %76 = load ptr, ptr @stderr, align 8, !tbaa !9
  %77 = tail call i32 @fileno(ptr noundef %76) #10
  %78 = tail call i32 @isatty(i32 noundef %77) #10
  %.not119 = icmp eq i32 %78, 0
  br i1 %.not119, label %79, label %80

79:                                               ; preds = %75, %68
  br label %80

80:                                               ; preds = %75, %79
  %.str.5.sink146 = phi ptr [ @.str.5, %79 ], [ @.str.2, %75 ]
  store i32 %70, ptr %69, align 4, !tbaa !5
  %81 = load ptr, ptr @stderr, align 8, !tbaa !9
  %82 = load i32, ptr @test_count, align 4, !tbaa !5
  %83 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %84 = load i32, ptr %83, align 4, !tbaa !5
  %85 = tail call ptr @s2n_strerror(i32 noundef %84, ptr noundef nonnull @.str.4) #10
  %86 = load i32, ptr %83, align 4, !tbaa !5
  %87 = tail call ptr @s2n_strerror_debug(i32 noundef %86, ptr noundef nonnull @.str.4) #10
  %88 = load i32, ptr %69, align 4, !tbaa !5
  %89 = tail call ptr @strerror(i32 noundef %88) #10
  %90 = load i32, ptr %69, align 4, !tbaa !5
  %91 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %81, ptr noundef nonnull %.str.5.sink146, i32 noundef %82, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 29, ptr noundef %85, ptr noundef %87, ptr noundef %89, i32 noundef %90) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

92:                                               ; preds = %65
  %93 = load i32, ptr @test_count, align 4, !tbaa !5
  %94 = add nsw i32 %93, 1
  store i32 %94, ptr @test_count, align 4, !tbaa !5
  %95 = tail call i32 (...) @s2n_disable_tls13_in_test() #10
  %96 = icmp eq i32 %95, -1
  br i1 %96, label %97, label %121

97:                                               ; preds = %92
  %98 = tail call ptr @__errno_location() #11
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = load ptr, ptr @stderr, align 8, !tbaa !9
  %101 = tail call i32 @s2n_print_stacktrace(ptr noundef %100) #10
  %102 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %103 = trunc nuw i8 %102 to i1
  br i1 %103, label %104, label %108

104:                                              ; preds = %97
  %105 = load ptr, ptr @stderr, align 8, !tbaa !9
  %106 = tail call i32 @fileno(ptr noundef %105) #10
  %107 = tail call i32 @isatty(i32 noundef %106) #10
  %.not118 = icmp eq i32 %107, 0
  br i1 %.not118, label %108, label %109

108:                                              ; preds = %104, %97
  br label %109

109:                                              ; preds = %104, %108
  %.str.5.sink157 = phi ptr [ @.str.5, %108 ], [ @.str.2, %104 ]
  store i32 %99, ptr %98, align 4, !tbaa !5
  %110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %111 = load i32, ptr @test_count, align 4, !tbaa !5
  %112 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = tail call ptr @s2n_strerror(i32 noundef %113, ptr noundef nonnull @.str.4) #10
  %115 = load i32, ptr %112, align 4, !tbaa !5
  %116 = tail call ptr @s2n_strerror_debug(i32 noundef %115, ptr noundef nonnull @.str.4) #10
  %117 = load i32, ptr %98, align 4, !tbaa !5
  %118 = tail call ptr @strerror(i32 noundef %117) #10
  %119 = load i32, ptr %98, align 4, !tbaa !5
  %120 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %110, ptr noundef nonnull %.str.5.sink157, i32 noundef %111, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 30, ptr noundef %114, ptr noundef %116, ptr noundef %118, i32 noundef %119) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

121:                                              ; preds = %92
  %122 = load i32, ptr @test_count, align 4, !tbaa !5
  %123 = add nsw i32 %122, 1
  store i32 %123, ptr @test_count, align 4, !tbaa !5
  %124 = tail call ptr @s2n_config_new() #10
  %125 = icmp eq ptr %124, null
  br i1 %125, label %126, label %150

126:                                              ; preds = %121
  %127 = tail call ptr @__errno_location() #11
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = load ptr, ptr @stderr, align 8, !tbaa !9
  %130 = tail call i32 @s2n_print_stacktrace(ptr noundef %129) #10
  %131 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %132 = trunc nuw i8 %131 to i1
  br i1 %132, label %133, label %137

133:                                              ; preds = %126
  %134 = load ptr, ptr @stderr, align 8, !tbaa !9
  %135 = tail call i32 @fileno(ptr noundef %134) #10
  %136 = tail call i32 @isatty(i32 noundef %135) #10
  %.not117 = icmp eq i32 %136, 0
  br i1 %.not117, label %137, label %138

137:                                              ; preds = %133, %126
  br label %138

138:                                              ; preds = %133, %137
  %.str.5.sink168 = phi ptr [ @.str.5, %137 ], [ @.str.2, %133 ]
  store i32 %128, ptr %127, align 4, !tbaa !5
  %139 = load ptr, ptr @stderr, align 8, !tbaa !9
  %140 = load i32, ptr @test_count, align 4, !tbaa !5
  %141 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %142 = load i32, ptr %141, align 4, !tbaa !5
  %143 = tail call ptr @s2n_strerror(i32 noundef %142, ptr noundef nonnull @.str.4) #10
  %144 = load i32, ptr %141, align 4, !tbaa !5
  %145 = tail call ptr @s2n_strerror_debug(i32 noundef %144, ptr noundef nonnull @.str.4) #10
  %146 = load i32, ptr %127, align 4, !tbaa !5
  %147 = tail call ptr @strerror(i32 noundef %146) #10
  %148 = load i32, ptr %127, align 4, !tbaa !5
  %149 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %139, ptr noundef nonnull %.str.5.sink168, i32 noundef %140, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 32, ptr noundef %143, ptr noundef %145, ptr noundef %147, i32 noundef %148) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

150:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  store ptr null, ptr %3, align 8, !tbaa !9
  %151 = load i32, ptr @test_count, align 4, !tbaa !5
  %152 = add nsw i32 %151, 1
  store i32 %152, ptr @test_count, align 4, !tbaa !5
  %153 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %3, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11) #10
  %154 = icmp eq i32 %153, -1
  br i1 %154, label %155, label %179

155:                                              ; preds = %150
  %156 = tail call ptr @__errno_location() #11
  %157 = load i32, ptr %156, align 4, !tbaa !5
  %158 = load ptr, ptr @stderr, align 8, !tbaa !9
  %159 = call i32 @s2n_print_stacktrace(ptr noundef %158) #10
  %160 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %161 = trunc nuw i8 %160 to i1
  br i1 %161, label %162, label %166

162:                                              ; preds = %155
  %163 = load ptr, ptr @stderr, align 8, !tbaa !9
  %164 = call i32 @fileno(ptr noundef %163) #10
  %165 = call i32 @isatty(i32 noundef %164) #10
  %.not116 = icmp eq i32 %165, 0
  br i1 %.not116, label %166, label %167

166:                                              ; preds = %162, %155
  br label %167

167:                                              ; preds = %162, %166
  %.str.5.sink179 = phi ptr [ @.str.5, %166 ], [ @.str.2, %162 ]
  store i32 %157, ptr %156, align 4, !tbaa !5
  %168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %169 = load i32, ptr @test_count, align 4, !tbaa !5
  %170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = call ptr @s2n_strerror(i32 noundef %171, ptr noundef nonnull @.str.4) #10
  %173 = load i32, ptr %170, align 4, !tbaa !5
  %174 = call ptr @s2n_strerror_debug(i32 noundef %173, ptr noundef nonnull @.str.4) #10
  %175 = load i32, ptr %156, align 4, !tbaa !5
  %176 = call ptr @strerror(i32 noundef %175) #10
  %177 = load i32, ptr %156, align 4, !tbaa !5
  %178 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %168, ptr noundef nonnull %.str.5.sink179, i32 noundef %169, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 36, ptr noundef %172, ptr noundef %174, ptr noundef %176, i32 noundef %177) #12
  call void @exit(i32 noundef 1) #13
  unreachable

179:                                              ; preds = %150
  %180 = load i32, ptr @test_count, align 4, !tbaa !5
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr @test_count, align 4, !tbaa !5
  %182 = load ptr, ptr %3, align 8, !tbaa !9
  %183 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %124, ptr noundef %182) #10
  %184 = icmp eq i32 %183, -1
  br i1 %184, label %185, label %209

185:                                              ; preds = %179
  %186 = tail call ptr @__errno_location() #11
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %189 = call i32 @s2n_print_stacktrace(ptr noundef %188) #10
  %190 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %191 = trunc nuw i8 %190 to i1
  br i1 %191, label %192, label %196

192:                                              ; preds = %185
  %193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %194 = call i32 @fileno(ptr noundef %193) #10
  %195 = call i32 @isatty(i32 noundef %194) #10
  %.not115 = icmp eq i32 %195, 0
  br i1 %.not115, label %196, label %197

196:                                              ; preds = %192, %185
  br label %197

197:                                              ; preds = %192, %196
  %.str.5.sink190 = phi ptr [ @.str.5, %196 ], [ @.str.2, %192 ]
  store i32 %187, ptr %186, align 4, !tbaa !5
  %198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %199 = load i32, ptr @test_count, align 4, !tbaa !5
  %200 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %201 = load i32, ptr %200, align 4, !tbaa !5
  %202 = call ptr @s2n_strerror(i32 noundef %201, ptr noundef nonnull @.str.4) #10
  %203 = load i32, ptr %200, align 4, !tbaa !5
  %204 = call ptr @s2n_strerror_debug(i32 noundef %203, ptr noundef nonnull @.str.4) #10
  %205 = load i32, ptr %186, align 4, !tbaa !5
  %206 = call ptr @strerror(i32 noundef %205) #10
  %207 = load i32, ptr %186, align 4, !tbaa !5
  %208 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %198, ptr noundef nonnull %.str.5.sink190, i32 noundef %199, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 37, ptr noundef %202, ptr noundef %204, ptr noundef %206, i32 noundef %207) #12
  call void @exit(i32 noundef 1) #13
  unreachable

209:                                              ; preds = %179
  %210 = call ptr @s2n_connection_new(i32 noundef 1) #10
  %211 = getelementptr inbounds i8, ptr %210, i64 220
  store i8 31, ptr %211, align 4, !tbaa !15
  %212 = load i32, ptr @test_count, align 4, !tbaa !5
  %213 = add nsw i32 %212, 1
  store i32 %213, ptr @test_count, align 4, !tbaa !5
  %214 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_client_signature_algorithms_extension, i64 24), align 8, !tbaa !42
  %215 = call zeroext i1 %214(ptr noundef %210) #10
  br i1 %215, label %216, label %240

216:                                              ; preds = %209
  %217 = tail call ptr @__errno_location() #11
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = load ptr, ptr @stderr, align 8, !tbaa !9
  %220 = call i32 @s2n_print_stacktrace(ptr noundef %219) #10
  %221 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %222 = trunc nuw i8 %221 to i1
  br i1 %222, label %223, label %227

223:                                              ; preds = %216
  %224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %225 = call i32 @fileno(ptr noundef %224) #10
  %226 = call i32 @isatty(i32 noundef %225) #10
  %.not114 = icmp eq i32 %226, 0
  br i1 %.not114, label %227, label %228

227:                                              ; preds = %223, %216
  br label %228

228:                                              ; preds = %223, %227
  %.str.5.sink201 = phi ptr [ @.str.5, %227 ], [ @.str.2, %223 ]
  store i32 %218, ptr %217, align 4, !tbaa !5
  %229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %230 = load i32, ptr @test_count, align 4, !tbaa !5
  %231 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = call ptr @s2n_strerror(i32 noundef %232, ptr noundef nonnull @.str.4) #10
  %234 = load i32, ptr %231, align 4, !tbaa !5
  %235 = call ptr @s2n_strerror_debug(i32 noundef %234, ptr noundef nonnull @.str.4) #10
  %236 = load i32, ptr %217, align 4, !tbaa !5
  %237 = call ptr @strerror(i32 noundef %236) #10
  %238 = load i32, ptr %217, align 4, !tbaa !5
  %239 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %229, ptr noundef nonnull %.str.5.sink201, i32 noundef %230, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 44, ptr noundef %233, ptr noundef %235, ptr noundef %237, i32 noundef %238) #12
  call void @exit(i32 noundef 1) #13
  unreachable

240:                                              ; preds = %209
  store i8 33, ptr %211, align 4, !tbaa !15
  %241 = load i32, ptr @test_count, align 4, !tbaa !5
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr @test_count, align 4, !tbaa !5
  %243 = call zeroext i1 %214(ptr noundef nonnull %210) #10
  br i1 %243, label %268, label %244

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

251:                                              ; preds = %244
  %252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %253 = call i32 @fileno(ptr noundef %252) #10
  %254 = call i32 @isatty(i32 noundef %253) #10
  %.not = icmp eq i32 %254, 0
  br i1 %.not, label %255, label %256

255:                                              ; preds = %251, %244
  br label %256

256:                                              ; preds = %251, %255
  %.str.5.sink212 = phi ptr [ @.str.5, %255 ], [ @.str.2, %251 ]
  store i32 %246, ptr %245, align 4, !tbaa !5
  %257 = load ptr, ptr @stderr, align 8, !tbaa !9
  %258 = load i32, ptr @test_count, align 4, !tbaa !5
  %259 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %260 = load i32, ptr %259, align 4, !tbaa !5
  %261 = call ptr @s2n_strerror(i32 noundef %260, ptr noundef nonnull @.str.4) #10
  %262 = load i32, ptr %259, align 4, !tbaa !5
  %263 = call ptr @s2n_strerror_debug(i32 noundef %262, ptr noundef nonnull @.str.4) #10
  %264 = load i32, ptr %245, align 4, !tbaa !5
  %265 = call ptr @strerror(i32 noundef %264) #10
  %266 = load i32, ptr %245, align 4, !tbaa !5
  %267 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %257, ptr noundef nonnull %.str.5.sink212, i32 noundef %258, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %261, ptr noundef %263, ptr noundef %265, i32 noundef %266) #12
  call void @exit(i32 noundef 1) #13
  unreachable

268:                                              ; preds = %240
  store i8 34, ptr %211, align 4, !tbaa !15
  %269 = load i32, ptr @test_count, align 4, !tbaa !5
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr @test_count, align 4, !tbaa !5
  %271 = call zeroext i1 %214(ptr noundef nonnull %210) #10
  br i1 %271, label %296, label %272

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

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

283:                                              ; preds = %279, %272
  br label %284

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

296:                                              ; preds = %268
  %297 = call i32 @s2n_connection_free(ptr noundef nonnull %210) #10
  %298 = call ptr @s2n_connection_new(i32 noundef 1) #10
  %299 = call ptr @s2n_connection_new(i32 noundef 0) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %4, i8 0, i64 40, i1 false)
  %300 = load i32, ptr @test_count, align 4, !tbaa !5
  %301 = add nsw i32 %300, 1
  store i32 %301, ptr @test_count, align 4, !tbaa !5
  %302 = call i32 @s2n_stuffer_growable_alloc(ptr noundef nonnull %4, i32 noundef 0) #10
  %303 = icmp eq i32 %302, -1
  br i1 %303, label %304, label %328

304:                                              ; preds = %296
  %305 = tail call ptr @__errno_location() #11
  %306 = load i32, ptr %305, align 4, !tbaa !5
  %307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %308 = call i32 @s2n_print_stacktrace(ptr noundef %307) #10
  %309 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %310 = trunc nuw i8 %309 to i1
  br i1 %310, label %311, label %315

311:                                              ; preds = %304
  %312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %313 = call i32 @fileno(ptr noundef %312) #10
  %314 = call i32 @isatty(i32 noundef %313) #10
  %.not113 = icmp eq i32 %314, 0
  br i1 %.not113, label %315, label %316

315:                                              ; preds = %311, %304
  br label %316

316:                                              ; preds = %311, %315
  %.str.5.sink234 = phi ptr [ @.str.5, %315 ], [ @.str.2, %311 ]
  store i32 %306, ptr %305, align 4, !tbaa !5
  %317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %318 = load i32, ptr @test_count, align 4, !tbaa !5
  %319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %320 = load i32, ptr %319, align 4, !tbaa !5
  %321 = call ptr @s2n_strerror(i32 noundef %320, ptr noundef nonnull @.str.4) #10
  %322 = load i32, ptr %319, align 4, !tbaa !5
  %323 = call ptr @s2n_strerror_debug(i32 noundef %322, ptr noundef nonnull @.str.4) #10
  %324 = load i32, ptr %305, align 4, !tbaa !5
  %325 = call ptr @strerror(i32 noundef %324) #10
  %326 = load i32, ptr %305, align 4, !tbaa !5
  %327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef nonnull %.str.5.sink234, i32 noundef %318, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 61, ptr noundef %321, ptr noundef %323, ptr noundef %325, i32 noundef %326) #12
  call void @exit(i32 noundef 1) #13
  unreachable

328:                                              ; preds = %296
  %329 = load i32, ptr @test_count, align 4, !tbaa !5
  %330 = add nsw i32 %329, 1
  store i32 %330, ptr @test_count, align 4, !tbaa !5
  %331 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_client_signature_algorithms_extension, i64 8), align 8, !tbaa !44
  %332 = call i32 %331(ptr noundef %298, ptr noundef nonnull %4) #10
  %333 = icmp eq i32 %332, -1
  br i1 %333, label %334, label %358

334:                                              ; preds = %328
  %335 = tail call ptr @__errno_location() #11
  %336 = load i32, ptr %335, align 4, !tbaa !5
  %337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %338 = call i32 @s2n_print_stacktrace(ptr noundef %337) #10
  %339 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %340 = trunc nuw i8 %339 to i1
  br i1 %340, label %341, label %345

341:                                              ; preds = %334
  %342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %343 = call i32 @fileno(ptr noundef %342) #10
  %344 = call i32 @isatty(i32 noundef %343) #10
  %.not112 = icmp eq i32 %344, 0
  br i1 %.not112, label %345, label %346

345:                                              ; preds = %341, %334
  br label %346

346:                                              ; preds = %341, %345
  %.str.5.sink245 = phi ptr [ @.str.5, %345 ], [ @.str.2, %341 ]
  store i32 %336, ptr %335, align 4, !tbaa !5
  %347 = load ptr, ptr @stderr, align 8, !tbaa !9
  %348 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %350, ptr noundef nonnull @.str.4) #10
  %352 = load i32, ptr %349, align 4, !tbaa !5
  %353 = call ptr @s2n_strerror_debug(i32 noundef %352, ptr noundef nonnull @.str.4) #10
  %354 = load i32, ptr %335, align 4, !tbaa !5
  %355 = call ptr @strerror(i32 noundef %354) #10
  %356 = load i32, ptr %335, align 4, !tbaa !5
  %357 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %347, ptr noundef nonnull %.str.5.sink245, i32 noundef %348, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 63, ptr noundef %351, ptr noundef %353, ptr noundef %355, i32 noundef %356) #12
  call void @exit(i32 noundef 1) #13
  unreachable

358:                                              ; preds = %328
  %359 = load i32, ptr @test_count, align 4, !tbaa !5
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr @test_count, align 4, !tbaa !5
  %361 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_client_signature_algorithms_extension, i64 16), align 8, !tbaa !45
  %362 = call i32 %361(ptr noundef %299, ptr noundef nonnull %4) #10
  %363 = icmp eq i32 %362, -1
  br i1 %363, label %364, label %388

364:                                              ; preds = %358
  %365 = tail call ptr @__errno_location() #11
  %366 = load i32, ptr %365, align 4, !tbaa !5
  %367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %368 = call i32 @s2n_print_stacktrace(ptr noundef %367) #10
  %369 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %370 = trunc nuw i8 %369 to i1
  br i1 %370, label %371, label %375

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

375:                                              ; preds = %371, %364
  br label %376

376:                                              ; preds = %371, %375
  %.str.5.sink256 = phi ptr [ @.str.5, %375 ], [ @.str.2, %371 ]
  store i32 %366, ptr %365, align 4, !tbaa !5
  %377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %378 = load i32, ptr @test_count, align 4, !tbaa !5
  %379 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %380 = load i32, ptr %379, align 4, !tbaa !5
  %381 = call ptr @s2n_strerror(i32 noundef %380, ptr noundef nonnull @.str.4) #10
  %382 = load i32, ptr %379, align 4, !tbaa !5
  %383 = call ptr @s2n_strerror_debug(i32 noundef %382, ptr noundef nonnull @.str.4) #10
  %384 = load i32, ptr %365, align 4, !tbaa !5
  %385 = call ptr @strerror(i32 noundef %384) #10
  %386 = load i32, ptr %365, align 4, !tbaa !5
  %387 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %377, ptr noundef nonnull %.str.5.sink256, i32 noundef %378, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 64, ptr noundef %381, ptr noundef %383, ptr noundef %385, i32 noundef %386) #12
  call void @exit(i32 noundef 1) #13
  unreachable

388:                                              ; preds = %358
  %389 = load i32, ptr @test_count, align 4, !tbaa !5
  %390 = add nsw i32 %389, 1
  store i32 %390, ptr @test_count, align 4, !tbaa !5
  %391 = getelementptr inbounds i8, ptr %4, i64 28
  %392 = load i32, ptr %391, align 4, !tbaa !46
  %393 = getelementptr inbounds i8, ptr %4, i64 24
  %394 = load i32, ptr %393, align 8, !tbaa !47
  %395 = icmp eq i32 %392, %394
  br i1 %395, label %420, label %396

396:                                              ; preds = %388
  %397 = tail call ptr @__errno_location() #11
  %398 = load i32, ptr %397, align 4, !tbaa !5
  %399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %400 = call i32 @s2n_print_stacktrace(ptr noundef %399) #10
  %401 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %402 = trunc nuw i8 %401 to i1
  br i1 %402, label %403, label %407

403:                                              ; preds = %396
  %404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %405 = call i32 @fileno(ptr noundef %404) #10
  %406 = call i32 @isatty(i32 noundef %405) #10
  %.not91 = icmp eq i32 %406, 0
  br i1 %.not91, label %407, label %408

407:                                              ; preds = %403, %396
  br label %408

408:                                              ; preds = %403, %407
  %.str.5.sink267 = phi ptr [ @.str.5, %407 ], [ @.str.2, %403 ]
  store i32 %398, ptr %397, align 4, !tbaa !5
  %409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %410 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %412, ptr noundef nonnull @.str.4) #10
  %414 = load i32, ptr %411, align 4, !tbaa !5
  %415 = call ptr @s2n_strerror_debug(i32 noundef %414, ptr noundef nonnull @.str.4) #10
  %416 = load i32, ptr %397, align 4, !tbaa !5
  %417 = call ptr @strerror(i32 noundef %416) #10
  %418 = load i32, ptr %397, align 4, !tbaa !5
  %419 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %409, ptr noundef nonnull %.str.5.sink267, i32 noundef %410, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 65, ptr noundef %413, ptr noundef %415, ptr noundef %417, i32 noundef %418) #12
  call void @exit(i32 noundef 1) #13
  unreachable

420:                                              ; preds = %388
  %421 = add nsw i32 %389, 2
  store i32 %421, ptr @test_count, align 4, !tbaa !5
  %422 = getelementptr inbounds i8, ptr %299, i64 1524
  %423 = load i8, ptr %422, align 4, !tbaa !48
  %.not92 = icmp eq i8 %423, 0
  br i1 %.not92, label %424, label %448

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

431:                                              ; preds = %424
  %432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %433 = call i32 @fileno(ptr noundef %432) #10
  %434 = call i32 @isatty(i32 noundef %433) #10
  %.not93 = icmp eq i32 %434, 0
  br i1 %.not93, label %435, label %436

435:                                              ; preds = %431, %424
  br label %436

436:                                              ; preds = %431, %435
  %.str.5.sink278 = phi ptr [ @.str.5, %435 ], [ @.str.2, %431 ]
  store i32 %426, ptr %425, align 4, !tbaa !5
  %437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %438 = load i32, ptr @test_count, align 4, !tbaa !5
  %439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %440 = load i32, ptr %439, align 4, !tbaa !5
  %441 = call ptr @s2n_strerror(i32 noundef %440, ptr noundef nonnull @.str.4) #10
  %442 = load i32, ptr %439, align 4, !tbaa !5
  %443 = call ptr @s2n_strerror_debug(i32 noundef %442, ptr noundef nonnull @.str.4) #10
  %444 = load i32, ptr %425, align 4, !tbaa !5
  %445 = call ptr @strerror(i32 noundef %444) #10
  %446 = load i32, ptr %425, align 4, !tbaa !5
  %447 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %437, ptr noundef nonnull %.str.5.sink278, i32 noundef %438, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 67, ptr noundef %441, ptr noundef %443, ptr noundef %445, i32 noundef %446) #12
  call void @exit(i32 noundef 1) #13
  unreachable

448:                                              ; preds = %420
  %449 = call i32 @s2n_stuffer_free(ptr noundef nonnull %4) #10
  %450 = call i32 @s2n_connection_free(ptr noundef %298) #10
  %451 = call i32 @s2n_connection_free(ptr noundef nonnull %299) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #10
  %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 ptr @s2n_connection_new(i32 noundef 0) #10
  %455 = icmp eq ptr %454, null
  br i1 %455, label %456, label %480

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

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

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

468:                                              ; preds = %463, %467
  %.str.5.sink289 = phi ptr [ @.str.5, %467 ], [ @.str.2, %463 ]
  store i32 %458, ptr %457, align 4, !tbaa !5
  %469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %470 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %472, ptr noundef nonnull @.str.4) #10
  %474 = load i32, ptr %471, align 4, !tbaa !5
  %475 = call ptr @s2n_strerror_debug(i32 noundef %474, ptr noundef nonnull @.str.4) #10
  %476 = load i32, ptr %457, align 4, !tbaa !5
  %477 = call ptr @strerror(i32 noundef %476) #10
  %478 = load i32, ptr %457, align 4, !tbaa !5
  %479 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %469, ptr noundef nonnull %.str.5.sink289, i32 noundef %470, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 81, ptr noundef %473, ptr noundef %475, ptr noundef %477, i32 noundef %478) #12
  call void @exit(i32 noundef 1) #13
  unreachable

480:                                              ; preds = %448
  %481 = call i32 @s2n_connection_set_config(ptr noundef nonnull %454, ptr noundef nonnull %124) #10
  %482 = icmp sgt i32 %481, -1
  br i1 %482, label %483, label %.thread

483:                                              ; preds = %480
  %484 = getelementptr inbounds i8, ptr %454, i64 220
  store i8 33, ptr %484, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %5, i8 0, i64 40, i1 false)
  %485 = load i32, ptr @test_count, align 4, !tbaa !5
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr @test_count, align 4, !tbaa !5
  %487 = call i32 @s2n_stuffer_alloc(ptr noundef nonnull %5, i32 noundef 8) #10
  %488 = icmp eq i32 %487, -1
  br i1 %488, label %489, label %513

489:                                              ; preds = %483
  %490 = tail call ptr @__errno_location() #11
  %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) #10
  %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) #10
  %499 = call i32 @isatty(i32 noundef %498) #10
  %.not109 = icmp eq i32 %499, 0
  br i1 %.not109, label %500, label %501

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

501:                                              ; preds = %496, %500
  %.str.5.sink300 = phi ptr [ @.str.5, %500 ], [ @.str.2, %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.4) #10
  %507 = load i32, ptr %504, align 4, !tbaa !5
  %508 = call ptr @s2n_strerror_debug(i32 noundef %507, ptr noundef nonnull @.str.4) #10
  %509 = load i32, ptr %490, align 4, !tbaa !5
  %510 = call ptr @strerror(i32 noundef %509) #10
  %511 = load i32, ptr %490, align 4, !tbaa !5
  %512 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %502, ptr noundef nonnull %.str.5.sink300, i32 noundef %503, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 86, ptr noundef %506, ptr noundef %508, ptr noundef %510, i32 noundef %511) #12
  call void @exit(i32 noundef 1) #13
  unreachable

513:                                              ; preds = %483
  %514 = load i32, ptr @test_count, align 4, !tbaa !5
  %515 = add nsw i32 %514, 1
  store i32 %515, ptr @test_count, align 4, !tbaa !5
  %516 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %5, i16 noundef zeroext 6) #10
  %517 = icmp eq i32 %516, -1
  br i1 %517, label %522, label %.preheader.preheader

.preheader.preheader:                             ; preds = %513
  %518 = load i32, ptr @test_count, align 4, !tbaa !5
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr @test_count, align 4, !tbaa !5
  %520 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %5, i16 noundef zeroext -255) #10
  %521 = icmp eq i32 %520, -1
  br i1 %521, label %559, label %.preheader.1

522:                                              ; preds = %513
  %523 = tail call ptr @__errno_location() #11
  %524 = load i32, ptr %523, align 4, !tbaa !5
  %525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %526 = call i32 @s2n_print_stacktrace(ptr noundef %525) #10
  %527 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %528 = trunc nuw i8 %527 to i1
  br i1 %528, label %529, label %533

529:                                              ; preds = %522
  %530 = load ptr, ptr @stderr, align 8, !tbaa !9
  %531 = call i32 @fileno(ptr noundef %530) #10
  %532 = call i32 @isatty(i32 noundef %531) #10
  %.not108 = icmp eq i32 %532, 0
  br i1 %.not108, label %533, label %534

533:                                              ; preds = %529, %522
  br label %534

534:                                              ; preds = %529, %533
  %.str.5.sink311 = phi ptr [ @.str.5, %533 ], [ @.str.2, %529 ]
  store i32 %524, ptr %523, align 4, !tbaa !5
  %535 = load ptr, ptr @stderr, align 8, !tbaa !9
  %536 = load i32, ptr @test_count, align 4, !tbaa !5
  %537 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %538 = load i32, ptr %537, align 4, !tbaa !5
  %539 = call ptr @s2n_strerror(i32 noundef %538, ptr noundef nonnull @.str.4) #10
  %540 = load i32, ptr %537, align 4, !tbaa !5
  %541 = call ptr @s2n_strerror_debug(i32 noundef %540, ptr noundef nonnull @.str.4) #10
  %542 = load i32, ptr %523, align 4, !tbaa !5
  %543 = call ptr @strerror(i32 noundef %542) #10
  %544 = load i32, ptr %523, align 4, !tbaa !5
  %545 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %535, ptr noundef nonnull %.str.5.sink311, i32 noundef %536, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 87, ptr noundef %539, ptr noundef %541, ptr noundef %543, i32 noundef %544) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.preheader.1:                                     ; preds = %.preheader.preheader
  %546 = load i32, ptr @test_count, align 4, !tbaa !5
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr @test_count, align 4, !tbaa !5
  %548 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %5, i16 noundef zeroext -1) #10
  %549 = icmp eq i32 %548, -1
  br i1 %549, label %559, label %.preheader.2

.preheader.2:                                     ; preds = %.preheader.1
  %550 = load i32, ptr @test_count, align 4, !tbaa !5
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr @test_count, align 4, !tbaa !5
  %552 = call i32 @s2n_stuffer_write_uint16(ptr noundef nonnull %5, i16 noundef zeroext 1281) #10
  %553 = icmp eq i32 %552, -1
  br i1 %553, label %559, label %554

554:                                              ; preds = %.preheader.2
  %555 = load i32, ptr @test_count, align 4, !tbaa !5
  %556 = add nsw i32 %555, 1
  store i32 %556, ptr @test_count, align 4, !tbaa !5
  %557 = call i32 %361(ptr noundef nonnull %454, ptr noundef nonnull %5) #10
  %558 = icmp eq i32 %557, -1
  br i1 %558, label %583, label %607

559:                                              ; preds = %.preheader.2, %.preheader.1, %.preheader.preheader
  %560 = tail call ptr @__errno_location() #11
  %561 = load i32, ptr %560, align 4, !tbaa !5
  %562 = load ptr, ptr @stderr, align 8, !tbaa !9
  %563 = call i32 @s2n_print_stacktrace(ptr noundef %562) #10
  %564 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %565 = trunc nuw i8 %564 to i1
  br i1 %565, label %566, label %570

566:                                              ; preds = %559
  %567 = load ptr, ptr @stderr, align 8, !tbaa !9
  %568 = call i32 @fileno(ptr noundef %567) #10
  %569 = call i32 @isatty(i32 noundef %568) #10
  %.not107 = icmp eq i32 %569, 0
  br i1 %.not107, label %570, label %571

570:                                              ; preds = %566, %559
  br label %571

571:                                              ; preds = %566, %570
  %.str.5.sink322 = phi ptr [ @.str.5, %570 ], [ @.str.2, %566 ]
  store i32 %561, ptr %560, align 4, !tbaa !5
  %572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %573 = load i32, ptr @test_count, align 4, !tbaa !5
  %574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %575 = load i32, ptr %574, align 4, !tbaa !5
  %576 = call ptr @s2n_strerror(i32 noundef %575, ptr noundef nonnull @.str.4) #10
  %577 = load i32, ptr %574, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror_debug(i32 noundef %577, ptr noundef nonnull @.str.4) #10
  %579 = load i32, ptr %560, align 4, !tbaa !5
  %580 = call ptr @strerror(i32 noundef %579) #10
  %581 = load i32, ptr %560, align 4, !tbaa !5
  %582 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %572, ptr noundef nonnull %.str.5.sink322, i32 noundef %573, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 89, ptr noundef %576, ptr noundef %578, ptr noundef %580, i32 noundef %581) #12
  call void @exit(i32 noundef 1) #13
  unreachable

583:                                              ; preds = %554
  %584 = tail call ptr @__errno_location() #11
  %585 = load i32, ptr %584, align 4, !tbaa !5
  %586 = load ptr, ptr @stderr, align 8, !tbaa !9
  %587 = call i32 @s2n_print_stacktrace(ptr noundef %586) #10
  %588 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %589 = trunc nuw i8 %588 to i1
  br i1 %589, label %590, label %594

590:                                              ; preds = %583
  %591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %592 = call i32 @fileno(ptr noundef %591) #10
  %593 = call i32 @isatty(i32 noundef %592) #10
  %.not106 = icmp eq i32 %593, 0
  br i1 %.not106, label %594, label %595

594:                                              ; preds = %590, %583
  br label %595

595:                                              ; preds = %590, %594
  %.str.5.sink333 = phi ptr [ @.str.5, %594 ], [ @.str.2, %590 ]
  store i32 %585, ptr %584, align 4, !tbaa !5
  %596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %597 = load i32, ptr @test_count, align 4, !tbaa !5
  %598 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %599 = load i32, ptr %598, align 4, !tbaa !5
  %600 = call ptr @s2n_strerror(i32 noundef %599, ptr noundef nonnull @.str.4) #10
  %601 = load i32, ptr %598, align 4, !tbaa !5
  %602 = call ptr @s2n_strerror_debug(i32 noundef %601, ptr noundef nonnull @.str.4) #10
  %603 = load i32, ptr %584, align 4, !tbaa !5
  %604 = call ptr @strerror(i32 noundef %603) #10
  %605 = load i32, ptr %584, align 4, !tbaa !5
  %606 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %596, ptr noundef nonnull %.str.5.sink333, i32 noundef %597, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 93, ptr noundef %600, ptr noundef %602, ptr noundef %604, i32 noundef %605) #12
  call void @exit(i32 noundef 1) #13
  unreachable

607:                                              ; preds = %554
  %608 = load i32, ptr @test_count, align 4, !tbaa !5
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr @test_count, align 4, !tbaa !5
  %610 = getelementptr inbounds i8, ptr %454, i64 1524
  %611 = load i8, ptr %610, align 4, !tbaa !48
  %612 = icmp eq i8 %611, 3
  br i1 %612, label %637, label %613

613:                                              ; preds = %607
  %614 = tail call ptr @__errno_location() #11
  %615 = load i32, ptr %614, align 4, !tbaa !5
  %616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %617 = call i32 @s2n_print_stacktrace(ptr noundef %616) #10
  %618 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %619 = trunc nuw i8 %618 to i1
  br i1 %619, label %620, label %624

620:                                              ; preds = %613
  %621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %622 = call i32 @fileno(ptr noundef %621) #10
  %623 = call i32 @isatty(i32 noundef %622) #10
  %.not94 = icmp eq i32 %623, 0
  br i1 %.not94, label %624, label %625

624:                                              ; preds = %620, %613
  br label %625

625:                                              ; preds = %620, %624
  %.str.5.sink344 = phi ptr [ @.str.5, %624 ], [ @.str.2, %620 ]
  store i32 %615, ptr %614, align 4, !tbaa !5
  %626 = load ptr, ptr @stderr, align 8, !tbaa !9
  %627 = load i32, ptr @test_count, align 4, !tbaa !5
  %628 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %629 = load i32, ptr %628, align 4, !tbaa !5
  %630 = call ptr @s2n_strerror(i32 noundef %629, ptr noundef nonnull @.str.4) #10
  %631 = load i32, ptr %628, align 4, !tbaa !5
  %632 = call ptr @s2n_strerror_debug(i32 noundef %631, ptr noundef nonnull @.str.4) #10
  %633 = load i32, ptr %614, align 4, !tbaa !5
  %634 = call ptr @strerror(i32 noundef %633) #10
  %635 = load i32, ptr %614, align 4, !tbaa !5
  %636 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %626, ptr noundef nonnull %.str.5.sink344, i32 noundef %627, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 94, ptr noundef %630, ptr noundef %632, ptr noundef %634, i32 noundef %635) #12
  call void @exit(i32 noundef 1) #13
  unreachable

637:                                              ; preds = %607
  %638 = add nsw i32 %608, 2
  store i32 %638, ptr @test_count, align 4, !tbaa !5
  %639 = call i32 @s2n_signature_algorithm_select(ptr noundef nonnull %454) #10
  %640 = call zeroext i1 @s2n_result_is_ok(i32 %639)
  br i1 %640, label %665, label %641

641:                                              ; preds = %637
  %642 = tail call ptr @__errno_location() #11
  %643 = load i32, ptr %642, align 4, !tbaa !5
  %644 = load ptr, ptr @stderr, align 8, !tbaa !9
  %645 = call i32 @s2n_print_stacktrace(ptr noundef %644) #10
  %646 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %647 = trunc nuw i8 %646 to i1
  br i1 %647, label %648, label %652

648:                                              ; preds = %641
  %649 = load ptr, ptr @stderr, align 8, !tbaa !9
  %650 = call i32 @fileno(ptr noundef %649) #10
  %651 = call i32 @isatty(i32 noundef %650) #10
  %.not95 = icmp eq i32 %651, 0
  br i1 %.not95, label %652, label %653

652:                                              ; preds = %648, %641
  br label %653

653:                                              ; preds = %648, %652
  %.str.5.sink355 = phi ptr [ @.str.5, %652 ], [ @.str.2, %648 ]
  store i32 %643, ptr %642, align 4, !tbaa !5
  %654 = load ptr, ptr @stderr, align 8, !tbaa !9
  %655 = load i32, ptr @test_count, align 4, !tbaa !5
  %656 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %657 = load i32, ptr %656, align 4, !tbaa !5
  %658 = call ptr @s2n_strerror(i32 noundef %657, ptr noundef nonnull @.str.4) #10
  %659 = load i32, ptr %656, align 4, !tbaa !5
  %660 = call ptr @s2n_strerror_debug(i32 noundef %659, ptr noundef nonnull @.str.4) #10
  %661 = load i32, ptr %642, align 4, !tbaa !5
  %662 = call ptr @strerror(i32 noundef %661) #10
  %663 = load i32, ptr %642, align 4, !tbaa !5
  %664 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %654, ptr noundef nonnull %.str.5.sink355, i32 noundef %655, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 95, ptr noundef %658, ptr noundef %660, ptr noundef %662, i32 noundef %663) #12
  call void @exit(i32 noundef 1) #13
  unreachable

665:                                              ; preds = %637
  %666 = load i32, ptr @test_count, align 4, !tbaa !5
  %667 = add nsw i32 %666, 1
  store i32 %667, ptr @test_count, align 4, !tbaa !5
  %668 = getelementptr inbounds i8, ptr %454, i64 1528
  %669 = load ptr, ptr %668, align 8, !tbaa !49
  %670 = load i16, ptr %669, align 8, !tbaa !50
  %671 = icmp eq i16 %670, 1281
  br i1 %671, label %696, label %672

672:                                              ; preds = %665
  %673 = tail call ptr @__errno_location() #11
  %674 = load i32, ptr %673, align 4, !tbaa !5
  %675 = load ptr, ptr @stderr, align 8, !tbaa !9
  %676 = call i32 @s2n_print_stacktrace(ptr noundef %675) #10
  %677 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %678 = trunc nuw i8 %677 to i1
  br i1 %678, label %679, label %683

679:                                              ; preds = %672
  %680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %681 = call i32 @fileno(ptr noundef %680) #10
  %682 = call i32 @isatty(i32 noundef %681) #10
  %.not96 = icmp eq i32 %682, 0
  br i1 %.not96, label %683, label %684

683:                                              ; preds = %679, %672
  br label %684

684:                                              ; preds = %679, %683
  %.str.5.sink366 = phi ptr [ @.str.5, %683 ], [ @.str.2, %679 ]
  store i32 %674, ptr %673, align 4, !tbaa !5
  %685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %686 = load i32, ptr @test_count, align 4, !tbaa !5
  %687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %688 = load i32, ptr %687, align 4, !tbaa !5
  %689 = call ptr @s2n_strerror(i32 noundef %688, ptr noundef nonnull @.str.4) #10
  %690 = load i32, ptr %687, align 4, !tbaa !5
  %691 = call ptr @s2n_strerror_debug(i32 noundef %690, ptr noundef nonnull @.str.4) #10
  %692 = load i32, ptr %673, align 4, !tbaa !5
  %693 = call ptr @strerror(i32 noundef %692) #10
  %694 = load i32, ptr %673, align 4, !tbaa !5
  %695 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %685, ptr noundef nonnull %.str.5.sink366, i32 noundef %686, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 96, ptr noundef %689, ptr noundef %691, ptr noundef %693, i32 noundef %694) #12
  call void @exit(i32 noundef 1) #13
  unreachable

696:                                              ; preds = %665
  %697 = add nsw i32 %666, 2
  store i32 %697, ptr @test_count, align 4, !tbaa !5
  %698 = call i32 @s2n_stuffer_free(ptr noundef nonnull %5) #10
  %699 = icmp eq i32 %698, -1
  br i1 %699, label %700, label %724

700:                                              ; preds = %696
  %701 = tail call ptr @__errno_location() #11
  %702 = load i32, ptr %701, align 4, !tbaa !5
  %703 = load ptr, ptr @stderr, align 8, !tbaa !9
  %704 = call i32 @s2n_print_stacktrace(ptr noundef %703) #10
  %705 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %706 = trunc nuw i8 %705 to i1
  br i1 %706, label %707, label %711

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

711:                                              ; preds = %707, %700
  br label %712

712:                                              ; preds = %707, %711
  %.str.5.sink377 = phi ptr [ @.str.5, %711 ], [ @.str.2, %707 ]
  store i32 %702, ptr %701, align 4, !tbaa !5
  %713 = load ptr, ptr @stderr, align 8, !tbaa !9
  %714 = load i32, ptr @test_count, align 4, !tbaa !5
  %715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %716 = load i32, ptr %715, align 4, !tbaa !5
  %717 = call ptr @s2n_strerror(i32 noundef %716, ptr noundef nonnull @.str.4) #10
  %718 = load i32, ptr %715, align 4, !tbaa !5
  %719 = call ptr @s2n_strerror_debug(i32 noundef %718, ptr noundef nonnull @.str.4) #10
  %720 = load i32, ptr %701, align 4, !tbaa !5
  %721 = call ptr @strerror(i32 noundef %720) #10
  %722 = load i32, ptr %701, align 4, !tbaa !5
  %723 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %713, ptr noundef nonnull %.str.5.sink377, i32 noundef %714, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 98, ptr noundef %717, ptr noundef %719, ptr noundef %721, i32 noundef %722) #12
  call void @exit(i32 noundef 1) #13
  unreachable

724:                                              ; preds = %696
  %725 = load i32, ptr @test_count, align 4, !tbaa !5
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr @test_count, align 4, !tbaa !5
  %727 = call i32 @s2n_connection_free(ptr noundef nonnull %454) #10
  %728 = icmp eq i32 %727, -1
  br i1 %728, label %729, label %753

729:                                              ; preds = %724
  %730 = tail call ptr @__errno_location() #11
  %731 = load i32, ptr %730, align 4, !tbaa !5
  %732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %733 = call i32 @s2n_print_stacktrace(ptr noundef %732) #10
  %734 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %735 = trunc nuw i8 %734 to i1
  br i1 %735, label %736, label %740

736:                                              ; preds = %729
  %737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %738 = call i32 @fileno(ptr noundef %737) #10
  %739 = call i32 @isatty(i32 noundef %738) #10
  %.not104 = icmp eq i32 %739, 0
  br i1 %.not104, label %740, label %741

740:                                              ; preds = %736, %729
  br label %741

741:                                              ; preds = %736, %740
  %.str.5.sink388 = phi ptr [ @.str.5, %740 ], [ @.str.2, %736 ]
  store i32 %731, ptr %730, align 4, !tbaa !5
  %742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %743 = load i32, ptr @test_count, align 4, !tbaa !5
  %744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %745 = load i32, ptr %744, align 4, !tbaa !5
  %746 = call ptr @s2n_strerror(i32 noundef %745, ptr noundef nonnull @.str.4) #10
  %747 = load i32, ptr %744, align 4, !tbaa !5
  %748 = call ptr @s2n_strerror_debug(i32 noundef %747, ptr noundef nonnull @.str.4) #10
  %749 = load i32, ptr %730, align 4, !tbaa !5
  %750 = call ptr @strerror(i32 noundef %749) #10
  %751 = load i32, ptr %730, align 4, !tbaa !5
  %752 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %742, ptr noundef nonnull %.str.5.sink388, i32 noundef %743, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 99, ptr noundef %746, ptr noundef %748, ptr noundef %750, i32 noundef %751) #12
  call void @exit(i32 noundef 1) #13
  unreachable

753:                                              ; preds = %724
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #10
  %754 = load i32, ptr @test_count, align 4, !tbaa !5
  %755 = add nsw i32 %754, 1
  store i32 %755, ptr @test_count, align 4, !tbaa !5
  %756 = call i32 @s2n_config_free(ptr noundef nonnull %124) #10
  %757 = icmp eq i32 %756, -1
  br i1 %757, label %758, label %782

758:                                              ; preds = %753
  %759 = tail call ptr @__errno_location() #11
  %760 = load i32, ptr %759, align 4, !tbaa !5
  %761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %762 = call i32 @s2n_print_stacktrace(ptr noundef %761) #10
  %763 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %764 = trunc nuw i8 %763 to i1
  br i1 %764, label %765, label %769

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

769:                                              ; preds = %765, %758
  br label %770

770:                                              ; preds = %765, %769
  %.str.5.sink399 = phi ptr [ @.str.5, %769 ], [ @.str.2, %765 ]
  store i32 %760, ptr %759, align 4, !tbaa !5
  %771 = load ptr, ptr @stderr, align 8, !tbaa !9
  %772 = load i32, ptr @test_count, align 4, !tbaa !5
  %773 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %774 = load i32, ptr %773, align 4, !tbaa !5
  %775 = call ptr @s2n_strerror(i32 noundef %774, ptr noundef nonnull @.str.4) #10
  %776 = load i32, ptr %773, align 4, !tbaa !5
  %777 = call ptr @s2n_strerror_debug(i32 noundef %776, ptr noundef nonnull @.str.4) #10
  %778 = load i32, ptr %759, align 4, !tbaa !5
  %779 = call ptr @strerror(i32 noundef %778) #10
  %780 = load i32, ptr %759, align 4, !tbaa !5
  %781 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %771, ptr noundef nonnull %.str.5.sink399, i32 noundef %772, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 102, ptr noundef %775, ptr noundef %777, ptr noundef %779, i32 noundef %780) #12
  call void @exit(i32 noundef 1) #13
  unreachable

782:                                              ; preds = %753
  %783 = load i32, ptr @test_count, align 4, !tbaa !5
  %784 = add nsw i32 %783, 1
  store i32 %784, ptr @test_count, align 4, !tbaa !5
  %785 = load ptr, ptr %3, align 8, !tbaa !9
  %786 = call i32 @s2n_cert_chain_and_key_free(ptr noundef %785) #10
  %787 = icmp eq i32 %786, -1
  br i1 %787, label %788, label %812

788:                                              ; preds = %782
  %789 = tail call ptr @__errno_location() #11
  %790 = load i32, ptr %789, align 4, !tbaa !5
  %791 = load ptr, ptr @stderr, align 8, !tbaa !9
  %792 = call i32 @s2n_print_stacktrace(ptr noundef %791) #10
  %793 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %794 = trunc nuw i8 %793 to i1
  br i1 %794, label %795, label %799

795:                                              ; preds = %788
  %796 = load ptr, ptr @stderr, align 8, !tbaa !9
  %797 = call i32 @fileno(ptr noundef %796) #10
  %798 = call i32 @isatty(i32 noundef %797) #10
  %.not102 = icmp eq i32 %798, 0
  br i1 %.not102, label %799, label %800

799:                                              ; preds = %795, %788
  br label %800

800:                                              ; preds = %795, %799
  %.str.5.sink410 = phi ptr [ @.str.5, %799 ], [ @.str.2, %795 ]
  store i32 %790, ptr %789, align 4, !tbaa !5
  %801 = load ptr, ptr @stderr, align 8, !tbaa !9
  %802 = load i32, ptr @test_count, align 4, !tbaa !5
  %803 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %804 = load i32, ptr %803, align 4, !tbaa !5
  %805 = call ptr @s2n_strerror(i32 noundef %804, ptr noundef nonnull @.str.4) #10
  %806 = load i32, ptr %803, align 4, !tbaa !5
  %807 = call ptr @s2n_strerror_debug(i32 noundef %806, ptr noundef nonnull @.str.4) #10
  %808 = load i32, ptr %789, align 4, !tbaa !5
  %809 = call ptr @strerror(i32 noundef %808) #10
  %810 = load i32, ptr %789, align 4, !tbaa !5
  %811 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %801, ptr noundef nonnull %.str.5.sink410, i32 noundef %802, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 103, ptr noundef %805, ptr noundef %807, ptr noundef %809, i32 noundef %810) #12
  call void @exit(i32 noundef 1) #13
  unreachable

812:                                              ; preds = %782
  %813 = call i32 @s2n_cleanup() #10
  %814 = icmp eq i32 %813, -1
  br i1 %814, label %815, label %839

815:                                              ; preds = %812
  %816 = tail call ptr @__errno_location() #11
  %817 = load i32, ptr %816, align 4, !tbaa !5
  %818 = load ptr, ptr @stderr, align 8, !tbaa !9
  %819 = call i32 @s2n_print_stacktrace(ptr noundef %818) #10
  %820 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %821 = trunc nuw i8 %820 to i1
  br i1 %821, label %822, label %826

822:                                              ; preds = %815
  %823 = load ptr, ptr @stderr, align 8, !tbaa !9
  %824 = call i32 @fileno(ptr noundef %823) #10
  %825 = call i32 @isatty(i32 noundef %824) #10
  %.not101 = icmp eq i32 %825, 0
  br i1 %.not101, label %826, label %827

826:                                              ; preds = %822, %815
  br label %827

827:                                              ; preds = %822, %826
  %.str.5.sink421 = phi ptr [ @.str.5, %826 ], [ @.str.2, %822 ]
  store i32 %817, ptr %816, align 4, !tbaa !5
  %828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %829 = load i32, ptr @test_count, align 4, !tbaa !5
  %830 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %831 = load i32, ptr %830, align 4, !tbaa !5
  %832 = call ptr @s2n_strerror(i32 noundef %831, ptr noundef nonnull @.str.4) #10
  %833 = load i32, ptr %830, align 4, !tbaa !5
  %834 = call ptr @s2n_strerror_debug(i32 noundef %833, ptr noundef nonnull @.str.4) #10
  %835 = load i32, ptr %816, align 4, !tbaa !5
  %836 = call ptr @strerror(i32 noundef %835) #10
  %837 = load i32, ptr %816, align 4, !tbaa !5
  %838 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %828, ptr noundef nonnull %.str.5.sink421, i32 noundef %829, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 105, ptr noundef %832, ptr noundef %834, ptr noundef %836, i32 noundef %837) #12
  call void @exit(i32 noundef 1) #13
  unreachable

839:                                              ; preds = %812
  %840 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %841 = icmp eq i32 %840, -1
  br i1 %841, label %842, label %866

842:                                              ; preds = %839
  %843 = tail call ptr @__errno_location() #11
  %844 = load i32, ptr %843, align 4, !tbaa !5
  %845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %846 = call i32 @s2n_print_stacktrace(ptr noundef %845) #10
  %847 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %848 = trunc nuw i8 %847 to i1
  br i1 %848, label %849, label %853

849:                                              ; preds = %842
  %850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %851 = call i32 @fileno(ptr noundef %850) #10
  %852 = call i32 @isatty(i32 noundef %851) #10
  %.not100 = icmp eq i32 %852, 0
  br i1 %.not100, label %853, label %854

853:                                              ; preds = %849, %842
  br label %854

854:                                              ; preds = %849, %853
  %.str.5.sink432 = phi ptr [ @.str.5, %853 ], [ @.str.2, %849 ]
  store i32 %844, ptr %843, align 4, !tbaa !5
  %855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %856 = load i32, ptr @test_count, align 4, !tbaa !5
  %857 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %858 = load i32, ptr %857, align 4, !tbaa !5
  %859 = call ptr @s2n_strerror(i32 noundef %858, ptr noundef nonnull @.str.4) #10
  %860 = load i32, ptr %857, align 4, !tbaa !5
  %861 = call ptr @s2n_strerror_debug(i32 noundef %860, ptr noundef nonnull @.str.4) #10
  %862 = load i32, ptr %843, align 4, !tbaa !5
  %863 = call ptr @strerror(i32 noundef %862) #10
  %864 = load i32, ptr %843, align 4, !tbaa !5
  %865 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %855, ptr noundef nonnull %.str.5.sink432, i32 noundef %856, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 105, ptr noundef %859, ptr noundef %861, ptr noundef %863, i32 noundef %864) #12
  call void @exit(i32 noundef 1) #13
  unreachable

866:                                              ; preds = %839
  %867 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %868 = trunc nuw i8 %867 to i1
  br i1 %868, label %869, label %880

869:                                              ; preds = %866
  %870 = load ptr, ptr @stdout, align 8, !tbaa !9
  %871 = call i32 @fileno(ptr noundef %870) #10
  %872 = call i32 @isatty(i32 noundef %871) #10
  %.not97 = icmp eq i32 %872, 0
  br i1 %.not97, label %880, label %873

873:                                              ; preds = %869
  %874 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not99 = icmp eq i32 %874, 0
  %875 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not99, label %878, label %876

876:                                              ; preds = %873
  %877 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %875, ptr noundef nonnull @.str.35, i32 noundef %874) #10
  br label %.thread

878:                                              ; preds = %873
  %879 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %875, ptr noundef nonnull @.str.36) #10
  br label %.thread

880:                                              ; preds = %869, %866
  %881 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not98 = icmp eq i32 %881, 0
  %882 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not98, label %885, label %883

883:                                              ; preds = %880
  %884 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %882, ptr noundef nonnull @.str.37, i32 noundef %881) #10
  br label %.thread

885:                                              ; preds = %880
  %886 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %882, ptr noundef nonnull @.str.38) #10
  br label %.thread

.thread:                                          ; preds = %480, %878, %876, %885, %883
  %.1 = phi i32 [ 0, %883 ], [ 0, %885 ], [ 0, %876 ], [ 0, %878 ], [ -1, %480 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  ret i32 %.1
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

declare ptr @s2n_config_new() local_unnamed_addr #2

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

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s2n_stuffer_free(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s2n_stuffer_write_uint16(ptr noundef, i16 noundef zeroext) local_unnamed_addr #2

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

declare i32 @s2n_signature_algorithm_select(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_config_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_cert_chain_and_key_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

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

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

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


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