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

@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 [79 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [63 x i8], align 1
@s2n_server_signature_algorithms_extension = external constant %struct.s2n_extension_type, align 8
@.str.11 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = 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 ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca %struct.s2n_stuffer, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  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 %23

23:                                               ; preds = %2
  br label %24

24:                                               ; preds = %23
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %25 = load ptr, ptr @stdout, align 8, !tbaa !9
  %26 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %25, ptr noundef @.str, ptr noundef @.str.1) #8
  %27 = load ptr, ptr @stdout, align 8, !tbaa !9
  %28 = call i32 @fflush(ptr noundef %27)
  br label %29

29:                                               ; preds = %24
  %30 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %31 = icmp eq i32 %30, -1
  br i1 %31, label %32, label %83

32:                                               ; preds = %29
  br label %33

33:                                               ; preds = %32
  br label %34

34:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  %35 = call ptr @__errno_location() #9
  %36 = load i32, ptr %35, align 4, !tbaa !5
  store i32 %36, ptr %6, align 4, !tbaa !5
  %37 = load ptr, ptr @stderr, align 8, !tbaa !9
  %38 = call i32 @s2n_print_stacktrace(ptr noundef %37)
  %39 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %40 = trunc i8 %39 to i1
  br i1 %40, label %41, label %63

41:                                               ; preds = %34
  %42 = load ptr, ptr @stderr, align 8, !tbaa !9
  %43 = call i32 @fileno(ptr noundef %42) #8
  %44 = call i32 @isatty(i32 noundef %43) #8
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %46, label %63

46:                                               ; preds = %41
  %47 = load i32, ptr %6, align 4, !tbaa !5
  %48 = call ptr @__errno_location() #9
  store i32 %47, ptr %48, align 4, !tbaa !5
  %49 = load ptr, ptr @stderr, align 8, !tbaa !9
  %50 = load i32, ptr @test_count, align 4, !tbaa !5
  %51 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %52 = load i32, ptr %51, align 4, !tbaa !5
  %53 = call ptr @s2n_strerror(i32 noundef %52, ptr noundef @.str.4)
  %54 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %55 = load i32, ptr %54, align 4, !tbaa !5
  %56 = call ptr @s2n_strerror_debug(i32 noundef %55, ptr noundef @.str.4)
  %57 = call ptr @__errno_location() #9
  %58 = load i32, ptr %57, align 4, !tbaa !5
  %59 = call ptr @strerror(i32 noundef %58) #8
  %60 = call ptr @__errno_location() #9
  %61 = load i32, ptr %60, align 4, !tbaa !5
  %62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %49, ptr noundef @.str.2, i32 noundef %50, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 30, ptr noundef %53, ptr noundef %56, ptr noundef %59, i32 noundef %61) #8
  br label %80

63:                                               ; preds = %41, %34
  %64 = load i32, ptr %6, align 4, !tbaa !5
  %65 = call ptr @__errno_location() #9
  store i32 %64, ptr %65, align 4, !tbaa !5
  %66 = load ptr, ptr @stderr, align 8, !tbaa !9
  %67 = load i32, ptr @test_count, align 4, !tbaa !5
  %68 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %69 = load i32, ptr %68, align 4, !tbaa !5
  %70 = call ptr @s2n_strerror(i32 noundef %69, ptr noundef @.str.4)
  %71 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %72 = load i32, ptr %71, align 4, !tbaa !5
  %73 = call ptr @s2n_strerror_debug(i32 noundef %72, ptr noundef @.str.4)
  %74 = call ptr @__errno_location() #9
  %75 = load i32, ptr %74, align 4, !tbaa !5
  %76 = call ptr @strerror(i32 noundef %75) #8
  %77 = call ptr @__errno_location() #9
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %66, ptr noundef @.str.5, i32 noundef %67, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 30, ptr noundef %70, ptr noundef %73, ptr noundef %76, i32 noundef %78) #8
  br label %80

80:                                               ; preds = %63, %46
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  br label %81

81:                                               ; preds = %80
  call void @exit(i32 noundef 1) #10
  unreachable

82:                                               ; No predecessors!
  br label %83

83:                                               ; preds = %82, %29
  br label %84

84:                                               ; preds = %83
  br label %85

85:                                               ; preds = %84
  %86 = load i32, ptr @test_count, align 4, !tbaa !5
  %87 = add nsw i32 %86, 1
  store i32 %87, ptr @test_count, align 4, !tbaa !5
  %88 = call i32 @s2n_enable_atexit()
  %89 = icmp eq i32 %88, -1
  br i1 %89, label %90, label %141

90:                                               ; preds = %85
  br label %91

91:                                               ; preds = %90
  br label %92

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

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

104:                                              ; preds = %99
  %105 = load i32, ptr %7, align 4, !tbaa !5
  %106 = call ptr @__errno_location() #9
  store i32 %105, ptr %106, align 4, !tbaa !5
  %107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %108 = load i32, ptr @test_count, align 4, !tbaa !5
  %109 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = call ptr @s2n_strerror(i32 noundef %110, ptr noundef @.str.4)
  %112 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = call ptr @s2n_strerror_debug(i32 noundef %113, ptr noundef @.str.4)
  %115 = call ptr @__errno_location() #9
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = call ptr @strerror(i32 noundef %116) #8
  %118 = call ptr @__errno_location() #9
  %119 = load i32, ptr %118, align 4, !tbaa !5
  %120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %107, ptr noundef @.str.2, i32 noundef %108, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 30, ptr noundef %111, ptr noundef %114, ptr noundef %117, i32 noundef %119) #8
  br label %138

121:                                              ; preds = %99, %92
  %122 = load i32, ptr %7, align 4, !tbaa !5
  %123 = call ptr @__errno_location() #9
  store i32 %122, ptr %123, align 4, !tbaa !5
  %124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %125 = load i32, ptr @test_count, align 4, !tbaa !5
  %126 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %127 = load i32, ptr %126, align 4, !tbaa !5
  %128 = call ptr @s2n_strerror(i32 noundef %127, ptr noundef @.str.4)
  %129 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %130 = load i32, ptr %129, align 4, !tbaa !5
  %131 = call ptr @s2n_strerror_debug(i32 noundef %130, ptr noundef @.str.4)
  %132 = call ptr @__errno_location() #9
  %133 = load i32, ptr %132, align 4, !tbaa !5
  %134 = call ptr @strerror(i32 noundef %133) #8
  %135 = call ptr @__errno_location() #9
  %136 = load i32, ptr %135, align 4, !tbaa !5
  %137 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %124, ptr noundef @.str.5, i32 noundef %125, ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 30, ptr noundef %128, ptr noundef %131, ptr noundef %134, i32 noundef %136) #8
  br label %138

138:                                              ; preds = %121, %104
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  br label %139

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

140:                                              ; No predecessors!
  br label %141

141:                                              ; preds = %140, %85
  br label %142

142:                                              ; preds = %141
  br label %143

143:                                              ; preds = %142
  br label %144

144:                                              ; preds = %143
  %145 = call i32 @s2n_init()
  %146 = icmp eq i32 %145, -1
  br i1 %146, label %147, label %198

147:                                              ; preds = %144
  br label %148

148:                                              ; preds = %147
  br label %149

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

156:                                              ; preds = %149
  %157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %158 = call i32 @fileno(ptr noundef %157) #8
  %159 = call i32 @isatty(i32 noundef %158) #8
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %178

161:                                              ; preds = %156
  %162 = load i32, ptr %8, align 4, !tbaa !5
  %163 = call ptr @__errno_location() #9
  store i32 %162, ptr %163, align 4, !tbaa !5
  %164 = load ptr, ptr @stderr, align 8, !tbaa !9
  %165 = load i32, ptr @test_count, align 4, !tbaa !5
  %166 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %167 = load i32, ptr %166, align 4, !tbaa !5
  %168 = call ptr @s2n_strerror(i32 noundef %167, ptr noundef @.str.4)
  %169 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %170 = load i32, ptr %169, align 4, !tbaa !5
  %171 = call ptr @s2n_strerror_debug(i32 noundef %170, ptr noundef @.str.4)
  %172 = call ptr @__errno_location() #9
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %174 = call ptr @strerror(i32 noundef %173) #8
  %175 = call ptr @__errno_location() #9
  %176 = load i32, ptr %175, align 4, !tbaa !5
  %177 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %164, ptr noundef @.str.2, i32 noundef %165, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 30, ptr noundef %168, ptr noundef %171, ptr noundef %174, i32 noundef %176) #8
  br label %195

