; LLVM IR from aws/s2n-tls :: tests/unit (s2n_server_server_name_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_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_stuffer = type { %struct.s2n_blob, i32, i32, i32, i8 }
%struct.s2n_blob = type { ptr, i32, i32, i8 }
%struct.s2n_post_handshake = type { %struct.s2n_stuffer, [4 x i8] }
%struct.s2n_atomic_flag = type { i32 }

@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 [96 x i8], align 1
@stderr = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [72 x i8], align 1
@s2n_server_server_name_extension = external constant %struct.s2n_extension_type, align 8
@.str.10 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [36 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 i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %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 ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  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 %27

27:                                               ; preds = %2
  br label %28

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

33:                                               ; preds = %28
  %34 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %35 = icmp eq i32 %34, -1
  br i1 %35, label %36, label %87

36:                                               ; preds = %33
  br label %37

37:                                               ; preds = %36
  br label %38

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

45:                                               ; preds = %38
  %46 = load ptr, ptr @stderr, align 8, !tbaa !9
  %47 = call i32 @fileno(ptr noundef %46) #7
  %48 = call i32 @isatty(i32 noundef %47) #7
  %49 = icmp ne i32 %48, 0
  br i1 %49, label %50, label %67

50:                                               ; preds = %45
  %51 = load i32, ptr %6, align 4, !tbaa !5
  %52 = call ptr @__errno_location() #8
  store i32 %51, ptr %52, align 4, !tbaa !5
  %53 = load ptr, ptr @stderr, align 8, !tbaa !9
  %54 = load i32, ptr @test_count, align 4, !tbaa !5
  %55 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %56 = load i32, ptr %55, align 4, !tbaa !5
  %57 = call ptr @s2n_strerror(i32 noundef %56, ptr noundef @.str.4)
  %58 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %59 = load i32, ptr %58, align 4, !tbaa !5
  %60 = call ptr @s2n_strerror_debug(i32 noundef %59, ptr noundef @.str.4)
  %61 = call ptr @__errno_location() #8
  %62 = load i32, ptr %61, align 4, !tbaa !5
  %63 = call ptr @strerror(i32 noundef %62) #7
  %64 = call ptr @__errno_location() #8
  %65 = load i32, ptr %64, align 4, !tbaa !5
  %66 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %53, ptr noundef @.str.2, i32 noundef %54, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 26, ptr noundef %57, ptr noundef %60, ptr noundef %63, i32 noundef %65) #7
  br label %84

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

84:                                               ; preds = %67, %50
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %85

85:                                               ; preds = %84
  call void @exit(i32 noundef 1) #9
  unreachable

86:                                               ; No predecessors!
  br label %87

87:                                               ; preds = %86, %33
  br label %88

88:                                               ; preds = %87
  br label %89

89:                                               ; preds = %88
  %90 = load i32, ptr @test_count, align 4, !tbaa !5
  %91 = add nsw i32 %90, 1
  store i32 %91, ptr @test_count, align 4, !tbaa !5
  %92 = call i32 @s2n_enable_atexit()
  %93 = icmp eq i32 %92, -1
  br i1 %93, label %94, label %145

94:                                               ; preds = %89
  br label %95

95:                                               ; preds = %94
  br label %96

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

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

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

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

142:                                              ; preds = %125, %108
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %143

143:                                              ; preds = %142
  call void @exit(i32 noundef 1) #9
  unreachable

144:                                              ; No predecessors!
  br label %145

145:                                              ; preds = %144, %89
  br label %146

146:                                              ; preds = %145
  br label %147

147:                                              ; preds = %146
  br label %148

148:                                              ; preds = %147
  %149 = call i32 @s2n_init()
  %150 = icmp eq i32 %149, -1
  br i1 %150, label %151, label %202

151:                                              ; preds = %148
  br label %152

152:                                              ; preds = %151
  br label %153

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

160:                                              ; preds = %153
  %161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %162 = call i32 @fileno(ptr noundef %161) #7
  %163 = call i32 @isatty(i32 noundef %162) #7
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %165, label %182

165:                                              ; preds = %160
  %166 = load i32, ptr %8, align 4, !tbaa !5
  %167 = call ptr @__errno_location() #8
  store i32 %166, ptr %167, align 4, !tbaa !5
  %168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %169 = load i32, ptr @test_count, align 4, !tbaa !5
  %170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %171 = load i32, ptr %170, align 4, !tbaa !5
  %172 = call ptr @s2n_strerror(i32 noundef %171, ptr noundef @.str.4)
  %173 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %174 = load i32, ptr %173, align 4, !tbaa !5
  %175 = call ptr @s2n_strerror_debug(i32 noundef %174, ptr noundef @.str.4)
  %176 = call ptr @__errno_location() #8
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = call ptr @strerror(i32 noundef %177) #7
  %179 = call ptr @__errno_location() #8
  %180 = load i32, ptr %179, align 4, !tbaa !5
  %181 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %168, ptr noundef @.str.2, i32 noundef %169, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 26, ptr noundef %172, ptr noundef %175, ptr noundef %178, i32 noundef %180) #7
  br label %199

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

199:                                              ; preds = %182, %165
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %200

200:                                              ; preds = %199
  call void @exit(i32 noundef 1) #9
  unreachable

201:                                              ; No predecessors!
  br label %202

202:                                              ; preds = %201, %148
  br label %203

203:                                              ; preds = %202
  br label %204

204:                                              ; preds = %203
  br label %205

205:                                              ; preds = %204
  %206 = load i32, ptr @test_count, align 4, !tbaa !5
  %207 = add nsw i32 %206, 1
  store i32 %207, ptr @test_count, align 4, !tbaa !5
  %208 = call i32 (...) @s2n_disable_tls13_in_test()
  %209 = icmp eq i32 %208, -1
  br i1 %209, label %210, label %261

210:                                              ; preds = %205
  br label %211

211:                                              ; preds = %210
  br label %212

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

219:                                              ; preds = %212
  %220 = load ptr, ptr @stderr, align 8, !tbaa !9
  %221 = call i32 @fileno(ptr noundef %220) #7
  %222 = call i32 @isatty(i32 noundef %221) #7
  %223 = icmp ne i32 %222, 0
  br i1 %223, label %224, label %241

224:                                              ; preds = %219
  %225 = load i32, ptr %9, align 4, !tbaa !5
  %226 = call ptr @__errno_location() #8
  store i32 %225, ptr %226, 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 @.str.4)
  %232 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = call ptr @s2n_strerror_debug(i32 noundef %233, ptr noundef @.str.4)
  %235 = call ptr @__errno_location() #8
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %237 = call ptr @strerror(i32 noundef %236) #7
  %238 = call ptr @__errno_location() #8
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %227, ptr noundef @.str.2, i32 noundef %228, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 27, ptr noundef %231, ptr noundef %234, ptr noundef %237, i32 noundef %239) #7
  br label %258

241:                                              ; preds = %219, %212
  %242 = load i32, ptr %9, align 4, !tbaa !5
  %243 = call ptr @__errno_location() #8
  store i32 %242, ptr %243, align 4, !tbaa !5
  %244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %245 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %247, ptr noundef @.str.4)
  %249 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %250 = load i32, ptr %249, align 4, !tbaa !5
  %251 = call ptr @s2n_strerror_debug(i32 noundef %250, ptr noundef @.str.4)
  %252 = call ptr @__errno_location() #8
  %253 = load i32, ptr %252, align 4, !tbaa !5
  %254 = call ptr @strerror(i32 noundef %253) #7
  %255 = call ptr @__errno_location() #8
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %244, ptr noundef @.str.5, i32 noundef %245, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 27, ptr noundef %248, ptr noundef %251, ptr noundef %254, i32 noundef %256) #7
  br label %258

258:                                              ; preds = %241, %224
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %259

259:                                              ; preds = %258
  call void @exit(i32 noundef 1) #9
  unreachable

260:                                              ; No predecessors!
  br label %261

261:                                              ; preds = %260, %205
  br label %262

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  store ptr null, ptr %10, align 8, !tbaa !9
  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 1)
  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 %11) #7
  %271 = call ptr @__errno_location() #8
  %272 = load i32, ptr %271, align 4, !tbaa !5
  store i32 %272, ptr %11, 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) #7
  %280 = call i32 @isatty(i32 noundef %279) #7
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %282, label %299

282:                                              ; preds = %277
  %283 = load i32, ptr %11, align 4, !tbaa !5
  %284 = call ptr @__errno_location() #8
  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() #8
  %294 = load i32, ptr %293, align 4, !tbaa !5
  %295 = call ptr @strerror(i32 noundef %294) #7
  %296 = call ptr @__errno_location() #8
  %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 32, ptr noundef %289, ptr noundef %292, ptr noundef %295, i32 noundef %297) #7
  br label %316

299:                                              ; preds = %277, %270
  %300 = load i32, ptr %11, align 4, !tbaa !5
  %301 = call ptr @__errno_location() #8
  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() #8
  %311 = load i32, ptr %310, align 4, !tbaa !5
  %312 = call ptr @strerror(i32 noundef %311) #7
  %313 = call ptr @__errno_location() #8
  %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 32, ptr noundef %306, ptr noundef %309, ptr noundef %312, i32 noundef %314) #7
  br label %316

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

317:                                              ; preds = %316
  br label %318

318:                                              ; preds = %317
  call void @exit(i32 noundef 1) #9
  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
  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 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_server_server_name_extension, i32 0, i32 5), align 8, !tbaa !15
  %328 = load ptr, ptr %10, align 8, !tbaa !9
  %329 = call zeroext i1 %327(ptr noundef %328)
  br i1 %329, label %330, label %383

330:                                              ; preds = %324
  br label %331

331:                                              ; preds = %330
  br label %332

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

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

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

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

378:                                              ; preds = %361, %344
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %379

379:                                              ; preds = %378
  br label %380

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

381:                                              ; No predecessors!
  br label %382

382:                                              ; preds = %381
  br label %383

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

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  %386 = load ptr, ptr %10, align 8, !tbaa !9
  %387 = load i32, ptr %386, align 8
  %388 = and i32 %387, -65
  %389 = or i32 %388, 0
  store i32 %389, ptr %386, align 8
  %390 = load ptr, ptr %10, align 8, !tbaa !9
  %391 = getelementptr inbounds %struct.s2n_connection, ptr %390, i32 0, i32 52
  %392 = getelementptr inbounds %struct.s2n_handshake, ptr %391, i32 0, i32 6
  store i32 1, ptr %392, align 4, !tbaa !18
  br label %393

393:                                              ; preds = %385
  %394 = load i32, ptr @test_count, align 4, !tbaa !5
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr @test_count, align 4, !tbaa !5
  %396 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_server_server_name_extension, i32 0, i32 5), align 8, !tbaa !15
  %397 = load ptr, ptr %10, align 8, !tbaa !9
  %398 = call zeroext i1 %396(ptr noundef %397)
  br i1 %398, label %399, label %452

399:                                              ; preds = %393
  br label %400

400:                                              ; preds = %399
  br label %401

401:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  %402 = call ptr @__errno_location() #8
  %403 = load i32, ptr %402, align 4, !tbaa !5
  store i32 %403, ptr %13, align 4, !tbaa !5
  %404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %405 = call i32 @s2n_print_stacktrace(ptr noundef %404)
  %406 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %407 = trunc i8 %406 to i1
  br i1 %407, label %408, label %430