178:                                              ; preds = %156, %149
  %179 = load i32, ptr %8, align 4, !tbaa !5
  %180 = call ptr @__errno_location() #9
  store i32 %179, ptr %180, align 4, !tbaa !5
  %181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %182 = load i32, ptr @test_count, align 4, !tbaa !5
  %183 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %184 = load i32, ptr %183, align 4, !tbaa !5
  %185 = call ptr @s2n_strerror(i32 noundef %184, ptr noundef @.str.4)
  %186 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = call ptr @s2n_strerror_debug(i32 noundef %187, ptr noundef @.str.4)
  %189 = call ptr @__errno_location() #9
  %190 = load i32, ptr %189, align 4, !tbaa !5
  %191 = call ptr @strerror(i32 noundef %190) #8
  %192 = call ptr @__errno_location() #9
  %193 = load i32, ptr %192, align 4, !tbaa !5
  %194 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %181, ptr noundef @.str.5, i32 noundef %182, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 30, ptr noundef %185, ptr noundef %188, ptr noundef %191, i32 noundef %193) #8
  br label %195

195:                                              ; preds = %178, %161
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  br label %196

196:                                              ; preds = %195
  call void @exit(i32 noundef 1) #10
  unreachable

197:                                              ; No predecessors!
  br label %198

198:                                              ; preds = %197, %144
  br label %199

199:                                              ; preds = %198
  br label %200

200:                                              ; preds = %199
  %201 = call i32 (...) @s2n_enable_tls13_in_test()
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  store ptr null, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  store ptr null, ptr %10, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %200
  %203 = load i32, ptr @test_count, align 4, !tbaa !5
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr @test_count, align 4, !tbaa !5
  %205 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %205, ptr %9, align 8, !tbaa !9
  %206 = icmp eq ptr %205, null
  br i1 %206, label %207, label %260

207:                                              ; preds = %202
  br label %208

208:                                              ; preds = %207
  br label %209

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

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

221:                                              ; preds = %216
  %222 = load i32, ptr %11, align 4, !tbaa !5
  %223 = call ptr @__errno_location() #9
  store i32 %222, ptr %223, align 4, !tbaa !5
  %224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %225 = load i32, ptr @test_count, align 4, !tbaa !5
  %226 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %228 = call ptr @s2n_strerror(i32 noundef %227, ptr noundef @.str.4)
  %229 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %230 = load i32, ptr %229, align 4, !tbaa !5
  %231 = call ptr @s2n_strerror_debug(i32 noundef %230, ptr noundef @.str.4)
  %232 = call ptr @__errno_location() #9
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = call ptr @strerror(i32 noundef %233) #8
  %235 = call ptr @__errno_location() #9
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %224, ptr noundef @.str.2, i32 noundef %225, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 37, ptr noundef %228, ptr noundef %231, ptr noundef %234, i32 noundef %236) #8
  br label %255

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

255:                                              ; preds = %238, %221
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  br label %256

256:                                              ; preds = %255
  br label %257

257:                                              ; preds = %256
  call void @exit(i32 noundef 1) #10
  unreachable

258:                                              ; No predecessors!
  br label %259

259:                                              ; preds = %258
  br label %260

260:                                              ; preds = %259, %202
  br label %261

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261
  br label %263

263:                                              ; preds = %262
  %264 = load i32, ptr @test_count, align 4, !tbaa !5
  %265 = add nsw i32 %264, 1
  store i32 %265, ptr @test_count, align 4, !tbaa !5
  %266 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %266, ptr %10, align 8, !tbaa !9
  %267 = icmp eq ptr %266, null
  br i1 %267, label %268, label %321

268:                                              ; preds = %263
  br label %269

269:                                              ; preds = %268
  br label %270

270:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  %271 = call ptr @__errno_location() #9
  %272 = load i32, ptr %271, align 4, !tbaa !5
  store i32 %272, ptr %12, align 4, !tbaa !5
  %273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %274 = call i32 @s2n_print_stacktrace(ptr noundef %273)
  %275 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %276 = trunc i8 %275 to i1
  br i1 %276, label %277, label %299

277:                                              ; preds = %270
  %278 = load ptr, ptr @stderr, align 8, !tbaa !9
  %279 = call i32 @fileno(ptr noundef %278) #8
  %280 = call i32 @isatty(i32 noundef %279) #8
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %282, label %299

282:                                              ; preds = %277
  %283 = load i32, ptr %12, align 4, !tbaa !5
  %284 = call ptr @__errno_location() #9
  store i32 %283, ptr %284, 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 @.str.4)
  %290 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %291 = load i32, ptr %290, align 4, !tbaa !5
  %292 = call ptr @s2n_strerror_debug(i32 noundef %291, ptr noundef @.str.4)
  %293 = call ptr @__errno_location() #9
  %294 = load i32, ptr %293, align 4, !tbaa !5
  %295 = call ptr @strerror(i32 noundef %294) #8
  %296 = call ptr @__errno_location() #9
  %297 = load i32, ptr %296, align 4, !tbaa !5
  %298 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %285, ptr noundef @.str.2, i32 noundef %286, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 38, ptr noundef %289, ptr noundef %292, ptr noundef %295, i32 noundef %297) #8
  br label %316

299:                                              ; preds = %277, %270
  %300 = load i32, ptr %12, align 4, !tbaa !5
  %301 = call ptr @__errno_location() #9
  store i32 %300, ptr %301, align 4, !tbaa !5
  %302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %303 = load i32, ptr @test_count, align 4, !tbaa !5
  %304 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %305 = load i32, ptr %304, align 4, !tbaa !5
  %306 = call ptr @s2n_strerror(i32 noundef %305, ptr noundef @.str.4)
  %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_debug(i32 noundef %308, ptr noundef @.str.4)
  %310 = call ptr @__errno_location() #9
  %311 = load i32, ptr %310, align 4, !tbaa !5
  %312 = call ptr @strerror(i32 noundef %311) #8
  %313 = call ptr @__errno_location() #9
  %314 = load i32, ptr %313, align 4, !tbaa !5
  %315 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %302, ptr noundef @.str.5, i32 noundef %303, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 38, ptr noundef %306, ptr noundef %309, ptr noundef %312, i32 noundef %314) #8
  br label %316

316:                                              ; preds = %299, %282
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %317

317:                                              ; preds = %316
  br label %318

318:                                              ; preds = %317
  call void @exit(i32 noundef 1) #10
  unreachable

319:                                              ; No predecessors!
  br label %320

320:                                              ; preds = %319
  br label %321

321:                                              ; preds = %320, %263
  br label %322

322:                                              ; preds = %321
  br label %323

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 40, ptr %13) #8
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 40, i1 false)
  br label %324

324:                                              ; preds = %323
  %325 = load i32, ptr @test_count, align 4, !tbaa !5
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr @test_count, align 4, !tbaa !5
  %327 = call i32 @s2n_stuffer_growable_alloc(ptr noundef %13, i32 noundef 0)
  %328 = icmp eq i32 %327, -1
  br i1 %328, label %329, label %382

329:                                              ; preds = %324
  br label %330

330:                                              ; preds = %329
  br label %331

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %332 = call ptr @__errno_location() #9
  %333 = load i32, ptr %332, align 4, !tbaa !5
  store i32 %333, ptr %14, align 4, !tbaa !5
  %334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %335 = call i32 @s2n_print_stacktrace(ptr noundef %334)
  %336 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %337 = trunc i8 %336 to i1
  br i1 %337, label %338, label %360

338:                                              ; preds = %331
  %339 = load ptr, ptr @stderr, align 8, !tbaa !9
  %340 = call i32 @fileno(ptr noundef %339) #8
  %341 = call i32 @isatty(i32 noundef %340) #8
  %342 = icmp ne i32 %341, 0
  br i1 %342, label %343, label %360

343:                                              ; preds = %338
  %344 = load i32, ptr %14, align 4, !tbaa !5
  %345 = call ptr @__errno_location() #9
  store i32 %344, ptr %345, align 4, !tbaa !5
  %346 = load ptr, ptr @stderr, align 8, !tbaa !9
  %347 = load i32, ptr @test_count, align 4, !tbaa !5
  %348 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %349 = load i32, ptr %348, align 4, !tbaa !5
  %350 = call ptr @s2n_strerror(i32 noundef %349, ptr noundef @.str.4)
  %351 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = call ptr @s2n_strerror_debug(i32 noundef %352, ptr noundef @.str.4)
  %354 = call ptr @__errno_location() #9
  %355 = load i32, ptr %354, align 4, !tbaa !5
  %356 = call ptr @strerror(i32 noundef %355) #8
  %357 = call ptr @__errno_location() #9
  %358 = load i32, ptr %357, align 4, !tbaa !5
  %359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %346, ptr noundef @.str.2, i32 noundef %347, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 41, ptr noundef %350, ptr noundef %353, ptr noundef %356, i32 noundef %358) #8
  br label %377