408:                                              ; preds = %401
  %409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %410 = call i32 @fileno(ptr noundef %409) #7
  %411 = call i32 @isatty(i32 noundef %410) #7
  %412 = icmp ne i32 %411, 0
  br i1 %412, label %413, label %430

413:                                              ; preds = %408
  %414 = load i32, ptr %13, align 4, !tbaa !5
  %415 = call ptr @__errno_location() #8
  store i32 %414, ptr %415, align 4, !tbaa !5
  %416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %417 = load i32, ptr @test_count, align 4, !tbaa !5
  %418 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = call ptr @s2n_strerror(i32 noundef %419, ptr noundef @.str.4)
  %421 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %422 = load i32, ptr %421, align 4, !tbaa !5
  %423 = call ptr @s2n_strerror_debug(i32 noundef %422, ptr noundef @.str.4)
  %424 = call ptr @__errno_location() #8
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = call ptr @strerror(i32 noundef %425) #7
  %427 = call ptr @__errno_location() #8
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %416, ptr noundef @.str.2, i32 noundef %417, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 40, ptr noundef %420, ptr noundef %423, ptr noundef %426, i32 noundef %428) #7
  br label %447

430:                                              ; preds = %408, %401
  %431 = load i32, ptr %13, align 4, !tbaa !5
  %432 = call ptr @__errno_location() #8
  store i32 %431, ptr %432, align 4, !tbaa !5
  %433 = load ptr, ptr @stderr, align 8, !tbaa !9
  %434 = load i32, ptr @test_count, align 4, !tbaa !5
  %435 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %436 = load i32, ptr %435, align 4, !tbaa !5
  %437 = call ptr @s2n_strerror(i32 noundef %436, ptr noundef @.str.4)
  %438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %439 = load i32, ptr %438, align 4, !tbaa !5
  %440 = call ptr @s2n_strerror_debug(i32 noundef %439, ptr noundef @.str.4)
  %441 = call ptr @__errno_location() #8
  %442 = load i32, ptr %441, align 4, !tbaa !5
  %443 = call ptr @strerror(i32 noundef %442) #7
  %444 = call ptr @__errno_location() #8
  %445 = load i32, ptr %444, align 4, !tbaa !5
  %446 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %433, ptr noundef @.str.5, i32 noundef %434, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 40, ptr noundef %437, ptr noundef %440, ptr noundef %443, i32 noundef %445) #7
  br label %447

447:                                              ; preds = %430, %413
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %448

448:                                              ; preds = %447
  br label %449

449:                                              ; preds = %448
  call void @exit(i32 noundef 1) #9
  unreachable

450:                                              ; No predecessors!
  br label %451

451:                                              ; preds = %450
  br label %452

452:                                              ; preds = %451, %393
  br label %453

453:                                              ; preds = %452
  br label %454

454:                                              ; preds = %453
  %455 = load ptr, ptr %10, align 8, !tbaa !9
  %456 = load i32, ptr %455, align 8
  %457 = and i32 %456, -65
  %458 = or i32 %457, 64
  store i32 %458, ptr %455, align 8
  %459 = load ptr, ptr %10, align 8, !tbaa !9
  %460 = getelementptr inbounds %struct.s2n_connection, ptr %459, i32 0, i32 52
  %461 = getelementptr inbounds %struct.s2n_handshake, ptr %460, i32 0, i32 6
  store i32 1, ptr %461, align 4, !tbaa !18
  br label %462

462:                                              ; preds = %454
  %463 = load i32, ptr @test_count, align 4, !tbaa !5
  %464 = add nsw i32 %463, 1
  store i32 %464, ptr @test_count, align 4, !tbaa !5
  %465 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_server_server_name_extension, i32 0, i32 5), align 8, !tbaa !15
  %466 = load ptr, ptr %10, align 8, !tbaa !9
  %467 = call zeroext i1 %465(ptr noundef %466)
  br i1 %467, label %468, label %521

468:                                              ; preds = %462
  br label %469

469:                                              ; preds = %468
  br label %470

470:                                              ; preds = %469
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %471 = call ptr @__errno_location() #8
  %472 = load i32, ptr %471, align 4, !tbaa !5
  store i32 %472, ptr %14, align 4, !tbaa !5
  %473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %474 = call i32 @s2n_print_stacktrace(ptr noundef %473)
  %475 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %476 = trunc i8 %475 to i1
  br i1 %476, label %477, label %499

477:                                              ; preds = %470
  %478 = load ptr, ptr @stderr, align 8, !tbaa !9
  %479 = call i32 @fileno(ptr noundef %478) #7
  %480 = call i32 @isatty(i32 noundef %479) #7
  %481 = icmp ne i32 %480, 0
  br i1 %481, label %482, label %499

482:                                              ; preds = %477
  %483 = load i32, ptr %14, align 4, !tbaa !5
  %484 = call ptr @__errno_location() #8
  store i32 %483, ptr %484, align 4, !tbaa !5
  %485 = load ptr, ptr @stderr, align 8, !tbaa !9
  %486 = load i32, ptr @test_count, align 4, !tbaa !5
  %487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %488 = load i32, ptr %487, align 4, !tbaa !5
  %489 = call ptr @s2n_strerror(i32 noundef %488, ptr noundef @.str.4)
  %490 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %491 = load i32, ptr %490, align 4, !tbaa !5
  %492 = call ptr @s2n_strerror_debug(i32 noundef %491, ptr noundef @.str.4)
  %493 = call ptr @__errno_location() #8
  %494 = load i32, ptr %493, align 4, !tbaa !5
  %495 = call ptr @strerror(i32 noundef %494) #7
  %496 = call ptr @__errno_location() #8
  %497 = load i32, ptr %496, align 4, !tbaa !5
  %498 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %485, ptr noundef @.str.2, i32 noundef %486, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 45, ptr noundef %489, ptr noundef %492, ptr noundef %495, i32 noundef %497) #7
  br label %516

499:                                              ; preds = %477, %470
  %500 = load i32, ptr %14, align 4, !tbaa !5
  %501 = call ptr @__errno_location() #8
  store i32 %500, ptr %501, align 4, !tbaa !5
  %502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %503 = load i32, ptr @test_count, align 4, !tbaa !5
  %504 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %505 = load i32, ptr %504, align 4, !tbaa !5
  %506 = call ptr @s2n_strerror(i32 noundef %505, ptr noundef @.str.4)
  %507 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %508 = load i32, ptr %507, align 4, !tbaa !5
  %509 = call ptr @s2n_strerror_debug(i32 noundef %508, ptr noundef @.str.4)
  %510 = call ptr @__errno_location() #8
  %511 = load i32, ptr %510, align 4, !tbaa !5
  %512 = call ptr @strerror(i32 noundef %511) #7
  %513 = call ptr @__errno_location() #8
  %514 = load i32, ptr %513, align 4, !tbaa !5
  %515 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %502, ptr noundef @.str.5, i32 noundef %503, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 45, ptr noundef %506, ptr noundef %509, ptr noundef %512, i32 noundef %514) #7
  br label %516

516:                                              ; preds = %499, %482
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %517

517:                                              ; preds = %516
  br label %518

518:                                              ; preds = %517
  call void @exit(i32 noundef 1) #9
  unreachable

519:                                              ; No predecessors!
  br label %520

520:                                              ; preds = %519
  br label %521

521:                                              ; preds = %520, %462
  br label %522

522:                                              ; preds = %521
  br label %523

523:                                              ; preds = %522
  %524 = load ptr, ptr %10, align 8, !tbaa !9
  %525 = load i32, ptr %524, align 8
  %526 = and i32 %525, -65
  %527 = or i32 %526, 0
  store i32 %527, ptr %524, align 8
  %528 = load ptr, ptr %10, align 8, !tbaa !9
  %529 = getelementptr inbounds %struct.s2n_connection, ptr %528, i32 0, i32 52
  %530 = getelementptr inbounds %struct.s2n_handshake, ptr %529, i32 0, i32 6
  store i32 3, ptr %530, align 4, !tbaa !18
  br label %531

531:                                              ; preds = %523
  %532 = load i32, ptr @test_count, align 4, !tbaa !5
  %533 = add nsw i32 %532, 1
  store i32 %533, ptr @test_count, align 4, !tbaa !5
  %534 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_server_server_name_extension, i32 0, i32 5), align 8, !tbaa !15
  %535 = load ptr, ptr %10, align 8, !tbaa !9
  %536 = call zeroext i1 %534(ptr noundef %535)
  br i1 %536, label %537, label %590

537:                                              ; preds = %531
  br label %538

538:                                              ; preds = %537
  br label %539

539:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  %540 = call ptr @__errno_location() #8
  %541 = load i32, ptr %540, align 4, !tbaa !5
  store i32 %541, ptr %15, align 4, !tbaa !5
  %542 = load ptr, ptr @stderr, align 8, !tbaa !9
  %543 = call i32 @s2n_print_stacktrace(ptr noundef %542)
  %544 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %545 = trunc i8 %544 to i1
  br i1 %545, label %546, label %568

546:                                              ; preds = %539
  %547 = load ptr, ptr @stderr, align 8, !tbaa !9
  %548 = call i32 @fileno(ptr noundef %547) #7
  %549 = call i32 @isatty(i32 noundef %548) #7
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %551, label %568

551:                                              ; preds = %546
  %552 = load i32, ptr %15, align 4, !tbaa !5
  %553 = call ptr @__errno_location() #8
  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() #8
  %563 = load i32, ptr %562, align 4, !tbaa !5
  %564 = call ptr @strerror(i32 noundef %563) #7
  %565 = call ptr @__errno_location() #8
  %566 = load i32, ptr %565, align 4, !tbaa !5
  %567 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %554, ptr noundef @.str.2, i32 noundef %555, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 50, ptr noundef %558, ptr noundef %561, ptr noundef %564, i32 noundef %566) #7
  br label %585

568:                                              ; preds = %546, %539
  %569 = load i32, ptr %15, align 4, !tbaa !5
  %570 = call ptr @__errno_location() #8
  store i32 %569, ptr %570, align 4, !tbaa !5
  %571 = load ptr, ptr @stderr, align 8, !tbaa !9
  %572 = load i32, ptr @test_count, align 4, !tbaa !5
  %573 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %574 = load i32, ptr %573, align 4, !tbaa !5
  %575 = call ptr @s2n_strerror(i32 noundef %574, ptr noundef @.str.4)
  %576 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %577 = load i32, ptr %576, align 4, !tbaa !5
  %578 = call ptr @s2n_strerror_debug(i32 noundef %577, ptr noundef @.str.4)
  %579 = call ptr @__errno_location() #8
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = call ptr @strerror(i32 noundef %580) #7
  %582 = call ptr @__errno_location() #8
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %571, ptr noundef @.str.5, i32 noundef %572, ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 50, ptr noundef %575, ptr noundef %578, ptr noundef %581, i32 noundef %583) #7
  br label %585

585:                                              ; preds = %568, %551
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %586

586:                                              ; preds = %585
  br label %587

587:                                              ; preds = %586
  call void @exit(i32 noundef 1) #9
  unreachable

588:                                              ; No predecessors!
  br label %589

589:                                              ; preds = %588
  br label %590

590:                                              ; preds = %589, %531
  br label %591

591:                                              ; preds = %590
  br label %592

592:                                              ; preds = %591
  %593 = load ptr, ptr %10, align 8, !tbaa !9
  %594 = load i32, ptr %593, align 8
  %595 = and i32 %594, -65
  %596 = or i32 %595, 64
  store i32 %596, ptr %593, align 8
  %597 = load ptr, ptr %10, align 8, !tbaa !9
  %598 = getelementptr inbounds %struct.s2n_connection, ptr %597, i32 0, i32 52
  %599 = getelementptr inbounds %struct.s2n_handshake, ptr %598, i32 0, i32 6
  store i32 3, ptr %599, align 4, !tbaa !18
  br label %600

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

606:                                              ; preds = %600
  br label %607

607:                                              ; preds = %606
  br label %608

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

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

620:                                              ; preds = %615
  %621 = load i32, ptr %16, align 4, !tbaa !5
  %622 = call ptr @__errno_location() #8
  store i32 %621, ptr %622, align 4, !tbaa !5
  %623 = load ptr, ptr @stderr, align 8, !tbaa !9
  %624 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %626, ptr noundef @.str.4)
  %628 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %629 = load i32, ptr %628, align 4, !tbaa !5
  %630 = call ptr @s2n_strerror_debug(i32 noundef %629, ptr noundef @.str.4)
  %631 = call ptr @__errno_location() #8
  %632 = load i32, ptr %631, align 4, !tbaa !5
  %633 = call ptr @strerror(i32 noundef %632) #7
  %634 = call ptr @__errno_location() #8
  %635 = load i32, ptr %634, align 4, !tbaa !5
  %636 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %623, ptr noundef @.str.2, i32 noundef %624, ptr noundef @.str.11, ptr noundef @.str.1, i32 noundef 55, ptr noundef %627, ptr noundef %630, ptr noundef %633, i32 noundef %635) #7
  br label %654

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

654:                                              ; preds = %637, %620
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %655

655:                                              ; preds = %654
  br label %656

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

657:                                              ; No predecessors!
  br label %658

658:                                              ; preds = %657
  br label %659

659:                                              ; preds = %658, %600
  br label %660

660:                                              ; preds = %659
  br label %661

661:                                              ; preds = %660
  br label %662

662:                                              ; preds = %661
  %663 = load i32, ptr @test_count, align 4, !tbaa !5
  %664 = add nsw i32 %663, 1
  store i32 %664, ptr @test_count, align 4, !tbaa !5
  %665 = load ptr, ptr %10, align 8, !tbaa !9
  %666 = call i32 @s2n_connection_free(ptr noundef %665)
  %667 = icmp eq i32 %666, -1
  br i1 %667, label %668, label %721

668:                                              ; preds = %662
  br label %669

669:                                              ; preds = %668
  br label %670

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

677:                                              ; preds = %670
  %678 = load ptr, ptr @stderr, align 8, !tbaa !9
  %679 = call i32 @fileno(ptr noundef %678) #7
  %680 = call i32 @isatty(i32 noundef %679) #7
  %681 = icmp ne i32 %680, 0
  br i1 %681, label %682, label %699

682:                                              ; preds = %677
  %683 = load i32, ptr %17, align 4, !tbaa !5
  %684 = call ptr @__errno_location() #8
  store i32 %683, ptr %684, align 4, !tbaa !5
  %685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %686 = load i32, ptr @test_count, align 4, !tbaa !5
  %687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %688 = load i32, ptr %687, align 4, !tbaa !5
  %689 = call ptr @s2n_strerror(i32 noundef %688, ptr noundef @.str.4)
  %690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %691 = load i32, ptr %690, align 4, !tbaa !5
  %692 = call ptr @s2n_strerror_debug(i32 noundef %691, ptr noundef @.str.4)
  %693 = call ptr @__errno_location() #8
  %694 = load i32, ptr %693, align 4, !tbaa !5
  %695 = call ptr @strerror(i32 noundef %694) #7
  %696 = call ptr @__errno_location() #8
  %697 = load i32, ptr %696, align 4, !tbaa !5
  %698 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %685, ptr noundef @.str.2, i32 noundef %686, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 57, ptr noundef %689, ptr noundef %692, ptr noundef %695, i32 noundef %697) #7
  br label %716

699:                                              ; preds = %677, %670
  %700 = load i32, ptr %17, align 4, !tbaa !5
  %701 = call ptr @__errno_location() #8
  store i32 %700, ptr %701, align 4, !tbaa !5
  %702 = load ptr, ptr @stderr, align 8, !tbaa !9
  %703 = load i32, ptr @test_count, align 4, !tbaa !5
  %704 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %705 = load i32, ptr %704, align 4, !tbaa !5
  %706 = call ptr @s2n_strerror(i32 noundef %705, ptr noundef @.str.4)
  %707 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %708 = load i32, ptr %707, align 4, !tbaa !5
  %709 = call ptr @s2n_strerror_debug(i32 noundef %708, ptr noundef @.str.4)
  %710 = call ptr @__errno_location() #8
  %711 = load i32, ptr %710, align 4, !tbaa !5
  %712 = call ptr @strerror(i32 noundef %711) #7
  %713 = call ptr @__errno_location() #8
  %714 = load i32, ptr %713, align 4, !tbaa !5
  %715 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %702, ptr noundef @.str.5, i32 noundef %703, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 57, ptr noundef %706, ptr noundef %709, ptr noundef %712, i32 noundef %714) #7
  br label %716

716:                                              ; preds = %699, %682
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %717

717:                                              ; preds = %716
  br label %718

718:                                              ; preds = %717
  call void @exit(i32 noundef 1) #9
  unreachable

719:                                              ; No predecessors!
  br label %720

720:                                              ; preds = %719
  br label %721

721:                                              ; preds = %720, %662
  br label %722

722:                                              ; preds = %721
  br label %723

723:                                              ; preds = %722
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %724

724:                                              ; preds = %723
  %725 = load i32, ptr @test_count, align 4, !tbaa !5
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr @test_count, align 4, !tbaa !5
  %727 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_server_server_name_extension, i32 0, i32 3), align 8, !tbaa !44
  %728 = call i32 %727(ptr noundef null, ptr noundef null)
  %729 = icmp eq i32 %728, -1
  br i1 %729, label %730, label %781

730:                                              ; preds = %724
  br label %731

731:                                              ; preds = %730
  br label %732

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

739:                                              ; preds = %732
  %740 = load ptr, ptr @stderr, align 8, !tbaa !9
  %741 = call i32 @fileno(ptr noundef %740) #7
  %742 = call i32 @isatty(i32 noundef %741) #7
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %744, label %761

744:                                              ; preds = %739
  %745 = load i32, ptr %18, align 4, !tbaa !5
  %746 = call ptr @__errno_location() #8
  store i32 %745, ptr %746, align 4, !tbaa !5
  %747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %748 = load i32, ptr @test_count, align 4, !tbaa !5
  %749 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %750 = load i32, ptr %749, align 4, !tbaa !5
  %751 = call ptr @s2n_strerror(i32 noundef %750, ptr noundef @.str.4)
  %752 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %753 = load i32, ptr %752, align 4, !tbaa !5
  %754 = call ptr @s2n_strerror_debug(i32 noundef %753, ptr noundef @.str.4)
  %755 = call ptr @__errno_location() #8
  %756 = load i32, ptr %755, align 4, !tbaa !5
  %757 = call ptr @strerror(i32 noundef %756) #7
  %758 = call ptr @__errno_location() #8
  %759 = load i32, ptr %758, align 4, !tbaa !5
  %760 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %747, ptr noundef @.str.2, i32 noundef %748, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 63, ptr noundef %751, ptr noundef %754, ptr noundef %757, i32 noundef %759) #7
  br label %778

761:                                              ; preds = %739, %732
  %762 = load i32, ptr %18, align 4, !tbaa !5
  %763 = call ptr @__errno_location() #8
  store i32 %762, ptr %763, align 4, !tbaa !5
  %764 = load ptr, ptr @stderr, align 8, !tbaa !9
  %765 = load i32, ptr @test_count, align 4, !tbaa !5
  %766 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %767 = load i32, ptr %766, align 4, !tbaa !5
  %768 = call ptr @s2n_strerror(i32 noundef %767, ptr noundef @.str.4)
  %769 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %770 = load i32, ptr %769, align 4, !tbaa !5
  %771 = call ptr @s2n_strerror_debug(i32 noundef %770, ptr noundef @.str.4)
  %772 = call ptr @__errno_location() #8
  %773 = load i32, ptr %772, align 4, !tbaa !5
  %774 = call ptr @strerror(i32 noundef %773) #7
  %775 = call ptr @__errno_location() #8
  %776 = load i32, ptr %775, align 4, !tbaa !5
  %777 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %764, ptr noundef @.str.5, i32 noundef %765, ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 63, ptr noundef %768, ptr noundef %771, ptr noundef %774, i32 noundef %776) #7
  br label %778

778:                                              ; preds = %761, %744
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %779

779:                                              ; preds = %778
  call void @exit(i32 noundef 1) #9
  unreachable

780:                                              ; No predecessors!
  br label %781

781:                                              ; preds = %780, %724
  br label %782

782:                                              ; preds = %781
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  store ptr null, ptr %19, align 8, !tbaa !9
  br label %783

783:                                              ; preds = %782
  %784 = load i32, ptr @test_count, align 4, !tbaa !5
  %785 = add nsw i32 %784, 1
  store i32 %785, ptr @test_count, align 4, !tbaa !5
  %786 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %786, ptr %19, align 8, !tbaa !9
  %787 = icmp eq ptr %786, null
  br i1 %787, label %788, label %841

788:                                              ; preds = %783
  br label %789

789:                                              ; preds = %788
  br label %790

790:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %791 = call ptr @__errno_location() #8
  %792 = load i32, ptr %791, align 4, !tbaa !5
  store i32 %792, ptr %20, align 4, !tbaa !5
  %793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %794 = call i32 @s2n_print_stacktrace(ptr noundef %793)
  %795 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %796 = trunc i8 %795 to i1
  br i1 %796, label %797, label %819

797:                                              ; preds = %790
  %798 = load ptr, ptr @stderr, align 8, !tbaa !9
  %799 = call i32 @fileno(ptr noundef %798) #7
  %800 = call i32 @isatty(i32 noundef %799) #7
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %802, label %819

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

819:                                              ; preds = %797, %790
  %820 = load i32, ptr %20, align 4, !tbaa !5
  %821 = call ptr @__errno_location() #8
  store i32 %820, ptr %821, align 4, !tbaa !5
  %822 = load ptr, ptr @stderr, align 8, !tbaa !9
  %823 = load i32, ptr @test_count, align 4, !tbaa !5
  %824 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %825 = load i32, ptr %824, align 4, !tbaa !5
  %826 = call ptr @s2n_strerror(i32 noundef %825, ptr noundef @.str.4)
  %827 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %828 = load i32, ptr %827, align 4, !tbaa !5
  %829 = call ptr @s2n_strerror_debug(i32 noundef %828, ptr noundef @.str.4)
  %830 = call ptr @__errno_location() #8
  %831 = load i32, ptr %830, align 4, !tbaa !5
  %832 = call ptr @strerror(i32 noundef %831) #7
  %833 = call ptr @__errno_location() #8
  %834 = load i32, ptr %833, align 4, !tbaa !5
  %835 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %822, ptr noundef @.str.5, i32 noundef %823, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 69, ptr noundef %826, ptr noundef %829, ptr noundef %832, i32 noundef %834) #7
  br label %836