360:                                              ; preds = %338, %331
  %361 = load i32, ptr %14, align 4, !tbaa !5
  %362 = call ptr @__errno_location() #9
  store i32 %361, ptr %362, align 4, !tbaa !5
  %363 = load ptr, ptr @stderr, align 8, !tbaa !9
  %364 = load i32, ptr @test_count, align 4, !tbaa !5
  %365 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %366 = load i32, ptr %365, align 4, !tbaa !5
  %367 = call ptr @s2n_strerror(i32 noundef %366, ptr noundef @.str.4)
  %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_debug(i32 noundef %369, ptr noundef @.str.4)
  %371 = call ptr @__errno_location() #9
  %372 = load i32, ptr %371, align 4, !tbaa !5
  %373 = call ptr @strerror(i32 noundef %372) #8
  %374 = call ptr @__errno_location() #9
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %363, ptr noundef @.str.5, i32 noundef %364, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 41, ptr noundef %367, ptr noundef %370, ptr noundef %373, i32 noundef %375) #8
  br label %377

377:                                              ; preds = %360, %343
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %378

378:                                              ; preds = %377
  br label %379

379:                                              ; preds = %378
  call void @exit(i32 noundef 1) #10
  unreachable

380:                                              ; No predecessors!
  br label %381

381:                                              ; preds = %380
  br label %382

382:                                              ; preds = %381, %324
  br label %383

383:                                              ; preds = %382
  br label %384

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  %386 = load i32, ptr @test_count, align 4, !tbaa !5
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr @test_count, align 4, !tbaa !5
  %388 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_server_signature_algorithms_extension, i32 0, i32 3), align 8, !tbaa !15
  %389 = load ptr, ptr %10, align 8, !tbaa !9
  %390 = call i32 %388(ptr noundef %389, ptr noundef %13)
  %391 = icmp eq i32 %390, -1
  br i1 %391, label %392, label %445

392:                                              ; preds = %385
  br label %393

393:                                              ; preds = %392
  br label %394

394:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  %395 = call ptr @__errno_location() #9
  %396 = load i32, ptr %395, align 4, !tbaa !5
  store i32 %396, ptr %15, align 4, !tbaa !5
  %397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %398 = call i32 @s2n_print_stacktrace(ptr noundef %397)
  %399 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %400 = trunc i8 %399 to i1
  br i1 %400, label %401, label %423

401:                                              ; preds = %394
  %402 = load ptr, ptr @stderr, align 8, !tbaa !9
  %403 = call i32 @fileno(ptr noundef %402) #8
  %404 = call i32 @isatty(i32 noundef %403) #8
  %405 = icmp ne i32 %404, 0
  br i1 %405, label %406, label %423

406:                                              ; preds = %401
  %407 = load i32, ptr %15, align 4, !tbaa !5
  %408 = call ptr @__errno_location() #9
  store i32 %407, ptr %408, 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 @.str.4)
  %414 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = call ptr @s2n_strerror_debug(i32 noundef %415, ptr noundef @.str.4)
  %417 = call ptr @__errno_location() #9
  %418 = load i32, ptr %417, align 4, !tbaa !5
  %419 = call ptr @strerror(i32 noundef %418) #8
  %420 = call ptr @__errno_location() #9
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %409, ptr noundef @.str.2, i32 noundef %410, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 43, ptr noundef %413, ptr noundef %416, ptr noundef %419, i32 noundef %421) #8
  br label %440

423:                                              ; preds = %401, %394
  %424 = load i32, ptr %15, align 4, !tbaa !5
  %425 = call ptr @__errno_location() #9
  store i32 %424, ptr %425, align 4, !tbaa !5
  %426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %427 = load i32, ptr @test_count, align 4, !tbaa !5
  %428 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %429 = load i32, ptr %428, align 4, !tbaa !5
  %430 = call ptr @s2n_strerror(i32 noundef %429, ptr noundef @.str.4)
  %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_debug(i32 noundef %432, ptr noundef @.str.4)
  %434 = call ptr @__errno_location() #9
  %435 = load i32, ptr %434, align 4, !tbaa !5
  %436 = call ptr @strerror(i32 noundef %435) #8
  %437 = call ptr @__errno_location() #9
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %426, ptr noundef @.str.5, i32 noundef %427, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 43, ptr noundef %430, ptr noundef %433, ptr noundef %436, i32 noundef %438) #8
  br label %440

440:                                              ; preds = %423, %406
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %441

441:                                              ; preds = %440
  br label %442

442:                                              ; preds = %441
  call void @exit(i32 noundef 1) #10
  unreachable

443:                                              ; No predecessors!
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444, %385
  br label %446

446:                                              ; preds = %445
  br label %447

447:                                              ; preds = %446
  br label %448

448:                                              ; preds = %447
  %449 = load i32, ptr @test_count, align 4, !tbaa !5
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr @test_count, align 4, !tbaa !5
  %451 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_server_signature_algorithms_extension, i32 0, i32 4), align 8, !tbaa !18
  %452 = load ptr, ptr %9, align 8, !tbaa !9
  %453 = call i32 %451(ptr noundef %452, ptr noundef %13)
  %454 = icmp eq i32 %453, -1
  br i1 %454, label %455, label %508

455:                                              ; preds = %448
  br label %456

456:                                              ; preds = %455
  br label %457

457:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %458 = call ptr @__errno_location() #9
  %459 = load i32, ptr %458, align 4, !tbaa !5
  store i32 %459, ptr %16, align 4, !tbaa !5
  %460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %461 = call i32 @s2n_print_stacktrace(ptr noundef %460)
  %462 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %463 = trunc i8 %462 to i1
  br i1 %463, label %464, label %486

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

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

486:                                              ; preds = %464, %457
  %487 = load i32, ptr %16, align 4, !tbaa !5
  %488 = call ptr @__errno_location() #9
  store i32 %487, ptr %488, align 4, !tbaa !5
  %489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %490 = load i32, ptr @test_count, align 4, !tbaa !5
  %491 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %492 = load i32, ptr %491, align 4, !tbaa !5
  %493 = call ptr @s2n_strerror(i32 noundef %492, ptr noundef @.str.4)
  %494 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %495 = load i32, ptr %494, align 4, !tbaa !5
  %496 = call ptr @s2n_strerror_debug(i32 noundef %495, ptr noundef @.str.4)
  %497 = call ptr @__errno_location() #9
  %498 = load i32, ptr %497, align 4, !tbaa !5
  %499 = call ptr @strerror(i32 noundef %498) #8
  %500 = call ptr @__errno_location() #9
  %501 = load i32, ptr %500, align 4, !tbaa !5
  %502 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %489, ptr noundef @.str.5, i32 noundef %490, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 44, ptr noundef %493, ptr noundef %496, ptr noundef %499, i32 noundef %501) #8
  br label %503

503:                                              ; preds = %486, %469
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %504

504:                                              ; preds = %503
  br label %505

505:                                              ; preds = %504
  call void @exit(i32 noundef 1) #10
  unreachable

506:                                              ; No predecessors!
  br label %507

507:                                              ; preds = %506
  br label %508

508:                                              ; preds = %507, %448
  br label %509

509:                                              ; preds = %508
  br label %510

510:                                              ; preds = %509
  br label %511

511:                                              ; preds = %510
  %512 = load i32, ptr @test_count, align 4, !tbaa !5
  %513 = add nsw i32 %512, 1
  store i32 %513, ptr @test_count, align 4, !tbaa !5
  %514 = getelementptr inbounds %struct.s2n_stuffer, ptr %13, i32 0, i32 2
  %515 = load i32, ptr %514, align 4, !tbaa !19
  %516 = getelementptr inbounds %struct.s2n_stuffer, ptr %13, i32 0, i32 1
  %517 = load i32, ptr %516, align 8, !tbaa !22
  %518 = sub i32 %515, %517
  %519 = icmp eq i32 %518, 0
  br i1 %519, label %573, label %520

520:                                              ; preds = %511
  br label %521

521:                                              ; preds = %520
  br label %522

522:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %523 = call ptr @__errno_location() #9
  %524 = load i32, ptr %523, align 4, !tbaa !5
  store i32 %524, ptr %17, align 4, !tbaa !5
  %525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %526 = call i32 @s2n_print_stacktrace(ptr noundef %525)
  %527 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %528 = trunc i8 %527 to i1
  br i1 %528, label %529, label %551

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

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