836:                                              ; preds = %819, %802
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %837

837:                                              ; preds = %836
  br label %838

838:                                              ; preds = %837
  call void @exit(i32 noundef 1) #9
  unreachable

839:                                              ; No predecessors!
  br label %840

840:                                              ; preds = %839
  br label %841

841:                                              ; preds = %840, %783
  br label %842

842:                                              ; preds = %841
  br label %843

843:                                              ; preds = %842
  br label %844

844:                                              ; preds = %843
  %845 = load i32, ptr @test_count, align 4, !tbaa !5
  %846 = add nsw i32 %845, 1
  store i32 %846, ptr @test_count, align 4, !tbaa !5
  %847 = load ptr, ptr %19, align 8, !tbaa !9
  %848 = load i32, ptr %847, align 8
  %849 = lshr i32 %848, 6
  %850 = and i32 %849, 1
  %851 = icmp ne i32 %850, 0
  br i1 %851, label %852, label %905

852:                                              ; preds = %844
  br label %853

853:                                              ; preds = %852
  br label %854

854:                                              ; preds = %853
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  %855 = call ptr @__errno_location() #8
  %856 = load i32, ptr %855, align 4, !tbaa !5
  store i32 %856, ptr %21, align 4, !tbaa !5
  %857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %858 = call i32 @s2n_print_stacktrace(ptr noundef %857)
  %859 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %860 = trunc i8 %859 to i1
  br i1 %860, label %861, label %883

861:                                              ; preds = %854
  %862 = load ptr, ptr @stderr, align 8, !tbaa !9
  %863 = call i32 @fileno(ptr noundef %862) #7
  %864 = call i32 @isatty(i32 noundef %863) #7
  %865 = icmp ne i32 %864, 0
  br i1 %865, label %866, label %883

866:                                              ; preds = %861
  %867 = load i32, ptr %21, align 4, !tbaa !5
  %868 = call ptr @__errno_location() #8
  store i32 %867, ptr %868, align 4, !tbaa !5
  %869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %870 = load i32, ptr @test_count, align 4, !tbaa !5
  %871 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %872 = load i32, ptr %871, align 4, !tbaa !5
  %873 = call ptr @s2n_strerror(i32 noundef %872, ptr noundef @.str.4)
  %874 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %875 = load i32, ptr %874, align 4, !tbaa !5
  %876 = call ptr @s2n_strerror_debug(i32 noundef %875, ptr noundef @.str.4)
  %877 = call ptr @__errno_location() #8
  %878 = load i32, ptr %877, align 4, !tbaa !5
  %879 = call ptr @strerror(i32 noundef %878) #7
  %880 = call ptr @__errno_location() #8
  %881 = load i32, ptr %880, align 4, !tbaa !5
  %882 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %869, ptr noundef @.str.2, i32 noundef %870, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 72, ptr noundef %873, ptr noundef %876, ptr noundef %879, i32 noundef %881) #7
  br label %900

883:                                              ; preds = %861, %854
  %884 = load i32, ptr %21, align 4, !tbaa !5
  %885 = call ptr @__errno_location() #8
  store i32 %884, ptr %885, align 4, !tbaa !5
  %886 = load ptr, ptr @stderr, align 8, !tbaa !9
  %887 = load i32, ptr @test_count, align 4, !tbaa !5
  %888 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %889 = load i32, ptr %888, align 4, !tbaa !5
  %890 = call ptr @s2n_strerror(i32 noundef %889, ptr noundef @.str.4)
  %891 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %892 = load i32, ptr %891, align 4, !tbaa !5
  %893 = call ptr @s2n_strerror_debug(i32 noundef %892, ptr noundef @.str.4)
  %894 = call ptr @__errno_location() #8
  %895 = load i32, ptr %894, align 4, !tbaa !5
  %896 = call ptr @strerror(i32 noundef %895) #7
  %897 = call ptr @__errno_location() #8
  %898 = load i32, ptr %897, align 4, !tbaa !5
  %899 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %886, ptr noundef @.str.5, i32 noundef %887, ptr noundef @.str.14, ptr noundef @.str.1, i32 noundef 72, ptr noundef %890, ptr noundef %893, ptr noundef %896, i32 noundef %898) #7
  br label %900

900:                                              ; preds = %883, %866
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %901

901:                                              ; preds = %900
  br label %902

902:                                              ; preds = %901
  call void @exit(i32 noundef 1) #9
  unreachable

903:                                              ; No predecessors!
  br label %904

904:                                              ; preds = %903
  br label %905

905:                                              ; preds = %904, %844
  br label %906

906:                                              ; preds = %905
  br label %907

907:                                              ; preds = %906
  br label %908

908:                                              ; preds = %907
  %909 = load i32, ptr @test_count, align 4, !tbaa !5
  %910 = add nsw i32 %909, 1
  store i32 %910, ptr @test_count, align 4, !tbaa !5
  %911 = load ptr, ptr getelementptr inbounds (%struct.s2n_extension_type, ptr @s2n_server_server_name_extension, i32 0, i32 4), align 8, !tbaa !45
  %912 = load ptr, ptr %19, align 8, !tbaa !9
  %913 = call i32 %911(ptr noundef %912, ptr noundef null)
  %914 = icmp eq i32 %913, -1
  br i1 %914, label %915, label %968

915:                                              ; preds = %908
  br label %916

916:                                              ; preds = %915
  br label %917

917:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  %918 = call ptr @__errno_location() #8
  %919 = load i32, ptr %918, align 4, !tbaa !5
  store i32 %919, ptr %22, align 4, !tbaa !5
  %920 = load ptr, ptr @stderr, align 8, !tbaa !9
  %921 = call i32 @s2n_print_stacktrace(ptr noundef %920)
  %922 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %923 = trunc i8 %922 to i1
  br i1 %923, label %924, label %946

924:                                              ; preds = %917
  %925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %926 = call i32 @fileno(ptr noundef %925) #7
  %927 = call i32 @isatty(i32 noundef %926) #7
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %946

929:                                              ; preds = %924
  %930 = load i32, ptr %22, align 4, !tbaa !5
  %931 = call ptr @__errno_location() #8
  store i32 %930, ptr %931, align 4, !tbaa !5
  %932 = load ptr, ptr @stderr, align 8, !tbaa !9
  %933 = load i32, ptr @test_count, align 4, !tbaa !5
  %934 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %935 = load i32, ptr %934, align 4, !tbaa !5
  %936 = call ptr @s2n_strerror(i32 noundef %935, ptr noundef @.str.4)
  %937 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %938 = load i32, ptr %937, align 4, !tbaa !5
  %939 = call ptr @s2n_strerror_debug(i32 noundef %938, ptr noundef @.str.4)
  %940 = call ptr @__errno_location() #8
  %941 = load i32, ptr %940, align 4, !tbaa !5
  %942 = call ptr @strerror(i32 noundef %941) #7
  %943 = call ptr @__errno_location() #8
  %944 = load i32, ptr %943, align 4, !tbaa !5
  %945 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %932, ptr noundef @.str.2, i32 noundef %933, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 73, ptr noundef %936, ptr noundef %939, ptr noundef %942, i32 noundef %944) #7
  br label %963

946:                                              ; preds = %924, %917
  %947 = load i32, ptr %22, align 4, !tbaa !5
  %948 = call ptr @__errno_location() #8
  store i32 %947, ptr %948, align 4, !tbaa !5
  %949 = load ptr, ptr @stderr, align 8, !tbaa !9
  %950 = load i32, ptr @test_count, align 4, !tbaa !5
  %951 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %952 = load i32, ptr %951, align 4, !tbaa !5
  %953 = call ptr @s2n_strerror(i32 noundef %952, ptr noundef @.str.4)
  %954 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %955 = load i32, ptr %954, align 4, !tbaa !5
  %956 = call ptr @s2n_strerror_debug(i32 noundef %955, ptr noundef @.str.4)
  %957 = call ptr @__errno_location() #8
  %958 = load i32, ptr %957, align 4, !tbaa !5
  %959 = call ptr @strerror(i32 noundef %958) #7
  %960 = call ptr @__errno_location() #8
  %961 = load i32, ptr %960, align 4, !tbaa !5
  %962 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %949, ptr noundef @.str.5, i32 noundef %950, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 73, ptr noundef %953, ptr noundef %956, ptr noundef %959, i32 noundef %961) #7
  br label %963

963:                                              ; preds = %946, %929
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %964

964:                                              ; preds = %963
  br label %965

965:                                              ; preds = %964
  call void @exit(i32 noundef 1) #9
  unreachable

966:                                              ; No predecessors!
  br label %967

967:                                              ; preds = %966
  br label %968

968:                                              ; preds = %967, %908
  br label %969

969:                                              ; preds = %968
  br label %970

970:                                              ; preds = %969
  br label %971

971:                                              ; preds = %970
  %972 = load i32, ptr @test_count, align 4, !tbaa !5
  %973 = add nsw i32 %972, 1
  store i32 %973, ptr @test_count, align 4, !tbaa !5
  %974 = load ptr, ptr %19, align 8, !tbaa !9
  %975 = load i32, ptr %974, align 8
  %976 = lshr i32 %975, 6
  %977 = and i32 %976, 1
  %978 = icmp ne i32 %977, 0
  br i1 %978, label %1032, label %979

979:                                              ; preds = %971
  br label %980

980:                                              ; preds = %979
  br label %981

981:                                              ; preds = %980
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  %982 = call ptr @__errno_location() #8
  %983 = load i32, ptr %982, align 4, !tbaa !5
  store i32 %983, ptr %23, align 4, !tbaa !5
  %984 = load ptr, ptr @stderr, align 8, !tbaa !9
  %985 = call i32 @s2n_print_stacktrace(ptr noundef %984)
  %986 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %987 = trunc i8 %986 to i1
  br i1 %987, label %988, label %1010

988:                                              ; preds = %981
  %989 = load ptr, ptr @stderr, align 8, !tbaa !9
  %990 = call i32 @fileno(ptr noundef %989) #7
  %991 = call i32 @isatty(i32 noundef %990) #7
  %992 = icmp ne i32 %991, 0
  br i1 %992, label %993, label %1010

993:                                              ; preds = %988
  %994 = load i32, ptr %23, align 4, !tbaa !5
  %995 = call ptr @__errno_location() #8
  store i32 %994, ptr %995, align 4, !tbaa !5
  %996 = load ptr, ptr @stderr, align 8, !tbaa !9
  %997 = load i32, ptr @test_count, align 4, !tbaa !5
  %998 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %999 = load i32, ptr %998, align 4, !tbaa !5
  %1000 = call ptr @s2n_strerror(i32 noundef %999, ptr noundef @.str.4)
  %1001 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1002 = load i32, ptr %1001, align 4, !tbaa !5
  %1003 = call ptr @s2n_strerror_debug(i32 noundef %1002, ptr noundef @.str.4)
  %1004 = call ptr @__errno_location() #8
  %1005 = load i32, ptr %1004, align 4, !tbaa !5
  %1006 = call ptr @strerror(i32 noundef %1005) #7
  %1007 = call ptr @__errno_location() #8
  %1008 = load i32, ptr %1007, align 4, !tbaa !5
  %1009 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %996, ptr noundef @.str.2, i32 noundef %997, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 74, ptr noundef %1000, ptr noundef %1003, ptr noundef %1006, i32 noundef %1008) #7
  br label %1027