551:                                              ; preds = %529, %522
  %552 = load i32, ptr %17, align 4, !tbaa !5
  %553 = call ptr @__errno_location() #9
  store i32 %552, ptr %553, align 4, !tbaa !5
  %554 = load ptr, ptr @stderr, align 8, !tbaa !9
  %555 = load i32, ptr @test_count, align 4, !tbaa !5
  %556 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %557 = load i32, ptr %556, align 4, !tbaa !5
  %558 = call ptr @s2n_strerror(i32 noundef %557, ptr noundef @.str.4)
  %559 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %560 = load i32, ptr %559, align 4, !tbaa !5
  %561 = call ptr @s2n_strerror_debug(i32 noundef %560, ptr noundef @.str.4)
  %562 = call ptr @__errno_location() #9
  %563 = load i32, ptr %562, align 4, !tbaa !5
  %564 = call ptr @strerror(i32 noundef %563) #8
  %565 = call ptr @__errno_location() #9
  %566 = load i32, ptr %565, align 4, !tbaa !5
  %567 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %554, ptr noundef @.str.5, i32 noundef %555, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 45, ptr noundef %558, ptr noundef %561, ptr noundef %564, i32 noundef %566) #8
  br label %568

568:                                              ; preds = %551, %534
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %569

569:                                              ; preds = %568
  br label %570

570:                                              ; preds = %569
  call void @exit(i32 noundef 1) #10
  unreachable

571:                                              ; No predecessors!
  br label %572

572:                                              ; preds = %571
  br label %573

573:                                              ; preds = %572, %511
  br label %574

574:                                              ; preds = %573
  br label %575

575:                                              ; preds = %574
  br label %576

576:                                              ; preds = %575
  %577 = load i32, ptr @test_count, align 4, !tbaa !5
  %578 = add nsw i32 %577, 1
  store i32 %578, ptr @test_count, align 4, !tbaa !5
  %579 = load ptr, ptr %9, align 8, !tbaa !9
  %580 = getelementptr inbounds %struct.s2n_connection, ptr %579, i32 0, i32 32
  %581 = getelementptr inbounds %struct.s2n_handshake_parameters, ptr %580, i32 0, i32 4
  %582 = getelementptr inbounds %struct.s2n_sig_scheme_list, ptr %581, i32 0, i32 1
  %583 = load i8, ptr %582, align 4, !tbaa !23
  %584 = zext i8 %583 to i32
  %585 = icmp sgt i32 %584, 0
  br i1 %585, label %639, label %586

586:                                              ; preds = %576
  br label %587

587:                                              ; preds = %586
  br label %588

588:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %589 = call ptr @__errno_location() #9
  %590 = load i32, ptr %589, align 4, !tbaa !5
  store i32 %590, ptr %18, align 4, !tbaa !5
  %591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %592 = call i32 @s2n_print_stacktrace(ptr noundef %591)
  %593 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %594 = trunc i8 %593 to i1
  br i1 %594, label %595, label %617

595:                                              ; preds = %588
  %596 = load ptr, ptr @stderr, align 8, !tbaa !9
  %597 = call i32 @fileno(ptr noundef %596) #8
  %598 = call i32 @isatty(i32 noundef %597) #8
  %599 = icmp ne i32 %598, 0
  br i1 %599, label %600, label %617

600:                                              ; preds = %595
  %601 = load i32, ptr %18, align 4, !tbaa !5
  %602 = call ptr @__errno_location() #9
  store i32 %601, ptr %602, align 4, !tbaa !5
  %603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %604 = load i32, ptr @test_count, align 4, !tbaa !5
  %605 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %606 = load i32, ptr %605, align 4, !tbaa !5
  %607 = call ptr @s2n_strerror(i32 noundef %606, ptr noundef @.str.4)
  %608 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %609 = load i32, ptr %608, align 4, !tbaa !5
  %610 = call ptr @s2n_strerror_debug(i32 noundef %609, ptr noundef @.str.4)
  %611 = call ptr @__errno_location() #9
  %612 = load i32, ptr %611, align 4, !tbaa !5
  %613 = call ptr @strerror(i32 noundef %612) #8
  %614 = call ptr @__errno_location() #9
  %615 = load i32, ptr %614, align 4, !tbaa !5
  %616 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %603, ptr noundef @.str.2, i32 noundef %604, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 47, ptr noundef %607, ptr noundef %610, ptr noundef %613, i32 noundef %615) #8
  br label %634

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

634:                                              ; preds = %617, %600
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %635

635:                                              ; preds = %634
  br label %636

636:                                              ; preds = %635
  call void @exit(i32 noundef 1) #10
  unreachable

637:                                              ; No predecessors!
  br label %638

638:                                              ; preds = %637
  br label %639

639:                                              ; preds = %638, %576
  br label %640

640:                                              ; preds = %639
  br label %641

641:                                              ; preds = %640
  %642 = call i32 @s2n_stuffer_free(ptr noundef %13)
  br label %643

643:                                              ; preds = %641
  %644 = load i32, ptr @test_count, align 4, !tbaa !5
  %645 = add nsw i32 %644, 1
  store i32 %645, ptr @test_count, align 4, !tbaa !5
  %646 = load ptr, ptr %10, align 8, !tbaa !9
  %647 = call i32 @s2n_connection_free(ptr noundef %646)
  %648 = icmp eq i32 %647, -1
  br i1 %648, label %649, label %702

649:                                              ; preds = %643
  br label %650

650:                                              ; preds = %649
  br label %651

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

658:                                              ; preds = %651
  %659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %660 = call i32 @fileno(ptr noundef %659) #8
  %661 = call i32 @isatty(i32 noundef %660) #8
  %662 = icmp ne i32 %661, 0
  br i1 %662, label %663, label %680

663:                                              ; preds = %658
  %664 = load i32, ptr %19, align 4, !tbaa !5
  %665 = call ptr @__errno_location() #9
  store i32 %664, ptr %665, align 4, !tbaa !5
  %666 = load ptr, ptr @stderr, align 8, !tbaa !9
  %667 = load i32, ptr @test_count, align 4, !tbaa !5
  %668 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %669 = load i32, ptr %668, align 4, !tbaa !5
  %670 = call ptr @s2n_strerror(i32 noundef %669, ptr noundef @.str.4)
  %671 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %672 = load i32, ptr %671, align 4, !tbaa !5
  %673 = call ptr @s2n_strerror_debug(i32 noundef %672, ptr noundef @.str.4)
  %674 = call ptr @__errno_location() #9
  %675 = load i32, ptr %674, align 4, !tbaa !5
  %676 = call ptr @strerror(i32 noundef %675) #8
  %677 = call ptr @__errno_location() #9
  %678 = load i32, ptr %677, align 4, !tbaa !5
  %679 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %666, ptr noundef @.str.2, i32 noundef %667, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 50, ptr noundef %670, ptr noundef %673, ptr noundef %676, i32 noundef %678) #8
  br label %697

680:                                              ; preds = %658, %651
  %681 = load i32, ptr %19, align 4, !tbaa !5
  %682 = call ptr @__errno_location() #9
  store i32 %681, ptr %682, align 4, !tbaa !5
  %683 = load ptr, ptr @stderr, align 8, !tbaa !9
  %684 = load i32, ptr @test_count, align 4, !tbaa !5
  %685 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %686 = load i32, ptr %685, align 4, !tbaa !5
  %687 = call ptr @s2n_strerror(i32 noundef %686, ptr noundef @.str.4)
  %688 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %689 = load i32, ptr %688, align 4, !tbaa !5
  %690 = call ptr @s2n_strerror_debug(i32 noundef %689, ptr noundef @.str.4)
  %691 = call ptr @__errno_location() #9
  %692 = load i32, ptr %691, align 4, !tbaa !5
  %693 = call ptr @strerror(i32 noundef %692) #8
  %694 = call ptr @__errno_location() #9
  %695 = load i32, ptr %694, align 4, !tbaa !5
  %696 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %683, ptr noundef @.str.5, i32 noundef %684, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 50, ptr noundef %687, ptr noundef %690, ptr noundef %693, i32 noundef %695) #8
  br label %697

697:                                              ; preds = %680, %663
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %698

698:                                              ; preds = %697
  br label %699

699:                                              ; preds = %698
  call void @exit(i32 noundef 1) #10
  unreachable

700:                                              ; No predecessors!
  br label %701

701:                                              ; preds = %700
  br label %702

702:                                              ; preds = %701, %643
  br label %703

703:                                              ; preds = %702
  br label %704

704:                                              ; preds = %703
  br label %705

705:                                              ; preds = %704
  %706 = load i32, ptr @test_count, align 4, !tbaa !5
  %707 = add nsw i32 %706, 1
  store i32 %707, ptr @test_count, align 4, !tbaa !5
  %708 = load ptr, ptr %9, align 8, !tbaa !9
  %709 = call i32 @s2n_connection_free(ptr noundef %708)
  %710 = icmp eq i32 %709, -1
  br i1 %710, label %711, label %764

711:                                              ; preds = %705
  br label %712

712:                                              ; preds = %711
  br label %713

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

720:                                              ; preds = %713
  %721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %722 = call i32 @fileno(ptr noundef %721) #8
  %723 = call i32 @isatty(i32 noundef %722) #8
  %724 = icmp ne i32 %723, 0
  br i1 %724, label %725, label %742

725:                                              ; preds = %720
  %726 = load i32, ptr %20, align 4, !tbaa !5
  %727 = call ptr @__errno_location() #9
  store i32 %726, ptr %727, align 4, !tbaa !5
  %728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %729 = load i32, ptr @test_count, align 4, !tbaa !5
  %730 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %731 = load i32, ptr %730, align 4, !tbaa !5
  %732 = call ptr @s2n_strerror(i32 noundef %731, ptr noundef @.str.4)
  %733 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %734 = load i32, ptr %733, align 4, !tbaa !5
  %735 = call ptr @s2n_strerror_debug(i32 noundef %734, ptr noundef @.str.4)
  %736 = call ptr @__errno_location() #9
  %737 = load i32, ptr %736, align 4, !tbaa !5
  %738 = call ptr @strerror(i32 noundef %737) #8
  %739 = call ptr @__errno_location() #9
  %740 = load i32, ptr %739, align 4, !tbaa !5
  %741 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %728, ptr noundef @.str.2, i32 noundef %729, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 51, ptr noundef %732, ptr noundef %735, ptr noundef %738, i32 noundef %740) #8
  br label %759

742:                                              ; preds = %720, %713
  %743 = load i32, ptr %20, align 4, !tbaa !5
  %744 = call ptr @__errno_location() #9
  store i32 %743, ptr %744, align 4, !tbaa !5
  %745 = load ptr, ptr @stderr, align 8, !tbaa !9
  %746 = load i32, ptr @test_count, align 4, !tbaa !5
  %747 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %748 = load i32, ptr %747, align 4, !tbaa !5
  %749 = call ptr @s2n_strerror(i32 noundef %748, ptr noundef @.str.4)
  %750 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %751 = load i32, ptr %750, align 4, !tbaa !5
  %752 = call ptr @s2n_strerror_debug(i32 noundef %751, ptr noundef @.str.4)
  %753 = call ptr @__errno_location() #9
  %754 = load i32, ptr %753, align 4, !tbaa !5
  %755 = call ptr @strerror(i32 noundef %754) #8
  %756 = call ptr @__errno_location() #9
  %757 = load i32, ptr %756, align 4, !tbaa !5
  %758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %745, ptr noundef @.str.5, i32 noundef %746, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 51, ptr noundef %749, ptr noundef %752, ptr noundef %755, i32 noundef %757) #8
  br label %759

759:                                              ; preds = %742, %725
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %760

760:                                              ; preds = %759
  br label %761

761:                                              ; preds = %760
  call void @exit(i32 noundef 1) #10
  unreachable

762:                                              ; No predecessors!
  br label %763

763:                                              ; preds = %762
  br label %764

764:                                              ; preds = %763, %705
  br label %765

765:                                              ; preds = %764
  br label %766

766:                                              ; preds = %765
  call void @llvm.lifetime.end.p0(i64 40, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  %767 = call i32 (...) @s2n_disable_tls13_in_test()
  br label %768

768:                                              ; preds = %766
  br label %769

769:                                              ; preds = %768
  %770 = call i32 @s2n_cleanup()
  %771 = icmp eq i32 %770, -1
  br i1 %771, label %772, label %823

772:                                              ; preds = %769
  br label %773

773:                                              ; preds = %772
  br label %774

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

781:                                              ; preds = %774
  %782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %783 = call i32 @fileno(ptr noundef %782) #8
  %784 = call i32 @isatty(i32 noundef %783) #8
  %785 = icmp ne i32 %784, 0
  br i1 %785, label %786, label %803

786:                                              ; preds = %781
  %787 = load i32, ptr %21, align 4, !tbaa !5
  %788 = call ptr @__errno_location() #9
  store i32 %787, ptr %788, align 4, !tbaa !5
  %789 = load ptr, ptr @stderr, align 8, !tbaa !9
  %790 = load i32, ptr @test_count, align 4, !tbaa !5
  %791 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %792 = load i32, ptr %791, align 4, !tbaa !5
  %793 = call ptr @s2n_strerror(i32 noundef %792, ptr noundef @.str.4)
  %794 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %795 = load i32, ptr %794, align 4, !tbaa !5
  %796 = call ptr @s2n_strerror_debug(i32 noundef %795, ptr noundef @.str.4)
  %797 = call ptr @__errno_location() #9
  %798 = load i32, ptr %797, align 4, !tbaa !5
  %799 = call ptr @strerror(i32 noundef %798) #8
  %800 = call ptr @__errno_location() #9
  %801 = load i32, ptr %800, align 4, !tbaa !5
  %802 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %789, ptr noundef @.str.2, i32 noundef %790, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 56, ptr noundef %793, ptr noundef %796, ptr noundef %799, i32 noundef %801) #8
  br label %820

803:                                              ; preds = %781, %774
  %804 = load i32, ptr %21, align 4, !tbaa !5
  %805 = call ptr @__errno_location() #9
  store i32 %804, ptr %805, align 4, !tbaa !5
  %806 = load ptr, ptr @stderr, align 8, !tbaa !9
  %807 = load i32, ptr @test_count, align 4, !tbaa !5
  %808 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %809 = load i32, ptr %808, align 4, !tbaa !5
  %810 = call ptr @s2n_strerror(i32 noundef %809, ptr noundef @.str.4)
  %811 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %812 = load i32, ptr %811, align 4, !tbaa !5
  %813 = call ptr @s2n_strerror_debug(i32 noundef %812, ptr noundef @.str.4)
  %814 = call ptr @__errno_location() #9
  %815 = load i32, ptr %814, align 4, !tbaa !5
  %816 = call ptr @strerror(i32 noundef %815) #8
  %817 = call ptr @__errno_location() #9
  %818 = load i32, ptr %817, align 4, !tbaa !5
  %819 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %806, ptr noundef @.str.5, i32 noundef %807, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 56, ptr noundef %810, ptr noundef %813, ptr noundef %816, i32 noundef %818) #8
  br label %820

820:                                              ; preds = %803, %786
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %821

821:                                              ; preds = %820
  call void @exit(i32 noundef 1) #10
  unreachable

822:                                              ; No predecessors!
  br label %823

823:                                              ; preds = %822, %769
  br label %824

824:                                              ; preds = %823
  br label %825

825:                                              ; preds = %824
  br label %826

826:                                              ; preds = %825
  %827 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %828 = icmp eq i32 %827, -1
  br i1 %828, label %829, label %880

829:                                              ; preds = %826
  br label %830

830:                                              ; preds = %829
  br label %831

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

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

843:                                              ; preds = %838
  %844 = load i32, ptr %22, align 4, !tbaa !5
  %845 = call ptr @__errno_location() #9
  store i32 %844, ptr %845, align 4, !tbaa !5
  %846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %847 = load i32, ptr @test_count, align 4, !tbaa !5
  %848 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %849 = load i32, ptr %848, align 4, !tbaa !5
  %850 = call ptr @s2n_strerror(i32 noundef %849, ptr noundef @.str.4)
  %851 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %852 = load i32, ptr %851, align 4, !tbaa !5
  %853 = call ptr @s2n_strerror_debug(i32 noundef %852, ptr noundef @.str.4)
  %854 = call ptr @__errno_location() #9
  %855 = load i32, ptr %854, align 4, !tbaa !5
  %856 = call ptr @strerror(i32 noundef %855) #8
  %857 = call ptr @__errno_location() #9
  %858 = load i32, ptr %857, align 4, !tbaa !5
  %859 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %846, ptr noundef @.str.2, i32 noundef %847, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 56, ptr noundef %850, ptr noundef %853, ptr noundef %856, i32 noundef %858) #8
  br label %877

860:                                              ; preds = %838, %831
  %861 = load i32, ptr %22, align 4, !tbaa !5
  %862 = call ptr @__errno_location() #9
  store i32 %861, ptr %862, align 4, !tbaa !5
  %863 = load ptr, ptr @stderr, align 8, !tbaa !9
  %864 = load i32, ptr @test_count, align 4, !tbaa !5
  %865 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %866 = load i32, ptr %865, align 4, !tbaa !5
  %867 = call ptr @s2n_strerror(i32 noundef %866, ptr noundef @.str.4)
  %868 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %869 = load i32, ptr %868, align 4, !tbaa !5
  %870 = call ptr @s2n_strerror_debug(i32 noundef %869, ptr noundef @.str.4)
  %871 = call ptr @__errno_location() #9
  %872 = load i32, ptr %871, align 4, !tbaa !5
  %873 = call ptr @strerror(i32 noundef %872) #8
  %874 = call ptr @__errno_location() #9
  %875 = load i32, ptr %874, align 4, !tbaa !5
  %876 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %863, ptr noundef @.str.5, i32 noundef %864, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 56, ptr noundef %867, ptr noundef %870, ptr noundef %873, i32 noundef %875) #8
  br label %877