1010:                                             ; preds = %988, %981
  %1011 = load i32, ptr %23, align 4, !tbaa !5
  %1012 = call ptr @__errno_location() #8
  store i32 %1011, ptr %1012, align 4, !tbaa !5
  %1013 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1014 = load i32, ptr @test_count, align 4, !tbaa !5
  %1015 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1016 = load i32, ptr %1015, align 4, !tbaa !5
  %1017 = call ptr @s2n_strerror(i32 noundef %1016, ptr noundef @.str.4)
  %1018 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1019 = load i32, ptr %1018, align 4, !tbaa !5
  %1020 = call ptr @s2n_strerror_debug(i32 noundef %1019, ptr noundef @.str.4)
  %1021 = call ptr @__errno_location() #8
  %1022 = load i32, ptr %1021, align 4, !tbaa !5
  %1023 = call ptr @strerror(i32 noundef %1022) #7
  %1024 = call ptr @__errno_location() #8
  %1025 = load i32, ptr %1024, align 4, !tbaa !5
  %1026 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1013, ptr noundef @.str.5, i32 noundef %1014, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 74, ptr noundef %1017, ptr noundef %1020, ptr noundef %1023, i32 noundef %1025) #7
  br label %1027

1027:                                             ; preds = %1010, %993
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %1028

1028:                                             ; preds = %1027
  br label %1029

1029:                                             ; preds = %1028
  call void @exit(i32 noundef 1) #9
  unreachable

1030:                                             ; No predecessors!
  br label %1031

1031:                                             ; preds = %1030
  br label %1032

1032:                                             ; preds = %1031, %971
  br label %1033

1033:                                             ; preds = %1032
  br label %1034

1034:                                             ; preds = %1033
  br label %1035

1035:                                             ; preds = %1034
  %1036 = load i32, ptr @test_count, align 4, !tbaa !5
  %1037 = add nsw i32 %1036, 1
  store i32 %1037, ptr @test_count, align 4, !tbaa !5
  %1038 = load ptr, ptr %19, align 8, !tbaa !9
  %1039 = call i32 @s2n_connection_free(ptr noundef %1038)
  %1040 = icmp eq i32 %1039, -1
  br i1 %1040, label %1041, label %1094

1041:                                             ; preds = %1035
  br label %1042

1042:                                             ; preds = %1041
  br label %1043

1043:                                             ; preds = %1042
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %1044 = call ptr @__errno_location() #8
  %1045 = load i32, ptr %1044, align 4, !tbaa !5
  store i32 %1045, ptr %24, align 4, !tbaa !5
  %1046 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1047 = call i32 @s2n_print_stacktrace(ptr noundef %1046)
  %1048 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1049 = trunc i8 %1048 to i1
  br i1 %1049, label %1050, label %1072

1050:                                             ; preds = %1043
  %1051 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1052 = call i32 @fileno(ptr noundef %1051) #7
  %1053 = call i32 @isatty(i32 noundef %1052) #7
  %1054 = icmp ne i32 %1053, 0
  br i1 %1054, label %1055, label %1072

1055:                                             ; preds = %1050
  %1056 = load i32, ptr %24, align 4, !tbaa !5
  %1057 = call ptr @__errno_location() #8
  store i32 %1056, ptr %1057, align 4, !tbaa !5
  %1058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1059 = load i32, ptr @test_count, align 4, !tbaa !5
  %1060 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1061 = load i32, ptr %1060, align 4, !tbaa !5
  %1062 = call ptr @s2n_strerror(i32 noundef %1061, ptr noundef @.str.4)
  %1063 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1064 = load i32, ptr %1063, align 4, !tbaa !5
  %1065 = call ptr @s2n_strerror_debug(i32 noundef %1064, ptr noundef @.str.4)
  %1066 = call ptr @__errno_location() #8
  %1067 = load i32, ptr %1066, align 4, !tbaa !5
  %1068 = call ptr @strerror(i32 noundef %1067) #7
  %1069 = call ptr @__errno_location() #8
  %1070 = load i32, ptr %1069, align 4, !tbaa !5
  %1071 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1058, ptr noundef @.str.2, i32 noundef %1059, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 76, ptr noundef %1062, ptr noundef %1065, ptr noundef %1068, i32 noundef %1070) #7
  br label %1089

1072:                                             ; preds = %1050, %1043
  %1073 = load i32, ptr %24, align 4, !tbaa !5
  %1074 = call ptr @__errno_location() #8
  store i32 %1073, ptr %1074, align 4, !tbaa !5
  %1075 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1076 = load i32, ptr @test_count, align 4, !tbaa !5
  %1077 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1078 = load i32, ptr %1077, align 4, !tbaa !5
  %1079 = call ptr @s2n_strerror(i32 noundef %1078, ptr noundef @.str.4)
  %1080 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1081 = load i32, ptr %1080, align 4, !tbaa !5
  %1082 = call ptr @s2n_strerror_debug(i32 noundef %1081, ptr noundef @.str.4)
  %1083 = call ptr @__errno_location() #8
  %1084 = load i32, ptr %1083, align 4, !tbaa !5
  %1085 = call ptr @strerror(i32 noundef %1084) #7
  %1086 = call ptr @__errno_location() #8
  %1087 = load i32, ptr %1086, align 4, !tbaa !5
  %1088 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1075, ptr noundef @.str.5, i32 noundef %1076, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 76, ptr noundef %1079, ptr noundef %1082, ptr noundef %1085, i32 noundef %1087) #7
  br label %1089

1089:                                             ; preds = %1072, %1055
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %1090

1090:                                             ; preds = %1089
  br label %1091

1091:                                             ; preds = %1090
  call void @exit(i32 noundef 1) #9
  unreachable

1092:                                             ; No predecessors!
  br label %1093

1093:                                             ; preds = %1092
  br label %1094

1094:                                             ; preds = %1093, %1035
  br label %1095

1095:                                             ; preds = %1094
  br label %1096

1096:                                             ; preds = %1095
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %1097

1097:                                             ; preds = %1096
  br label %1098

1098:                                             ; preds = %1097
  %1099 = call i32 @s2n_cleanup()
  %1100 = icmp eq i32 %1099, -1
  br i1 %1100, label %1101, label %1152

1101:                                             ; preds = %1098
  br label %1102

1102:                                             ; preds = %1101
  br label %1103

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

1110:                                             ; preds = %1103
  %1111 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1112 = call i32 @fileno(ptr noundef %1111) #7
  %1113 = call i32 @isatty(i32 noundef %1112) #7
  %1114 = icmp ne i32 %1113, 0
  br i1 %1114, label %1115, label %1132

1115:                                             ; preds = %1110
  %1116 = load i32, ptr %25, align 4, !tbaa !5
  %1117 = call ptr @__errno_location() #8
  store i32 %1116, ptr %1117, align 4, !tbaa !5
  %1118 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1119 = load i32, ptr @test_count, align 4, !tbaa !5
  %1120 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1121 = load i32, ptr %1120, align 4, !tbaa !5
  %1122 = call ptr @s2n_strerror(i32 noundef %1121, ptr noundef @.str.4)
  %1123 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1124 = load i32, ptr %1123, align 4, !tbaa !5
  %1125 = call ptr @s2n_strerror_debug(i32 noundef %1124, ptr noundef @.str.4)
  %1126 = call ptr @__errno_location() #8
  %1127 = load i32, ptr %1126, align 4, !tbaa !5
  %1128 = call ptr @strerror(i32 noundef %1127) #7
  %1129 = call ptr @__errno_location() #8
  %1130 = load i32, ptr %1129, align 4, !tbaa !5
  %1131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1118, ptr noundef @.str.2, i32 noundef %1119, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 79, ptr noundef %1122, ptr noundef %1125, ptr noundef %1128, i32 noundef %1130) #7
  br label %1149

1132:                                             ; preds = %1110, %1103
  %1133 = load i32, ptr %25, align 4, !tbaa !5
  %1134 = call ptr @__errno_location() #8
  store i32 %1133, ptr %1134, align 4, !tbaa !5
  %1135 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1136 = load i32, ptr @test_count, align 4, !tbaa !5
  %1137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1138 = load i32, ptr %1137, align 4, !tbaa !5
  %1139 = call ptr @s2n_strerror(i32 noundef %1138, ptr noundef @.str.4)
  %1140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1141 = load i32, ptr %1140, align 4, !tbaa !5
  %1142 = call ptr @s2n_strerror_debug(i32 noundef %1141, ptr noundef @.str.4)
  %1143 = call ptr @__errno_location() #8
  %1144 = load i32, ptr %1143, align 4, !tbaa !5
  %1145 = call ptr @strerror(i32 noundef %1144) #7
  %1146 = call ptr @__errno_location() #8
  %1147 = load i32, ptr %1146, align 4, !tbaa !5
  %1148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1135, ptr noundef @.str.5, i32 noundef %1136, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 79, ptr noundef %1139, ptr noundef %1142, ptr noundef %1145, i32 noundef %1147) #7
  br label %1149

1149:                                             ; preds = %1132, %1115
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %1150

1150:                                             ; preds = %1149
  call void @exit(i32 noundef 1) #9
  unreachable

1151:                                             ; No predecessors!
  br label %1152

1152:                                             ; preds = %1151, %1098
  br label %1153

1153:                                             ; preds = %1152
  br label %1154

1154:                                             ; preds = %1153
  br label %1155

1155:                                             ; preds = %1154
  %1156 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1157 = icmp eq i32 %1156, -1
  br i1 %1157, label %1158, label %1209

1158:                                             ; preds = %1155
  br label %1159

1159:                                             ; preds = %1158
  br label %1160

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

1167:                                             ; preds = %1160
  %1168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1169 = call i32 @fileno(ptr noundef %1168) #7
  %1170 = call i32 @isatty(i32 noundef %1169) #7
  %1171 = icmp ne i32 %1170, 0
  br i1 %1171, label %1172, label %1189

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

1189:                                             ; preds = %1167, %1160
  %1190 = load i32, ptr %26, align 4, !tbaa !5
  %1191 = call ptr @__errno_location() #8
  store i32 %1190, ptr %1191, align 4, !tbaa !5
  %1192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1193 = load i32, ptr @test_count, align 4, !tbaa !5
  %1194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  %1196 = call ptr @s2n_strerror(i32 noundef %1195, ptr noundef @.str.4)
  %1197 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1198 = load i32, ptr %1197, align 4, !tbaa !5
  %1199 = call ptr @s2n_strerror_debug(i32 noundef %1198, ptr noundef @.str.4)
  %1200 = call ptr @__errno_location() #8
  %1201 = load i32, ptr %1200, align 4, !tbaa !5
  %1202 = call ptr @strerror(i32 noundef %1201) #7
  %1203 = call ptr @__errno_location() #8
  %1204 = load i32, ptr %1203, align 4, !tbaa !5
  %1205 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1192, ptr noundef @.str.5, i32 noundef %1193, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 79, ptr noundef %1196, ptr noundef %1199, ptr noundef %1202, i32 noundef %1204) #7
  br label %1206