877:                                              ; preds = %860, %843
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %878

878:                                              ; preds = %877
  call void @exit(i32 noundef 1) #10
  unreachable

879:                                              ; No predecessors!
  br label %880

880:                                              ; preds = %879, %826
  br label %881

881:                                              ; preds = %880
  %882 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %883 = trunc i8 %882 to i1
  br i1 %883, label %884, label %900

884:                                              ; preds = %881
  %885 = load ptr, ptr @stdout, align 8, !tbaa !9
  %886 = call i32 @fileno(ptr noundef %885) #8
  %887 = call i32 @isatty(i32 noundef %886) #8
  %888 = icmp ne i32 %887, 0
  br i1 %888, label %889, label %900

889:                                              ; preds = %884
  %890 = load i32, ptr @test_count, align 4, !tbaa !5
  %891 = icmp ne i32 %890, 0
  br i1 %891, label %892, label %896

892:                                              ; preds = %889
  %893 = load ptr, ptr @stdout, align 8, !tbaa !9
  %894 = load i32, ptr @test_count, align 4, !tbaa !5
  %895 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %893, ptr noundef @.str.19, i32 noundef %894) #8
  br label %899

896:                                              ; preds = %889
  %897 = load ptr, ptr @stdout, align 8, !tbaa !9
  %898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %897, ptr noundef @.str.20) #8
  br label %899

899:                                              ; preds = %896, %892
  br label %911

900:                                              ; preds = %884, %881
  %901 = load i32, ptr @test_count, align 4, !tbaa !5
  %902 = icmp ne i32 %901, 0
  br i1 %902, label %903, label %907

903:                                              ; preds = %900
  %904 = load ptr, ptr @stdout, align 8, !tbaa !9
  %905 = load i32, ptr @test_count, align 4, !tbaa !5
  %906 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %904, ptr noundef @.str.21, i32 noundef %905) #8
  br label %910

907:                                              ; preds = %900
  %908 = load ptr, ptr @stdout, align 8, !tbaa !9
  %909 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %908, ptr noundef @.str.22) #8
  br label %910

910:                                              ; preds = %907, %903
  br label %911

911:                                              ; preds = %910, %899
  store i32 0, ptr %3, align 4
  br label %914

912:                                              ; No predecessors!
  br label %913

913:                                              ; preds = %912
  store i32 0, ptr %3, align 4
  br label %914

914:                                              ; preds = %913, %911
  %915 = load i32, ptr %3, align 4
  ret i32 %915
}

; 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_enable_tls13_in_test(...) #2

declare ptr @s2n_connection_new(i32 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_free(ptr noundef) #2

declare i32 @s2n_disable_tls13_in_test(...) #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 = { nounwind }
attributes #9 = { nounwind willreturn memory(none) }
attributes #10 = { 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, !10, i64 8}
!16 = !{!"", !17, i64 0, !6, i64 2, !17, i64 4, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32}
!17 = !{!"short", !7, i64 0}
!18 = !{!16, !10, i64 16}
!19 = !{!20, !6, i64 28}
!20 = !{!"s2n_stuffer", !21, i64 0, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 36, !6, i64 36}
!21 = !{!"s2n_blob", !10, i64 0, !6, i64 8, !6, i64 12, !6, i64 16}
!22 = !{!20, !6, i64 24}
!23 = !{!24, !7, i64 1524}
!24 = !{!"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, !25, i64 160, !26, i64 168, !26, 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, !27, i64 240, !10, i64 632, !10, i64 640, !28, i64 648, !33, i64 1144, !36, i64 1688, !10, i64 1752, !7, i64 1760, !6, i64 1764, !7, i64 1768, !20, i64 1776, !20, i64 1816, !20, i64 1856, !20, i64 1896, !6, i64 1936, !26, i64 1944, !7, i64 1952, !20, i64 1960, !7, i64 2000, !7, i64 2001, !7, i64 2002, !12, i64 2003, !38, i64 2004, !38, i64 2008, !39, i64 2016, !17, i64 2208, !6, i64 2212, !17, i64 2216, !26, i64 2224, !7, i64 2232, !26, i64 2240, !26, i64 2248, !26, i64 2256, !38, i64 2264, !38, i64 2268, !7, i64 2272, !7, i64 2528, !6, i64 2784, !21, i64 2792, !6, i64 2816, !21, i64 2824, !21, i64 2848, !21, i64 2872, !41, i64 2896, !43, i64 3704, !10, i64 3760, !10, i64 3768, !7, i64 3776, !6, i64 3780, !21, i64 3784, !6, i64 3808, !45, i64 3816, !7, i64 3848, !20, i64 3992, !21, i64 4032, !21, i64 4056, !12, i64 4080, !12, i64 4081, !12, i64 4082, !17, i64 4084, !17, i64 4086, !6, i64 4088, !6, i64 4092, !21, i64 4096, !6, i64 4120, !46, i64 4128, !38, i64 4176, !7, i64 4180, !7, i64 4181}
!25 = !{!"s2n_timer", !26, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"s2n_secrets", !7, i64 0, !6, i64 388}
!28 = !{!"s2n_kex_parameters", !29, i64 0, !30, i64 8, !7, i64 24, !30, i64 56, !31, i64 72, !31, i64 184, !7, i64 296, !32, i64 360, !21, i64 448, !21, i64 472}
!29 = !{!"s2n_dh_params", !10, i64 0}
!30 = !{!"s2n_ecc_evp_params", !10, i64 0, !10, i64 8}
!31 = !{!"s2n_kem_group_params", !10, i64 0, !32, i64 8, !30, i64 96}
!32 = !{!"s2n_kem_params", !10, i64 0, !21, i64 8, !21, i64 32, !21, i64 56, !12, i64 80}
!33 = !{!"s2n_handshake_parameters", !34, i64 0, !34, i64 48, !21, i64 96, !6, i64 120, !35, 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}
!34 = !{!"s2n_pkey", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40}
!35 = !{!"s2n_sig_scheme_list", !7, i64 0, !7, i64 256}
!36 = !{!"s2n_psk_parameters", !6, i64 0, !37, i64 8, !17, i64 40, !17, i64 42, !10, i64 48, !6, i64 56}
!37 = !{!"s2n_array", !21, i64 0, !6, i64 24, !6, i64 28}
!38 = !{!"", !6, i64 0}
!39 = !{!"s2n_handshake", !20, i64 0, !10, i64 40, !7, i64 48, !7, i64 56, !7, i64 104, !7, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !40, i64 176, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 184, !6, i64 188}
!40 = !{!"s2n_offered_early_data", !10, i64 0}
!41 = !{!"s2n_client_hello", !21, i64 0, !42, i64 24, !21, i64 728, !21, i64 752, !21, i64 776, !7, i64 800, !7, i64 801, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802, !6, i64 802}
!42 = !{!"", !7, i64 0, !21, i64 672, !17, i64 696}
!43 = !{!"s2n_x509_validator", !10, i64 0, !10, i64 8, !7, i64 16, !7, i64 17, !17, i64 18, !10, i64 24, !6, i64 32, !10, i64 40, !44, i64 48, !12, i64 52}
!44 = !{!"s2n_cert_validation_info", !6, i64 0, !6, i64 0}
!45 = !{!"s2n_ticket_fields", !21, i64 0, !6, i64 24}
!46 = !{!"s2n_post_handshake", !20, i64 0, !7, i64 40}


; 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 [79 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [63 x i8], align 1
@s2n_server_signature_algorithms_extension = external local_unnamed_addr constant %struct.s2n_extension_type, align 8
@.str.11 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [93 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

21:                                               ; preds = %17, %10
  br label %22

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

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

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

46:                                               ; preds = %39
  %47 = load ptr, ptr @stderr, align 8, !tbaa !9
  %48 = tail call i32 @fileno(ptr noundef %47) #9
  %49 = tail call i32 @isatty(i32 noundef %48) #9
  %.not51 = icmp eq i32 %49, 0
  br i1 %.not51, label %50, label %51

50:                                               ; preds = %46, %39
  br label %51

51:                                               ; preds = %46, %50
  %.str.5.sink63 = phi ptr [ @.str.5, %50 ], [ @.str.2, %46 ]
  store i32 %41, ptr %40, align 4, !tbaa !5
  %52 = load ptr, ptr @stderr, align 8, !tbaa !9
  %53 = load i32, ptr @test_count, align 4, !tbaa !5
  %54 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %55 = load i32, ptr %54, align 4, !tbaa !5
  %56 = tail call ptr @s2n_strerror(i32 noundef %55, ptr noundef nonnull @.str.4) #9
  %57 = load i32, ptr %54, align 4, !tbaa !5
  %58 = tail call ptr @s2n_strerror_debug(i32 noundef %57, ptr noundef nonnull @.str.4) #9
  %59 = load i32, ptr %40, align 4, !tbaa !5
  %60 = tail call ptr @strerror(i32 noundef %59) #9
  %61 = load i32, ptr %40, align 4, !tbaa !5
  %62 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %52, ptr noundef nonnull %.str.5.sink63, i32 noundef %53, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 30, ptr noundef %56, ptr noundef %58, ptr noundef %60, i32 noundef %61) #11
  tail call void @exit(i32 noundef 1) #12
  unreachable

63:                                               ; preds = %34
  %64 = tail call i32 @s2n_init() #9
  %65 = icmp eq i32 %64, -1
  br i1 %65, label %66, label %90

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

73:                                               ; preds = %66
  %74 = load ptr, ptr @stderr, align 8, !tbaa !9
  %75 = tail call i32 @fileno(ptr noundef %74) #9
  %76 = tail call i32 @isatty(i32 noundef %75) #9
  %.not50 = icmp eq i32 %76, 0
  br i1 %.not50, label %77, label %78

77:                                               ; preds = %73, %66
  br label %78

78:                                               ; preds = %73, %77
  %.str.5.sink74 = phi ptr [ @.str.5, %77 ], [ @.str.2, %73 ]
  store i32 %68, ptr %67, align 4, !tbaa !5
  %79 = load ptr, ptr @stderr, align 8, !tbaa !9
  %80 = load i32, ptr @test_count, align 4, !tbaa !5
  %81 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %83 = tail call ptr @s2n_strerror(i32 noundef %82, ptr noundef nonnull @.str.4) #9
  %84 = load i32, ptr %81, align 4, !tbaa !5
  %85 = tail call ptr @s2n_strerror_debug(i32 noundef %84, ptr noundef nonnull @.str.4) #9
  %86 = load i32, ptr %67, align 4, !tbaa !5
  %87 = tail call ptr @strerror(i32 noundef %86) #9
  %88 = load i32, ptr %67, align 4, !tbaa !5
  %89 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %79, ptr noundef nonnull %.str.5.sink74, i32 noundef %80, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 30, ptr noundef %83, ptr noundef %85, ptr noundef %87, i32 noundef %88) #11
  tail call void @exit(i32 noundef 1) #12
  unreachable

90:                                               ; preds = %63
  %91 = tail call i32 (...) @s2n_enable_tls13_in_test() #9
  %92 = load i32, ptr @test_count, align 4, !tbaa !5
  %93 = add nsw i32 %92, 1
  store i32 %93, ptr @test_count, align 4, !tbaa !5
  %94 = tail call ptr @s2n_connection_new(i32 noundef 1) #9
  %95 = icmp eq ptr %94, null
  br i1 %95, label %96, label %120

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

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

107:                                              ; preds = %103, %96
  br label %108

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

120:                                              ; preds = %90
  %121 = load i32, ptr @test_count, align 4, !tbaa !5
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr @test_count, align 4, !tbaa !5
  %123 = tail call ptr @s2n_connection_new(i32 noundef 0) #9
  %124 = icmp eq ptr %123, null
  br i1 %124, label %125, label %149

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

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

136:                                              ; preds = %132, %125
  br label %137

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

149:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %3, i8 0, i64 40, i1 false)
  %150 = load i32, ptr @test_count, align 4, !tbaa !5
  %151 = add nsw i32 %150, 1
  store i32 %151, ptr @test_count, align 4, !tbaa !5
  %152 = call i32 @s2n_stuffer_growable_alloc(ptr noundef nonnull %3, i32 noundef 0) #9
  %153 = icmp eq i32 %152, -1
  br i1 %153, label %154, label %178

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

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

165:                                              ; preds = %161, %154
  br label %166

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

178:                                              ; preds = %149
  %179 = load i32, ptr @test_count, align 4, !tbaa !5
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr @test_count, align 4, !tbaa !5
  %181 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_server_signature_algorithms_extension, i64 8), align 8, !tbaa !15
  %182 = call i32 %181(ptr noundef nonnull %123, ptr noundef nonnull %3) #9
  %183 = icmp eq i32 %182, -1
  br i1 %183, label %184, label %208

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

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