1206:                                             ; preds = %1189, %1172
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %1207

1207:                                             ; preds = %1206
  call void @exit(i32 noundef 1) #9
  unreachable

1208:                                             ; No predecessors!
  br label %1209

1209:                                             ; preds = %1208, %1155
  br label %1210

1210:                                             ; preds = %1209
  %1211 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1212 = trunc i8 %1211 to i1
  br i1 %1212, label %1213, label %1229

1213:                                             ; preds = %1210
  %1214 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1215 = call i32 @fileno(ptr noundef %1214) #7
  %1216 = call i32 @isatty(i32 noundef %1215) #7
  %1217 = icmp ne i32 %1216, 0
  br i1 %1217, label %1218, label %1229

1218:                                             ; preds = %1213
  %1219 = load i32, ptr @test_count, align 4, !tbaa !5
  %1220 = icmp ne i32 %1219, 0
  br i1 %1220, label %1221, label %1225

1221:                                             ; preds = %1218
  %1222 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1223 = load i32, ptr @test_count, align 4, !tbaa !5
  %1224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1222, ptr noundef @.str.19, i32 noundef %1223) #7
  br label %1228

1225:                                             ; preds = %1218
  %1226 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1227 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1226, ptr noundef @.str.20) #7
  br label %1228

1228:                                             ; preds = %1225, %1221
  br label %1240

1229:                                             ; preds = %1213, %1210
  %1230 = load i32, ptr @test_count, align 4, !tbaa !5
  %1231 = icmp ne i32 %1230, 0
  br i1 %1231, label %1232, label %1236

1232:                                             ; preds = %1229
  %1233 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1234 = load i32, ptr @test_count, align 4, !tbaa !5
  %1235 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1233, ptr noundef @.str.21, i32 noundef %1234) #7
  br label %1239

1236:                                             ; preds = %1229
  %1237 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1238 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1237, ptr noundef @.str.22) #7
  br label %1239

1239:                                             ; preds = %1236, %1232
  br label %1240

1240:                                             ; preds = %1239, %1228
  store i32 0, ptr %3, align 4
  br label %1242

1241:                                             ; No predecessors!
  br label %1242

1242:                                             ; preds = %1241, %1240
  %1243 = load i32, ptr %3, align 4
  ret i32 %1243
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

declare i32 @s2n_disable_tls13_in_test(...) #2

declare ptr @s2n_connection_new(i32 noundef) #2

declare i32 @s2n_connection_free(ptr noundef) #2

declare i32 @s2n_cleanup() #2

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


; 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 }

@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 [96 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [52 x i8], align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@.str.4 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [72 x i8], align 1
@s2n_server_server_name_extension = external local_unnamed_addr constant %struct.s2n_extension_type, align 8
@.str.10 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [36 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 {
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %3 = load ptr, ptr @stdout, align 8, !tbaa !9
  %4 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #7
  %5 = load ptr, ptr @stdout, align 8, !tbaa !9
  %6 = tail call i32 @fflush(ptr noundef %5)
  %7 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #7
  %8 = icmp eq i32 %7, -1
  br i1 %8, label %9, label %33

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

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

20:                                               ; preds = %16, %9
  br label %21

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

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

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

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

49:                                               ; preds = %45, %38
  br label %50

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

62:                                               ; preds = %33
  %63 = tail call i32 @s2n_init() #7
  %64 = icmp eq i32 %63, -1
  br i1 %64, label %65, label %89

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

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

76:                                               ; preds = %72, %65
  br label %77

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

89:                                               ; preds = %62
  %90 = load i32, ptr @test_count, align 4, !tbaa !5
  %91 = add nsw i32 %90, 1
  store i32 %91, ptr @test_count, align 4, !tbaa !5
  %92 = tail call i32 (...) @s2n_disable_tls13_in_test() #7
  %93 = icmp eq i32 %92, -1
  br i1 %93, label %94, label %118

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

101:                                              ; preds = %94
  %102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %103 = tail call i32 @fileno(ptr noundef %102) #7
  %104 = tail call i32 @isatty(i32 noundef %103) #7
  %.not78 = icmp eq i32 %104, 0
  br i1 %.not78, label %105, label %106

105:                                              ; preds = %101, %94
  br label %106

106:                                              ; preds = %101, %105
  %.str.5.sink114 = phi ptr [ @.str.5, %105 ], [ @.str.2, %101 ]
  store i32 %96, ptr %95, align 4, !tbaa !5
  %107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %108 = load i32, ptr @test_count, align 4, !tbaa !5
  %109 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = tail call ptr @s2n_strerror(i32 noundef %110, ptr noundef nonnull @.str.4) #7
  %112 = load i32, ptr %109, align 4, !tbaa !5
  %113 = tail call ptr @s2n_strerror_debug(i32 noundef %112, ptr noundef nonnull @.str.4) #7
  %114 = load i32, ptr %95, align 4, !tbaa !5
  %115 = tail call ptr @strerror(i32 noundef %114) #7
  %116 = load i32, ptr %95, align 4, !tbaa !5
  %117 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %107, ptr noundef nonnull %.str.5.sink114, i32 noundef %108, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 27, ptr noundef %111, ptr noundef %113, ptr noundef %115, i32 noundef %116) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

118:                                              ; preds = %89
  %119 = load i32, ptr @test_count, align 4, !tbaa !5
  %120 = add nsw i32 %119, 1
  store i32 %120, ptr @test_count, align 4, !tbaa !5
  %121 = tail call ptr @s2n_connection_new(i32 noundef 1) #7
  %122 = icmp eq ptr %121, null
  br i1 %122, label %123, label %147

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

130:                                              ; preds = %123
  %131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %132 = tail call i32 @fileno(ptr noundef %131) #7
  %133 = tail call i32 @isatty(i32 noundef %132) #7
  %.not77 = icmp eq i32 %133, 0
  br i1 %.not77, label %134, label %135

134:                                              ; preds = %130, %123
  br label %135

135:                                              ; preds = %130, %134
  %.str.5.sink125 = phi ptr [ @.str.5, %134 ], [ @.str.2, %130 ]
  store i32 %125, ptr %124, align 4, !tbaa !5
  %136 = load ptr, ptr @stderr, align 8, !tbaa !9
  %137 = load i32, ptr @test_count, align 4, !tbaa !5
  %138 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %139 = load i32, ptr %138, align 4, !tbaa !5
  %140 = tail call ptr @s2n_strerror(i32 noundef %139, ptr noundef nonnull @.str.4) #7
  %141 = load i32, ptr %138, align 4, !tbaa !5
  %142 = tail call ptr @s2n_strerror_debug(i32 noundef %141, ptr noundef nonnull @.str.4) #7
  %143 = load i32, ptr %124, align 4, !tbaa !5
  %144 = tail call ptr @strerror(i32 noundef %143) #7
  %145 = load i32, ptr %124, align 4, !tbaa !5
  %146 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %136, ptr noundef nonnull %.str.5.sink125, i32 noundef %137, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 32, ptr noundef %140, ptr noundef %142, ptr noundef %144, i32 noundef %145) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

147:                                              ; preds = %118
  %148 = load i32, ptr @test_count, align 4, !tbaa !5
  %149 = add nsw i32 %148, 1
  store i32 %149, ptr @test_count, align 4, !tbaa !5
  %150 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_server_server_name_extension, i64 24), align 8, !tbaa !15
  %151 = tail call zeroext i1 %150(ptr noundef nonnull %121) #7
  br i1 %151, label %152, label %176

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

159:                                              ; preds = %152
  %160 = load ptr, ptr @stderr, align 8, !tbaa !9
  %161 = tail call i32 @fileno(ptr noundef %160) #7
  %162 = tail call i32 @isatty(i32 noundef %161) #7
  %.not76 = icmp eq i32 %162, 0
  br i1 %.not76, label %163, label %164

163:                                              ; preds = %159, %152
  br label %164

164:                                              ; preds = %159, %163
  %.str.5.sink136 = phi ptr [ @.str.5, %163 ], [ @.str.2, %159 ]
  store i32 %154, ptr %153, align 4, !tbaa !5
  %165 = load ptr, ptr @stderr, align 8, !tbaa !9
  %166 = load i32, ptr @test_count, align 4, !tbaa !5
  %167 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %168 = load i32, ptr %167, align 4, !tbaa !5
  %169 = tail call ptr @s2n_strerror(i32 noundef %168, ptr noundef nonnull @.str.4) #7
  %170 = load i32, ptr %167, align 4, !tbaa !5
  %171 = tail call ptr @s2n_strerror_debug(i32 noundef %170, ptr noundef nonnull @.str.4) #7
  %172 = load i32, ptr %153, align 4, !tbaa !5
  %173 = tail call ptr @strerror(i32 noundef %172) #7
  %174 = load i32, ptr %153, align 4, !tbaa !5
  %175 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %165, ptr noundef nonnull %.str.5.sink136, i32 noundef %166, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 35, ptr noundef %169, ptr noundef %171, ptr noundef %173, i32 noundef %174) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

176:                                              ; preds = %147
  %177 = load i32, ptr %121, align 8
  %178 = and i32 %177, -65
  store i32 %178, ptr %121, align 8
  %179 = getelementptr inbounds i8, ptr %121, i64 2172
  store i32 1, ptr %179, align 4, !tbaa !18
  %180 = load i32, ptr @test_count, align 4, !tbaa !5
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr @test_count, align 4, !tbaa !5
  %182 = tail call zeroext i1 %150(ptr noundef nonnull %121) #7
  br i1 %182, label %183, label %207

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

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

194:                                              ; preds = %190, %183
  br label %195

195:                                              ; preds = %190, %194
  %.str.5.sink147 = phi ptr [ @.str.5, %194 ], [ @.str.2, %190 ]
  store i32 %185, ptr %184, align 4, !tbaa !5
  %196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %197 = load i32, ptr @test_count, align 4, !tbaa !5
  %198 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %199 = load i32, ptr %198, align 4, !tbaa !5
  %200 = tail call ptr @s2n_strerror(i32 noundef %199, ptr noundef nonnull @.str.4) #7
  %201 = load i32, ptr %198, align 4, !tbaa !5
  %202 = tail call ptr @s2n_strerror_debug(i32 noundef %201, ptr noundef nonnull @.str.4) #7
  %203 = load i32, ptr %184, align 4, !tbaa !5
  %204 = tail call ptr @strerror(i32 noundef %203) #7
  %205 = load i32, ptr %184, align 4, !tbaa !5
  %206 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %196, ptr noundef nonnull %.str.5.sink147, i32 noundef %197, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 40, ptr noundef %200, ptr noundef %202, ptr noundef %204, i32 noundef %205) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

207:                                              ; preds = %176
  %208 = load i32, ptr %121, align 8
  %209 = or i32 %208, 64
  store i32 %209, ptr %121, align 8
  store i32 1, ptr %179, align 4, !tbaa !18
  %210 = load i32, ptr @test_count, align 4, !tbaa !5
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr @test_count, align 4, !tbaa !5
  %212 = tail call zeroext i1 %150(ptr noundef nonnull %121) #7
  br i1 %212, label %213, label %237

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

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

224:                                              ; preds = %220, %213
  br label %225

225:                                              ; preds = %220, %224
  %.str.5.sink158 = phi ptr [ @.str.5, %224 ], [ @.str.2, %220 ]
  store i32 %215, ptr %214, align 4, !tbaa !5
  %226 = load ptr, ptr @stderr, align 8, !tbaa !9
  %227 = load i32, ptr @test_count, align 4, !tbaa !5
  %228 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = tail call ptr @s2n_strerror(i32 noundef %229, ptr noundef nonnull @.str.4) #7
  %231 = load i32, ptr %228, align 4, !tbaa !5
  %232 = tail call ptr @s2n_strerror_debug(i32 noundef %231, ptr noundef nonnull @.str.4) #7
  %233 = load i32, ptr %214, align 4, !tbaa !5
  %234 = tail call ptr @strerror(i32 noundef %233) #7
  %235 = load i32, ptr %214, align 4, !tbaa !5
  %236 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %226, ptr noundef nonnull %.str.5.sink158, i32 noundef %227, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 45, ptr noundef %230, ptr noundef %232, ptr noundef %234, i32 noundef %235) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

237:                                              ; preds = %207
  %238 = load i32, ptr %121, align 8
  %239 = and i32 %238, -65
  store i32 %239, ptr %121, align 8
  store i32 3, ptr %179, align 4, !tbaa !18
  %240 = load i32, ptr @test_count, align 4, !tbaa !5
  %241 = add nsw i32 %240, 1
  store i32 %241, ptr @test_count, align 4, !tbaa !5
  %242 = tail call zeroext i1 %150(ptr noundef nonnull %121) #7
  br i1 %242, label %243, label %267

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

250:                                              ; preds = %243
  %251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %252 = tail call i32 @fileno(ptr noundef %251) #7
  %253 = tail call i32 @isatty(i32 noundef %252) #7
  %.not73 = icmp eq i32 %253, 0
  br i1 %.not73, label %254, label %255

254:                                              ; preds = %250, %243
  br label %255

255:                                              ; preds = %250, %254
  %.str.5.sink169 = phi ptr [ @.str.5, %254 ], [ @.str.2, %250 ]
  store i32 %245, ptr %244, align 4, !tbaa !5
  %256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %257 = load i32, ptr @test_count, align 4, !tbaa !5
  %258 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %259 = load i32, ptr %258, align 4, !tbaa !5
  %260 = tail call ptr @s2n_strerror(i32 noundef %259, ptr noundef nonnull @.str.4) #7
  %261 = load i32, ptr %258, align 4, !tbaa !5
  %262 = tail call ptr @s2n_strerror_debug(i32 noundef %261, ptr noundef nonnull @.str.4) #7
  %263 = load i32, ptr %244, align 4, !tbaa !5
  %264 = tail call ptr @strerror(i32 noundef %263) #7
  %265 = load i32, ptr %244, align 4, !tbaa !5
  %266 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %256, ptr noundef nonnull %.str.5.sink169, i32 noundef %257, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 50, ptr noundef %260, ptr noundef %262, ptr noundef %264, i32 noundef %265) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

267:                                              ; preds = %237
  %268 = load i32, ptr %121, align 8
  %269 = or i32 %268, 64
  store i32 %269, ptr %121, align 8
  store i32 3, ptr %179, align 4, !tbaa !18
  %270 = load i32, ptr @test_count, align 4, !tbaa !5
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr @test_count, align 4, !tbaa !5
  %272 = tail call zeroext i1 %150(ptr noundef nonnull %121) #7
  br i1 %272, label %297, label %273

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

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

284:                                              ; preds = %280, %273
  br label %285

285:                                              ; preds = %280, %284
  %.str.5.sink180 = phi ptr [ @.str.5, %284 ], [ @.str.2, %280 ]
  store i32 %275, ptr %274, align 4, !tbaa !5
  %286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %287 = load i32, ptr @test_count, align 4, !tbaa !5
  %288 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %289 = load i32, ptr %288, align 4, !tbaa !5
  %290 = tail call ptr @s2n_strerror(i32 noundef %289, ptr noundef nonnull @.str.4) #7
  %291 = load i32, ptr %288, align 4, !tbaa !5
  %292 = tail call ptr @s2n_strerror_debug(i32 noundef %291, ptr noundef nonnull @.str.4) #7
  %293 = load i32, ptr %274, align 4, !tbaa !5
  %294 = tail call ptr @strerror(i32 noundef %293) #7
  %295 = load i32, ptr %274, align 4, !tbaa !5
  %296 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %286, ptr noundef nonnull %.str.5.sink180, i32 noundef %287, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.1, i32 noundef 55, ptr noundef %290, ptr noundef %292, ptr noundef %294, i32 noundef %295) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

297:                                              ; preds = %267
  %298 = load i32, ptr @test_count, align 4, !tbaa !5
  %299 = add nsw i32 %298, 1
  store i32 %299, ptr @test_count, align 4, !tbaa !5
  %300 = tail call i32 @s2n_connection_free(ptr noundef nonnull %121) #7
  %301 = icmp eq i32 %300, -1
  br i1 %301, label %302, label %326

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

309:                                              ; preds = %302
  %310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %311 = tail call i32 @fileno(ptr noundef %310) #7
  %312 = tail call i32 @isatty(i32 noundef %311) #7
  %.not72 = icmp eq i32 %312, 0
  br i1 %.not72, label %313, label %314

313:                                              ; preds = %309, %302
  br label %314

314:                                              ; preds = %309, %313
  %.str.5.sink191 = phi ptr [ @.str.5, %313 ], [ @.str.2, %309 ]
  store i32 %304, ptr %303, align 4, !tbaa !5
  %315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %316 = load i32, ptr @test_count, align 4, !tbaa !5
  %317 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %318 = load i32, ptr %317, align 4, !tbaa !5
  %319 = tail call ptr @s2n_strerror(i32 noundef %318, ptr noundef nonnull @.str.4) #7
  %320 = load i32, ptr %317, align 4, !tbaa !5
  %321 = tail call ptr @s2n_strerror_debug(i32 noundef %320, ptr noundef nonnull @.str.4) #7
  %322 = load i32, ptr %303, align 4, !tbaa !5
  %323 = tail call ptr @strerror(i32 noundef %322) #7
  %324 = load i32, ptr %303, align 4, !tbaa !5
  %325 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %315, ptr noundef nonnull %.str.5.sink191, i32 noundef %316, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 57, ptr noundef %319, ptr noundef %321, ptr noundef %323, i32 noundef %324) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

326:                                              ; preds = %297
  %327 = load i32, ptr @test_count, align 4, !tbaa !5
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr @test_count, align 4, !tbaa !5
  %329 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_server_server_name_extension, i64 8), align 8, !tbaa !44
  %330 = tail call i32 %329(ptr noundef null, ptr noundef null) #7
  %331 = icmp eq i32 %330, -1
  br i1 %331, label %332, label %356

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

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

343:                                              ; preds = %339, %332
  br label %344

344:                                              ; preds = %339, %343
  %.str.5.sink202 = phi ptr [ @.str.5, %343 ], [ @.str.2, %339 ]
  store i32 %334, ptr %333, align 4, !tbaa !5
  %345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %346 = load i32, ptr @test_count, align 4, !tbaa !5
  %347 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %348 = load i32, ptr %347, align 4, !tbaa !5
  %349 = tail call ptr @s2n_strerror(i32 noundef %348, ptr noundef nonnull @.str.4) #7
  %350 = load i32, ptr %347, align 4, !tbaa !5
  %351 = tail call ptr @s2n_strerror_debug(i32 noundef %350, ptr noundef nonnull @.str.4) #7
  %352 = load i32, ptr %333, align 4, !tbaa !5
  %353 = tail call ptr @strerror(i32 noundef %352) #7
  %354 = load i32, ptr %333, align 4, !tbaa !5
  %355 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %345, ptr noundef nonnull %.str.5.sink202, i32 noundef %346, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.1, i32 noundef 63, ptr noundef %349, ptr noundef %351, ptr noundef %353, i32 noundef %354) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

356:                                              ; preds = %326
  %357 = load i32, ptr @test_count, align 4, !tbaa !5
  %358 = add nsw i32 %357, 1
  store i32 %358, ptr @test_count, align 4, !tbaa !5
  %359 = tail call ptr @s2n_connection_new(i32 noundef 1) #7
  %360 = icmp eq ptr %359, null
  br i1 %360, label %361, label %385

361:                                              ; preds = %356
  %362 = tail call ptr @__errno_location() #8
  %363 = load i32, ptr %362, align 4, !tbaa !5
  %364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %365 = tail call i32 @s2n_print_stacktrace(ptr noundef %364) #7
  %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 = tail call i32 @fileno(ptr noundef %369) #7
  %371 = tail call i32 @isatty(i32 noundef %370) #7
  %.not70 = icmp eq i32 %371, 0
  br i1 %.not70, label %372, label %373

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

373:                                              ; preds = %368, %372
  %.str.5.sink213 = 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 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %377 = load i32, ptr %376, align 4, !tbaa !5
  %378 = tail call ptr @s2n_strerror(i32 noundef %377, ptr noundef nonnull @.str.4) #7
  %379 = load i32, ptr %376, align 4, !tbaa !5
  %380 = tail call ptr @s2n_strerror_debug(i32 noundef %379, ptr noundef nonnull @.str.4) #7
  %381 = load i32, ptr %362, align 4, !tbaa !5
  %382 = tail call ptr @strerror(i32 noundef %381) #7
  %383 = load i32, ptr %362, align 4, !tbaa !5
  %384 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %374, ptr noundef nonnull %.str.5.sink213, i32 noundef %375, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 69, ptr noundef %378, ptr noundef %380, ptr noundef %382, i32 noundef %383) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

385:                                              ; preds = %356
  %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 i32, ptr %359, align 8
  %389 = and i32 %388, 64
  %.not59 = icmp eq i32 %389, 0
  br i1 %.not59, label %414, label %390

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

397:                                              ; preds = %390
  %398 = load ptr, ptr @stderr, align 8, !tbaa !9
  %399 = tail call i32 @fileno(ptr noundef %398) #7
  %400 = tail call i32 @isatty(i32 noundef %399) #7
  %.not69 = icmp eq i32 %400, 0
  br i1 %.not69, label %401, label %402

401:                                              ; preds = %397, %390
  br label %402

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

414:                                              ; preds = %385
  %415 = add nsw i32 %386, 2
  store i32 %415, ptr @test_count, align 4, !tbaa !5
  %416 = load ptr, ptr getelementptr inbounds (i8, ptr @s2n_server_server_name_extension, i64 16), align 8, !tbaa !45
  %417 = tail call i32 %416(ptr noundef nonnull %359, ptr noundef null) #7
  %418 = icmp eq i32 %417, -1
  br i1 %418, label %419, label %443

419:                                              ; preds = %414
  %420 = tail call ptr @__errno_location() #8
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = load ptr, ptr @stderr, align 8, !tbaa !9
  %423 = tail call i32 @s2n_print_stacktrace(ptr noundef %422) #7
  %424 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %425 = trunc nuw i8 %424 to i1
  br i1 %425, label %426, label %430

426:                                              ; preds = %419
  %427 = load ptr, ptr @stderr, align 8, !tbaa !9
  %428 = tail call i32 @fileno(ptr noundef %427) #7
  %429 = tail call i32 @isatty(i32 noundef %428) #7
  %.not68 = icmp eq i32 %429, 0
  br i1 %.not68, label %430, label %431