195:                                              ; preds = %191, %184
  br label %196

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

208:                                              ; preds = %178
  %209 = load i32, ptr @test_count, align 4, !tbaa !5
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr @test_count, align 4, !tbaa !5
  %211 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_server_signature_algorithms_extension, i64 16), align 8, !tbaa !18
  %212 = call i32 %211(ptr noundef nonnull %94, ptr noundef nonnull %3) #9
  %213 = icmp eq i32 %212, -1
  br i1 %213, label %214, label %238

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

221:                                              ; preds = %214
  %222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %223 = call i32 @fileno(ptr noundef %222) #9
  %224 = call i32 @isatty(i32 noundef %223) #9
  %.not45 = icmp eq i32 %224, 0
  br i1 %.not45, label %225, label %226

225:                                              ; preds = %221, %214
  br label %226

226:                                              ; preds = %221, %225
  %.str.5.sink129 = phi ptr [ @.str.5, %225 ], [ @.str.2, %221 ]
  store i32 %216, ptr %215, align 4, !tbaa !5
  %227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %228 = load i32, ptr @test_count, align 4, !tbaa !5
  %229 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %230 = load i32, ptr %229, align 4, !tbaa !5
  %231 = call ptr @s2n_strerror(i32 noundef %230, ptr noundef nonnull @.str.4) #9
  %232 = load i32, ptr %229, align 4, !tbaa !5
  %233 = call ptr @s2n_strerror_debug(i32 noundef %232, ptr noundef nonnull @.str.4) #9
  %234 = load i32, ptr %215, align 4, !tbaa !5
  %235 = call ptr @strerror(i32 noundef %234) #9
  %236 = load i32, ptr %215, align 4, !tbaa !5
  %237 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %227, ptr noundef nonnull %.str.5.sink129, i32 noundef %228, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 44, ptr noundef %231, ptr noundef %233, ptr noundef %235, i32 noundef %236) #11
  call void @exit(i32 noundef 1) #12
  unreachable

238:                                              ; preds = %208
  %239 = load i32, ptr @test_count, align 4, !tbaa !5
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr @test_count, align 4, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %3, i64 28
  %242 = load i32, ptr %241, align 4, !tbaa !19
  %243 = getelementptr inbounds i8, ptr %3, i64 24
  %244 = load i32, ptr %243, align 8, !tbaa !22
  %245 = icmp eq i32 %242, %244
  br i1 %245, label %270, label %246

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

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

257:                                              ; preds = %253, %246
  br label %258

258:                                              ; preds = %253, %257
  %.str.5.sink140 = phi ptr [ @.str.5, %257 ], [ @.str.2, %253 ]
  store i32 %248, ptr %247, align 4, !tbaa !5
  %259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %260 = load i32, ptr @test_count, align 4, !tbaa !5
  %261 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %262 = load i32, ptr %261, align 4, !tbaa !5
  %263 = call ptr @s2n_strerror(i32 noundef %262, ptr noundef nonnull @.str.4) #9
  %264 = load i32, ptr %261, align 4, !tbaa !5
  %265 = call ptr @s2n_strerror_debug(i32 noundef %264, ptr noundef nonnull @.str.4) #9
  %266 = load i32, ptr %247, align 4, !tbaa !5
  %267 = call ptr @strerror(i32 noundef %266) #9
  %268 = load i32, ptr %247, align 4, !tbaa !5
  %269 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %259, ptr noundef nonnull %.str.5.sink140, i32 noundef %260, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 45, ptr noundef %263, ptr noundef %265, ptr noundef %267, i32 noundef %268) #11
  call void @exit(i32 noundef 1) #12
  unreachable

270:                                              ; preds = %238
  %271 = add nsw i32 %239, 2
  store i32 %271, ptr @test_count, align 4, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %94, i64 1524
  %273 = load i8, ptr %272, align 4, !tbaa !23
  %.not36 = icmp eq i8 %273, 0
  br i1 %.not36, label %274, label %298

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

281:                                              ; preds = %274
  %282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %283 = call i32 @fileno(ptr noundef %282) #9
  %284 = call i32 @isatty(i32 noundef %283) #9
  %.not37 = icmp eq i32 %284, 0
  br i1 %.not37, label %285, label %286

285:                                              ; preds = %281, %274
  br label %286