430:                                              ; preds = %426, %419
  br label %431

431:                                              ; preds = %426, %430
  %.str.5.sink235 = phi ptr [ @.str.5, %430 ], [ @.str.2, %426 ]
  store i32 %421, ptr %420, align 4, !tbaa !5
  %432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %433 = load i32, ptr @test_count, align 4, !tbaa !5
  %434 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %435 = load i32, ptr %434, align 4, !tbaa !5
  %436 = tail call ptr @s2n_strerror(i32 noundef %435, ptr noundef nonnull @.str.4) #7
  %437 = load i32, ptr %434, align 4, !tbaa !5
  %438 = tail call ptr @s2n_strerror_debug(i32 noundef %437, ptr noundef nonnull @.str.4) #7
  %439 = load i32, ptr %420, align 4, !tbaa !5
  %440 = tail call ptr @strerror(i32 noundef %439) #7
  %441 = load i32, ptr %420, align 4, !tbaa !5
  %442 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %432, ptr noundef nonnull %.str.5.sink235, i32 noundef %433, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.1, i32 noundef 73, ptr noundef %436, ptr noundef %438, ptr noundef %440, i32 noundef %441) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

443:                                              ; preds = %414
  %444 = load i32, ptr @test_count, align 4, !tbaa !5
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr @test_count, align 4, !tbaa !5
  %446 = load i32, ptr %359, align 8
  %447 = and i32 %446, 64
  %.not60 = icmp eq i32 %447, 0
  br i1 %.not60, label %448, label %472

448:                                              ; preds = %443
  %449 = tail call ptr @__errno_location() #8
  %450 = load i32, ptr %449, align 4, !tbaa !5
  %451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %452 = tail call i32 @s2n_print_stacktrace(ptr noundef %451) #7
  %453 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %454 = trunc nuw i8 %453 to i1
  br i1 %454, label %455, label %459

455:                                              ; preds = %448
  %456 = load ptr, ptr @stderr, align 8, !tbaa !9
  %457 = tail call i32 @fileno(ptr noundef %456) #7
  %458 = tail call i32 @isatty(i32 noundef %457) #7
  %.not61 = icmp eq i32 %458, 0
  br i1 %.not61, label %459, label %460

459:                                              ; preds = %455, %448
  br label %460

460:                                              ; preds = %455, %459
  %.str.5.sink246 = phi ptr [ @.str.5, %459 ], [ @.str.2, %455 ]
  store i32 %450, ptr %449, align 4, !tbaa !5
  %461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %462 = load i32, ptr @test_count, align 4, !tbaa !5
  %463 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %464 = load i32, ptr %463, align 4, !tbaa !5
  %465 = tail call ptr @s2n_strerror(i32 noundef %464, ptr noundef nonnull @.str.4) #7
  %466 = load i32, ptr %463, align 4, !tbaa !5
  %467 = tail call ptr @s2n_strerror_debug(i32 noundef %466, ptr noundef nonnull @.str.4) #7
  %468 = load i32, ptr %449, align 4, !tbaa !5
  %469 = tail call ptr @strerror(i32 noundef %468) #7
  %470 = load i32, ptr %449, align 4, !tbaa !5
  %471 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %461, ptr noundef nonnull %.str.5.sink246, i32 noundef %462, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 74, ptr noundef %465, ptr noundef %467, ptr noundef %469, i32 noundef %470) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

472:                                              ; preds = %443
  %473 = add nsw i32 %444, 2
  store i32 %473, ptr @test_count, align 4, !tbaa !5
  %474 = tail call i32 @s2n_connection_free(ptr noundef nonnull %359) #7
  %475 = icmp eq i32 %474, -1
  br i1 %475, label %476, label %500

476:                                              ; preds = %472
  %477 = tail call ptr @__errno_location() #8
  %478 = load i32, ptr %477, align 4, !tbaa !5
  %479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %480 = tail call i32 @s2n_print_stacktrace(ptr noundef %479) #7
  %481 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %482 = trunc nuw i8 %481 to i1
  br i1 %482, label %483, label %487

483:                                              ; preds = %476
  %484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %485 = tail call i32 @fileno(ptr noundef %484) #7
  %486 = tail call i32 @isatty(i32 noundef %485) #7
  %.not67 = icmp eq i32 %486, 0
  br i1 %.not67, label %487, label %488

487:                                              ; preds = %483, %476
  br label %488

488:                                              ; preds = %483, %487
  %.str.5.sink257 = phi ptr [ @.str.5, %487 ], [ @.str.2, %483 ]
  store i32 %478, ptr %477, align 4, !tbaa !5
  %489 = load ptr, ptr @stderr, align 8, !tbaa !9
  %490 = load i32, ptr @test_count, align 4, !tbaa !5
  %491 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %492 = load i32, ptr %491, align 4, !tbaa !5
  %493 = tail call ptr @s2n_strerror(i32 noundef %492, ptr noundef nonnull @.str.4) #7
  %494 = load i32, ptr %491, align 4, !tbaa !5
  %495 = tail call ptr @s2n_strerror_debug(i32 noundef %494, ptr noundef nonnull @.str.4) #7
  %496 = load i32, ptr %477, align 4, !tbaa !5
  %497 = tail call ptr @strerror(i32 noundef %496) #7
  %498 = load i32, ptr %477, align 4, !tbaa !5
  %499 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %489, ptr noundef nonnull %.str.5.sink257, i32 noundef %490, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.1, i32 noundef 76, ptr noundef %493, ptr noundef %495, ptr noundef %497, i32 noundef %498) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

500:                                              ; preds = %472
  %501 = tail call i32 @s2n_cleanup() #7
  %502 = icmp eq i32 %501, -1
  br i1 %502, label %503, label %527

503:                                              ; preds = %500
  %504 = tail call ptr @__errno_location() #8
  %505 = load i32, ptr %504, align 4, !tbaa !5
  %506 = load ptr, ptr @stderr, align 8, !tbaa !9
  %507 = tail call i32 @s2n_print_stacktrace(ptr noundef %506) #7
  %508 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %509 = trunc nuw i8 %508 to i1
  br i1 %509, label %510, label %514

510:                                              ; preds = %503
  %511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %512 = tail call i32 @fileno(ptr noundef %511) #7
  %513 = tail call i32 @isatty(i32 noundef %512) #7
  %.not66 = icmp eq i32 %513, 0
  br i1 %.not66, label %514, label %515

514:                                              ; preds = %510, %503
  br label %515

515:                                              ; preds = %510, %514
  %.str.5.sink268 = phi ptr [ @.str.5, %514 ], [ @.str.2, %510 ]
  store i32 %505, ptr %504, align 4, !tbaa !5
  %516 = load ptr, ptr @stderr, align 8, !tbaa !9
  %517 = load i32, ptr @test_count, align 4, !tbaa !5
  %518 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %519 = load i32, ptr %518, align 4, !tbaa !5
  %520 = tail call ptr @s2n_strerror(i32 noundef %519, ptr noundef nonnull @.str.4) #7
  %521 = load i32, ptr %518, align 4, !tbaa !5
  %522 = tail call ptr @s2n_strerror_debug(i32 noundef %521, ptr noundef nonnull @.str.4) #7
  %523 = load i32, ptr %504, align 4, !tbaa !5
  %524 = tail call ptr @strerror(i32 noundef %523) #7
  %525 = load i32, ptr %504, align 4, !tbaa !5
  %526 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %516, ptr noundef nonnull %.str.5.sink268, i32 noundef %517, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 79, ptr noundef %520, ptr noundef %522, ptr noundef %524, i32 noundef %525) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

527:                                              ; preds = %500
  %528 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #7
  %529 = icmp eq i32 %528, -1
  br i1 %529, label %530, label %554

530:                                              ; preds = %527
  %531 = tail call ptr @__errno_location() #8
  %532 = load i32, ptr %531, align 4, !tbaa !5
  %533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %534 = tail call i32 @s2n_print_stacktrace(ptr noundef %533) #7
  %535 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %536 = trunc nuw i8 %535 to i1
  br i1 %536, label %537, label %541

537:                                              ; preds = %530
  %538 = load ptr, ptr @stderr, align 8, !tbaa !9
  %539 = tail call i32 @fileno(ptr noundef %538) #7
  %540 = tail call i32 @isatty(i32 noundef %539) #7
  %.not65 = icmp eq i32 %540, 0
  br i1 %.not65, label %541, label %542

541:                                              ; preds = %537, %530
  br label %542

542:                                              ; preds = %537, %541
  %.str.5.sink279 = phi ptr [ @.str.5, %541 ], [ @.str.2, %537 ]
  store i32 %532, ptr %531, align 4, !tbaa !5
  %543 = load ptr, ptr @stderr, align 8, !tbaa !9
  %544 = load i32, ptr @test_count, align 4, !tbaa !5
  %545 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %546 = load i32, ptr %545, align 4, !tbaa !5
  %547 = tail call ptr @s2n_strerror(i32 noundef %546, ptr noundef nonnull @.str.4) #7
  %548 = load i32, ptr %545, align 4, !tbaa !5
  %549 = tail call ptr @s2n_strerror_debug(i32 noundef %548, ptr noundef nonnull @.str.4) #7
  %550 = load i32, ptr %531, align 4, !tbaa !5
  %551 = tail call ptr @strerror(i32 noundef %550) #7
  %552 = load i32, ptr %531, align 4, !tbaa !5
  %553 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %543, ptr noundef nonnull %.str.5.sink279, i32 noundef %544, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 79, ptr noundef %547, ptr noundef %549, ptr noundef %551, i32 noundef %552) #9
  tail call void @exit(i32 noundef 1) #10
  unreachable

554:                                              ; preds = %527
  %555 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %556 = trunc nuw i8 %555 to i1
  br i1 %556, label %557, label %568

557:                                              ; preds = %554
  %558 = load ptr, ptr @stdout, align 8, !tbaa !9
  %559 = tail call i32 @fileno(ptr noundef %558) #7
  %560 = tail call i32 @isatty(i32 noundef %559) #7
  %.not62 = icmp eq i32 %560, 0
  br i1 %.not62, label %568, label %561

561:                                              ; preds = %557
  %562 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not64 = icmp eq i32 %562, 0
  %563 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not64, label %566, label %564

564:                                              ; preds = %561
  %565 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %563, ptr noundef nonnull @.str.19, i32 noundef %562) #7
  br label %575

566:                                              ; preds = %561
  %567 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %563, ptr noundef nonnull @.str.20) #7
  br label %575

568:                                              ; preds = %557, %554
  %569 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not63 = icmp eq i32 %569, 0
  %570 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not63, label %573, label %571

571:                                              ; preds = %568
  %572 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %570, ptr noundef nonnull @.str.21, i32 noundef %569) #7
  br label %575

573:                                              ; preds = %568
  %574 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %570, ptr noundef nonnull @.str.22) #7
  br label %575

575:                                              ; preds = %571, %573, %564, %566
  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 nofree nosync nounwind willreturn memory(none)
declare ptr @__errno_location() local_unnamed_addr #3

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nofree nounwind
declare noundef i32 @fileno(ptr nocapture noundef) local_unnamed_addr #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) #5

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

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


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