286:                                              ; preds = %281, %285
  %.str.5.sink151 = phi ptr [ @.str.5, %285 ], [ @.str.2, %281 ]
  store i32 %276, ptr %275, align 4, !tbaa !5
  %287 = load ptr, ptr @stderr, align 8, !tbaa !9
  %288 = load i32, ptr @test_count, align 4, !tbaa !5
  %289 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %290 = load i32, ptr %289, align 4, !tbaa !5
  %291 = call ptr @s2n_strerror(i32 noundef %290, ptr noundef nonnull @.str.4) #9
  %292 = load i32, ptr %289, align 4, !tbaa !5
  %293 = call ptr @s2n_strerror_debug(i32 noundef %292, ptr noundef nonnull @.str.4) #9
  %294 = load i32, ptr %275, align 4, !tbaa !5
  %295 = call ptr @strerror(i32 noundef %294) #9
  %296 = load i32, ptr %275, align 4, !tbaa !5
  %297 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %287, ptr noundef nonnull %.str.5.sink151, i32 noundef %288, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %291, ptr noundef %293, ptr noundef %295, i32 noundef %296) #11
  call void @exit(i32 noundef 1) #12
  unreachable

298:                                              ; preds = %270
  %299 = call i32 @s2n_stuffer_free(ptr noundef nonnull %3) #9
  %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_connection_free(ptr noundef nonnull %123) #9
  %303 = icmp eq i32 %302, -1
  br i1 %303, label %304, label %328

304:                                              ; preds = %298
  %305 = tail call ptr @__errno_location() #10
  %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) #9
  %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) #9
  %314 = call i32 @isatty(i32 noundef %313) #9
  %.not44 = icmp eq i32 %314, 0
  br i1 %.not44, label %315, label %316

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

316:                                              ; preds = %311, %315
  %.str.5.sink162 = 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) #9
  %322 = load i32, ptr %319, align 4, !tbaa !5
  %323 = call ptr @s2n_strerror_debug(i32 noundef %322, ptr noundef nonnull @.str.4) #9
  %324 = load i32, ptr %305, align 4, !tbaa !5
  %325 = call ptr @strerror(i32 noundef %324) #9
  %326 = load i32, ptr %305, align 4, !tbaa !5
  %327 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %317, ptr noundef nonnull %.str.5.sink162, i32 noundef %318, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 50, ptr noundef %321, ptr noundef %323, ptr noundef %325, i32 noundef %326) #11
  call void @exit(i32 noundef 1) #12
  unreachable

328:                                              ; preds = %298
  %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 = call i32 @s2n_connection_free(ptr noundef nonnull %94) #9
  %332 = icmp eq i32 %331, -1
  br i1 %332, label %333, label %357

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

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

344:                                              ; preds = %340, %333
  br label %345

345:                                              ; preds = %340, %344
  %.str.5.sink173 = phi ptr [ @.str.5, %344 ], [ @.str.2, %340 ]
  store i32 %335, ptr %334, align 4, !tbaa !5
  %346 = load ptr, ptr @stderr, align 8, !tbaa !9
  %347 = load i32, ptr @test_count, align 4, !tbaa !5
  %348 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %349 = load i32, ptr %348, align 4, !tbaa !5
  %350 = call ptr @s2n_strerror(i32 noundef %349, ptr noundef nonnull @.str.4) #9
  %351 = load i32, ptr %348, align 4, !tbaa !5
  %352 = call ptr @s2n_strerror_debug(i32 noundef %351, ptr noundef nonnull @.str.4) #9
  %353 = load i32, ptr %334, align 4, !tbaa !5
  %354 = call ptr @strerror(i32 noundef %353) #9
  %355 = load i32, ptr %334, align 4, !tbaa !5
  %356 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %346, ptr noundef nonnull %.str.5.sink173, i32 noundef %347, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 51, ptr noundef %350, ptr noundef %352, ptr noundef %354, i32 noundef %355) #11
  call void @exit(i32 noundef 1) #12
  unreachable

357:                                              ; preds = %328
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #9
  %358 = call i32 (...) @s2n_disable_tls13_in_test() #9
  %359 = call i32 @s2n_cleanup() #9
  %360 = icmp eq i32 %359, -1
  br i1 %360, label %361, label %385

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

368:                                              ; preds = %361
  %369 = load ptr, ptr @stderr, align 8, !tbaa !9
  %370 = call i32 @fileno(ptr noundef %369) #9
  %371 = call i32 @isatty(i32 noundef %370) #9
  %.not42 = icmp eq i32 %371, 0
  br i1 %.not42, label %372, label %373

372:                                              ; preds = %368, %361
  br label %373

373:                                              ; preds = %368, %372
  %.str.5.sink184 = phi ptr [ @.str.5, %372 ], [ @.str.2, %368 ]
  store i32 %363, ptr %362, align 4, !tbaa !5
  %374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %375 = load i32, ptr @test_count, align 4, !tbaa !5
  %376 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %377 = load i32, ptr %376, align 4, !tbaa !5
  %378 = call ptr @s2n_strerror(i32 noundef %377, ptr noundef nonnull @.str.4) #9
  %379 = load i32, ptr %376, align 4, !tbaa !5
  %380 = call ptr @s2n_strerror_debug(i32 noundef %379, ptr noundef nonnull @.str.4) #9
  %381 = load i32, ptr %362, align 4, !tbaa !5
  %382 = call ptr @strerror(i32 noundef %381) #9
  %383 = load i32, ptr %362, align 4, !tbaa !5
  %384 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %374, ptr noundef nonnull %.str.5.sink184, i32 noundef %375, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 56, ptr noundef %378, ptr noundef %380, ptr noundef %382, i32 noundef %383) #11
  call void @exit(i32 noundef 1) #12
  unreachable

385:                                              ; preds = %357
  %386 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #9
  %387 = icmp eq i32 %386, -1
  br i1 %387, label %388, label %412

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

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

399:                                              ; preds = %395, %388
  br label %400

400:                                              ; preds = %395, %399
  %.str.5.sink195 = phi ptr [ @.str.5, %399 ], [ @.str.2, %395 ]
  store i32 %390, ptr %389, align 4, !tbaa !5
  %401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %402 = load i32, ptr @test_count, align 4, !tbaa !5
  %403 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %404 = load i32, ptr %403, align 4, !tbaa !5
  %405 = call ptr @s2n_strerror(i32 noundef %404, ptr noundef nonnull @.str.4) #9
  %406 = load i32, ptr %403, align 4, !tbaa !5
  %407 = call ptr @s2n_strerror_debug(i32 noundef %406, ptr noundef nonnull @.str.4) #9
  %408 = load i32, ptr %389, align 4, !tbaa !5
  %409 = call ptr @strerror(i32 noundef %408) #9
  %410 = load i32, ptr %389, align 4, !tbaa !5
  %411 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %401, ptr noundef nonnull %.str.5.sink195, i32 noundef %402, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 56, ptr noundef %405, ptr noundef %407, ptr noundef %409, i32 noundef %410) #11
  call void @exit(i32 noundef 1) #12
  unreachable

412:                                              ; preds = %385
  %413 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %414 = trunc nuw i8 %413 to i1
  br i1 %414, label %415, label %426

415:                                              ; preds = %412
  %416 = load ptr, ptr @stdout, align 8, !tbaa !9
  %417 = call i32 @fileno(ptr noundef %416) #9
  %418 = call i32 @isatty(i32 noundef %417) #9
  %.not38 = icmp eq i32 %418, 0
  br i1 %.not38, label %426, label %419

419:                                              ; preds = %415
  %420 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not40 = icmp eq i32 %420, 0
  %421 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not40, label %424, label %422

422:                                              ; preds = %419
  %423 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %421, ptr noundef nonnull @.str.19, i32 noundef %420) #9
  br label %433

424:                                              ; preds = %419
  %425 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %421, ptr noundef nonnull @.str.20) #9
  br label %433

426:                                              ; preds = %415, %412
  %427 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not39 = icmp eq i32 %427, 0
  %428 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not39, label %431, label %429

429:                                              ; preds = %426
  %430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %428, ptr noundef nonnull @.str.21, i32 noundef %427) #9
  br label %433

431:                                              ; preds = %426
  %432 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %428, ptr noundef nonnull @.str.22) #9
  br label %433

433:                                              ; preds = %429, %431, %422, %424
  ret i32 0
}

; 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_enable_tls13_in_test(...) local_unnamed_addr #2

declare ptr @s2n_connection_new(i32 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_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_disable_tls13_in_test(...) 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 = { nounwind }
attributes #10 = { nounwind willreturn memory(none) }
attributes #11 = { cold nounwind }
attributes #12 = { noreturn nounwind }

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

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


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass