; LLVM IR from aws/s2n-tls :: tests/unit (s2n_cbc_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_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_test_io_pair = type { i32, i32 }
%struct.s2n_result = type { i32 }
%struct.s2n_record_algorithm = type { ptr, i32, i32, i64 }
%struct.s2n_cipher = type { i32, %union.anon, i8, ptr, ptr, ptr, ptr, ptr, ptr }
%union.anon = type { %struct.s2n_composite_cipher }
%struct.s2n_composite_cipher = type { i8, i8, i8, 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.0, i32 }
%union.anon.0 = 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 [71 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 [26 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [204 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [155 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [81 x i8], align 1
@cipher_preferences_test_all = external constant %struct.s2n_cipher_preferences, align 8
@security_policy_test_all = external constant %struct.s2n_security_policy, align 8
@.str.21 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.39 = 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 [12000 x i8], align 16
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i32, align 4
  %25 = alloca i8, align 1
  %26 = alloca i64, align 8
  %27 = alloca %struct.s2n_cipher_suite, align 8
  %28 = alloca i8, align 1
  %29 = alloca ptr, align 8
  %30 = alloca %struct.s2n_cipher_preferences, align 8
  %31 = alloca %struct.s2n_security_policy, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %struct.s2n_test_io_pair, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca [2 x i8], align 1
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca %struct.s2n_result, align 4
  %47 = alloca i32, align 4
  %48 = alloca %struct.s2n_result, align 4
  %49 = alloca i32, align 4
  %50 = alloca %struct.s2n_result, align 4
  %51 = alloca %struct.s2n_result, align 4
  %52 = alloca i32, align 4
  %53 = alloca %struct.s2n_result, align 4
  %54 = alloca %struct.s2n_result, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca %struct.s2n_result, align 4
  %58 = alloca %struct.s2n_result, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  br label %59

59:                                               ; preds = %2
  br label %60

60:                                               ; preds = %59
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %61 = load ptr, ptr @stdout, align 8, !tbaa !9
  %62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %61, ptr noundef @.str, ptr noundef @.str.1) #11
  %63 = load ptr, ptr @stdout, align 8, !tbaa !9
  %64 = call i32 @fflush(ptr noundef %63)
  br label %65

65:                                               ; preds = %60
  %66 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %67 = icmp eq i32 %66, -1
  br i1 %67, label %68, label %119

68:                                               ; preds = %65
  br label %69

69:                                               ; preds = %68
  br label %70

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #11
  %71 = call ptr @__errno_location() #12
  %72 = load i32, ptr %71, align 4, !tbaa !5
  store i32 %72, ptr %6, align 4, !tbaa !5
  %73 = load ptr, ptr @stderr, align 8, !tbaa !9
  %74 = call i32 @s2n_print_stacktrace(ptr noundef %73)
  %75 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %76 = trunc i8 %75 to i1
  br i1 %76, label %77, label %99

77:                                               ; preds = %70
  %78 = load ptr, ptr @stderr, align 8, !tbaa !9
  %79 = call i32 @fileno(ptr noundef %78) #11
  %80 = call i32 @isatty(i32 noundef %79) #11
  %81 = icmp ne i32 %80, 0
  br i1 %81, label %82, label %99

82:                                               ; preds = %77
  %83 = load i32, ptr %6, align 4, !tbaa !5
  %84 = call ptr @__errno_location() #12
  store i32 %83, ptr %84, align 4, !tbaa !5
  %85 = load ptr, ptr @stderr, align 8, !tbaa !9
  %86 = load i32, ptr @test_count, align 4, !tbaa !5
  %87 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %88 = load i32, ptr %87, align 4, !tbaa !5
  %89 = call ptr @s2n_strerror(i32 noundef %88, ptr noundef @.str.4)
  %90 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %91 = load i32, ptr %90, align 4, !tbaa !5
  %92 = call ptr @s2n_strerror_debug(i32 noundef %91, ptr noundef @.str.4)
  %93 = call ptr @__errno_location() #12
  %94 = load i32, ptr %93, align 4, !tbaa !5
  %95 = call ptr @strerror(i32 noundef %94) #11
  %96 = call ptr @__errno_location() #12
  %97 = load i32, ptr %96, align 4, !tbaa !5
  %98 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %85, ptr noundef @.str.2, i32 noundef %86, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 21, ptr noundef %89, ptr noundef %92, ptr noundef %95, i32 noundef %97) #11
  br label %116

99:                                               ; preds = %77, %70
  %100 = load i32, ptr %6, align 4, !tbaa !5
  %101 = call ptr @__errno_location() #12
  store i32 %100, ptr %101, align 4, !tbaa !5
  %102 = load ptr, ptr @stderr, align 8, !tbaa !9
  %103 = load i32, ptr @test_count, align 4, !tbaa !5
  %104 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = call ptr @s2n_strerror(i32 noundef %105, ptr noundef @.str.4)
  %107 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %108 = load i32, ptr %107, align 4, !tbaa !5
  %109 = call ptr @s2n_strerror_debug(i32 noundef %108, ptr noundef @.str.4)
  %110 = call ptr @__errno_location() #12
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = call ptr @strerror(i32 noundef %111) #11
  %113 = call ptr @__errno_location() #12
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %102, ptr noundef @.str.5, i32 noundef %103, ptr noundef @.str.3, ptr noundef @.str.1, i32 noundef 21, ptr noundef %106, ptr noundef %109, ptr noundef %112, i32 noundef %114) #11
  br label %116

116:                                              ; preds = %99, %82
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  br label %117

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

118:                                              ; No predecessors!
  br label %119

119:                                              ; preds = %118, %65
  br label %120

120:                                              ; preds = %119
  br label %121

121:                                              ; preds = %120
  %122 = load i32, ptr @test_count, align 4, !tbaa !5
  %123 = add nsw i32 %122, 1
  store i32 %123, ptr @test_count, align 4, !tbaa !5
  %124 = call i32 @s2n_enable_atexit()
  %125 = icmp eq i32 %124, -1
  br i1 %125, label %126, label %177

126:                                              ; preds = %121
  br label %127

127:                                              ; preds = %126
  br label %128

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

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

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

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

174:                                              ; preds = %157, %140
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  br label %175

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

176:                                              ; No predecessors!
  br label %177

177:                                              ; preds = %176, %121
  br label %178

178:                                              ; preds = %177
  br label %179

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179
  %181 = call i32 @s2n_init()
  %182 = icmp eq i32 %181, -1
  br i1 %182, label %183, label %234

183:                                              ; preds = %180
  br label %184

184:                                              ; preds = %183
  br label %185

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

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

197:                                              ; preds = %192
  %198 = load i32, ptr %8, align 4, !tbaa !5
  %199 = call ptr @__errno_location() #12
  store i32 %198, ptr %199, align 4, !tbaa !5
  %200 = load ptr, ptr @stderr, align 8, !tbaa !9
  %201 = load i32, ptr @test_count, align 4, !tbaa !5
  %202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = call ptr @s2n_strerror(i32 noundef %203, ptr noundef @.str.4)
  %205 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %206 = load i32, ptr %205, align 4, !tbaa !5
  %207 = call ptr @s2n_strerror_debug(i32 noundef %206, ptr noundef @.str.4)
  %208 = call ptr @__errno_location() #12
  %209 = load i32, ptr %208, align 4, !tbaa !5
  %210 = call ptr @strerror(i32 noundef %209) #11
  %211 = call ptr @__errno_location() #12
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %213 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %200, ptr noundef @.str.2, i32 noundef %201, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 21, ptr noundef %204, ptr noundef %207, ptr noundef %210, i32 noundef %212) #11
  br label %231

214:                                              ; preds = %192, %185
  %215 = load i32, ptr %8, align 4, !tbaa !5
  %216 = call ptr @__errno_location() #12
  store i32 %215, ptr %216, align 4, !tbaa !5
  %217 = load ptr, ptr @stderr, align 8, !tbaa !9
  %218 = load i32, ptr @test_count, align 4, !tbaa !5
  %219 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %221 = call ptr @s2n_strerror(i32 noundef %220, ptr noundef @.str.4)
  %222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %223 = load i32, ptr %222, align 4, !tbaa !5
  %224 = call ptr @s2n_strerror_debug(i32 noundef %223, ptr noundef @.str.4)
  %225 = call ptr @__errno_location() #12
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = call ptr @strerror(i32 noundef %226) #11
  %228 = call ptr @__errno_location() #12
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %217, ptr noundef @.str.5, i32 noundef %218, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 21, ptr noundef %221, ptr noundef %224, ptr noundef %227, i32 noundef %229) #11
  br label %231

231:                                              ; preds = %214, %197
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  br label %232

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

233:                                              ; No predecessors!
  br label %234

234:                                              ; preds = %233, %180
  br label %235

235:                                              ; preds = %234
  br label %236

236:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 12000, ptr %9) #11
  call void @llvm.memset.p0.i64(ptr align 16 %9, i8 0, i64 12000, i1 false)
  br label %237

237:                                              ; preds = %236
  %238 = load i32, ptr @test_count, align 4, !tbaa !5
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr @test_count, align 4, !tbaa !5
  %240 = getelementptr inbounds [12000 x i8], ptr %9, i64 0, i64 0
  %241 = call i32 @s2n_read_test_pem(ptr noundef @.str.8, ptr noundef %240, i64 noundef 12000)
  %242 = icmp eq i32 %241, -1
  br i1 %242, label %243, label %296

243:                                              ; preds = %237
  br label %244

244:                                              ; preds = %243
  br label %245

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

252:                                              ; preds = %245
  %253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %254 = call i32 @fileno(ptr noundef %253) #11
  %255 = call i32 @isatty(i32 noundef %254) #11
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %257, label %274

257:                                              ; preds = %252
  %258 = load i32, ptr %10, align 4, !tbaa !5
  %259 = call ptr @__errno_location() #12
  store i32 %258, ptr %259, align 4, !tbaa !5
  %260 = load ptr, ptr @stderr, align 8, !tbaa !9
  %261 = load i32, ptr @test_count, align 4, !tbaa !5
  %262 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %263 = load i32, ptr %262, align 4, !tbaa !5
  %264 = call ptr @s2n_strerror(i32 noundef %263, ptr noundef @.str.4)
  %265 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %266 = load i32, ptr %265, align 4, !tbaa !5
  %267 = call ptr @s2n_strerror_debug(i32 noundef %266, ptr noundef @.str.4)
  %268 = call ptr @__errno_location() #12
  %269 = load i32, ptr %268, align 4, !tbaa !5
  %270 = call ptr @strerror(i32 noundef %269) #11
  %271 = call ptr @__errno_location() #12
  %272 = load i32, ptr %271, align 4, !tbaa !5
  %273 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %260, ptr noundef @.str.2, i32 noundef %261, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 24, ptr noundef %264, ptr noundef %267, ptr noundef %270, i32 noundef %272) #11
  br label %291

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

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

292:                                              ; preds = %291
  br label %293

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

294:                                              ; No predecessors!
  br label %295

295:                                              ; preds = %294
  br label %296

296:                                              ; preds = %295, %237
  br label %297

297:                                              ; preds = %296
  br label %298

298:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #11
  store ptr null, ptr %11, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %298
  %300 = load i32, ptr @test_count, align 4, !tbaa !5
  %301 = add nsw i32 %300, 1
  store i32 %301, ptr @test_count, align 4, !tbaa !5
  %302 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %11, ptr noundef @.str.10, ptr noundef @.str.11)
  %303 = icmp eq i32 %302, -1
  br i1 %303, label %304, label %357

304:                                              ; preds = %299
  br label %305

305:                                              ; preds = %304
  br label %306

306:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #11
  %307 = call ptr @__errno_location() #12
  %308 = load i32, ptr %307, align 4, !tbaa !5
  store i32 %308, ptr %12, align 4, !tbaa !5
  %309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %310 = call i32 @s2n_print_stacktrace(ptr noundef %309)
  %311 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %312 = trunc i8 %311 to i1
  br i1 %312, label %313, label %335

313:                                              ; preds = %306
  %314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %315 = call i32 @fileno(ptr noundef %314) #11
  %316 = call i32 @isatty(i32 noundef %315) #11
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %318, label %335

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

335:                                              ; preds = %313, %306
  %336 = load i32, ptr %12, align 4, !tbaa !5
  %337 = call ptr @__errno_location() #12
  store i32 %336, ptr %337, align 4, !tbaa !5
  %338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %339 = load i32, ptr @test_count, align 4, !tbaa !5
  %340 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %341 = load i32, ptr %340, align 4, !tbaa !5
  %342 = call ptr @s2n_strerror(i32 noundef %341, ptr noundef @.str.4)
  %343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %344 = load i32, ptr %343, align 4, !tbaa !5
  %345 = call ptr @s2n_strerror_debug(i32 noundef %344, ptr noundef @.str.4)
  %346 = call ptr @__errno_location() #12
  %347 = load i32, ptr %346, align 4, !tbaa !5
  %348 = call ptr @strerror(i32 noundef %347) #11
  %349 = call ptr @__errno_location() #12
  %350 = load i32, ptr %349, align 4, !tbaa !5
  %351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %338, ptr noundef @.str.5, i32 noundef %339, ptr noundef @.str.12, ptr noundef @.str.1, i32 noundef 28, ptr noundef %342, ptr noundef %345, ptr noundef %348, i32 noundef %350) #11
  br label %352

352:                                              ; preds = %335, %318
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  br label %353

353:                                              ; preds = %352
  br label %354

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

355:                                              ; No predecessors!
  br label %356

356:                                              ; preds = %355
  br label %357

357:                                              ; preds = %356, %299
  br label %358

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  store ptr null, ptr %13, align 8, !tbaa !9
  br label %360

360:                                              ; preds = %359
  %361 = load i32, ptr @test_count, align 4, !tbaa !5
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr @test_count, align 4, !tbaa !5
  %363 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef %13, ptr noundef @.str.13, ptr noundef @.str.14)
  %364 = icmp eq i32 %363, -1
  br i1 %364, label %365, label %418

365:                                              ; preds = %360
  br label %366

366:                                              ; preds = %365
  br label %367

367:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  %368 = call ptr @__errno_location() #12
  %369 = load i32, ptr %368, align 4, !tbaa !5
  store i32 %369, ptr %14, align 4, !tbaa !5
  %370 = load ptr, ptr @stderr, align 8, !tbaa !9
  %371 = call i32 @s2n_print_stacktrace(ptr noundef %370)
  %372 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %373 = trunc i8 %372 to i1
  br i1 %373, label %374, label %396

374:                                              ; preds = %367
  %375 = load ptr, ptr @stderr, align 8, !tbaa !9
  %376 = call i32 @fileno(ptr noundef %375) #11
  %377 = call i32 @isatty(i32 noundef %376) #11
  %378 = icmp ne i32 %377, 0
  br i1 %378, label %379, label %396

379:                                              ; preds = %374
  %380 = load i32, ptr %14, align 4, !tbaa !5
  %381 = call ptr @__errno_location() #12
  store i32 %380, ptr %381, align 4, !tbaa !5
  %382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %383 = load i32, ptr @test_count, align 4, !tbaa !5
  %384 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %385 = load i32, ptr %384, align 4, !tbaa !5
  %386 = call ptr @s2n_strerror(i32 noundef %385, ptr noundef @.str.4)
  %387 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %388 = load i32, ptr %387, align 4, !tbaa !5
  %389 = call ptr @s2n_strerror_debug(i32 noundef %388, ptr noundef @.str.4)
  %390 = call ptr @__errno_location() #12
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = call ptr @strerror(i32 noundef %391) #11
  %393 = call ptr @__errno_location() #12
  %394 = load i32, ptr %393, align 4, !tbaa !5
  %395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %382, ptr noundef @.str.2, i32 noundef %383, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 32, ptr noundef %386, ptr noundef %389, ptr noundef %392, i32 noundef %394) #11
  br label %413

396:                                              ; preds = %374, %367
  %397 = load i32, ptr %14, align 4, !tbaa !5
  %398 = call ptr @__errno_location() #12
  store i32 %397, ptr %398, align 4, !tbaa !5
  %399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %400 = load i32, ptr @test_count, align 4, !tbaa !5
  %401 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %402 = load i32, ptr %401, align 4, !tbaa !5
  %403 = call ptr @s2n_strerror(i32 noundef %402, ptr noundef @.str.4)
  %404 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %405 = load i32, ptr %404, align 4, !tbaa !5
  %406 = call ptr @s2n_strerror_debug(i32 noundef %405, ptr noundef @.str.4)
  %407 = call ptr @__errno_location() #12
  %408 = load i32, ptr %407, align 4, !tbaa !5
  %409 = call ptr @strerror(i32 noundef %408) #11
  %410 = call ptr @__errno_location() #12
  %411 = load i32, ptr %410, align 4, !tbaa !5
  %412 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %399, ptr noundef @.str.5, i32 noundef %400, ptr noundef @.str.15, ptr noundef @.str.1, i32 noundef 32, ptr noundef %403, ptr noundef %406, ptr noundef %409, i32 noundef %411) #11
  br label %413

413:                                              ; preds = %396, %379
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %414

414:                                              ; preds = %413
  br label %415

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

416:                                              ; No predecessors!
  br label %417

417:                                              ; preds = %416
  br label %418

418:                                              ; preds = %417, %360
  br label %419

419:                                              ; preds = %418
  br label %420

420:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #11
  %421 = call ptr @s2n_config_new_minimal()
  store ptr %421, ptr %15, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %420
  %423 = load i32, ptr @test_count, align 4, !tbaa !5
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr @test_count, align 4, !tbaa !5
  %425 = load ptr, ptr %15, align 8, !tbaa !9
  %426 = icmp eq ptr %425, null
  br i1 %426, label %427, label %480

427:                                              ; preds = %422
  br label %428

428:                                              ; preds = %427
  br label %429

429:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  %430 = call ptr @__errno_location() #12
  %431 = load i32, ptr %430, align 4, !tbaa !5
  store i32 %431, ptr %16, align 4, !tbaa !5
  %432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %433 = call i32 @s2n_print_stacktrace(ptr noundef %432)
  %434 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %435 = trunc i8 %434 to i1
  br i1 %435, label %436, label %458

436:                                              ; preds = %429
  %437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %438 = call i32 @fileno(ptr noundef %437) #11
  %439 = call i32 @isatty(i32 noundef %438) #11
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %458

441:                                              ; preds = %436
  %442 = load i32, ptr %16, align 4, !tbaa !5
  %443 = call ptr @__errno_location() #12
  store i32 %442, ptr %443, align 4, !tbaa !5
  %444 = load ptr, ptr @stderr, align 8, !tbaa !9
  %445 = load i32, ptr @test_count, align 4, !tbaa !5
  %446 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %447 = load i32, ptr %446, align 4, !tbaa !5
  %448 = call ptr @s2n_strerror(i32 noundef %447, ptr noundef @.str.4)
  %449 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %450 = load i32, ptr %449, align 4, !tbaa !5
  %451 = call ptr @s2n_strerror_debug(i32 noundef %450, ptr noundef @.str.4)
  %452 = call ptr @__errno_location() #12
  %453 = load i32, ptr %452, align 4, !tbaa !5
  %454 = call ptr @strerror(i32 noundef %453) #11
  %455 = call ptr @__errno_location() #12
  %456 = load i32, ptr %455, align 4, !tbaa !5
  %457 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %444, ptr noundef @.str.2, i32 noundef %445, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 37, ptr noundef %448, ptr noundef %451, ptr noundef %454, i32 noundef %456) #11
  br label %475

458:                                              ; preds = %436, %429
  %459 = load i32, ptr %16, align 4, !tbaa !5
  %460 = call ptr @__errno_location() #12
  store i32 %459, ptr %460, align 4, !tbaa !5
  %461 = load ptr, ptr @stderr, align 8, !tbaa !9
  %462 = load i32, ptr @test_count, align 4, !tbaa !5
  %463 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %464 = load i32, ptr %463, align 4, !tbaa !5
  %465 = call ptr @s2n_strerror(i32 noundef %464, ptr noundef @.str.4)
  %466 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %467 = load i32, ptr %466, align 4, !tbaa !5
  %468 = call ptr @s2n_strerror_debug(i32 noundef %467, ptr noundef @.str.4)
  %469 = call ptr @__errno_location() #12
  %470 = load i32, ptr %469, align 4, !tbaa !5
  %471 = call ptr @strerror(i32 noundef %470) #11
  %472 = call ptr @__errno_location() #12
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %461, ptr noundef @.str.5, i32 noundef %462, ptr noundef @.str.16, ptr noundef @.str.1, i32 noundef 37, ptr noundef %465, ptr noundef %468, ptr noundef %471, i32 noundef %473) #11
  br label %475

475:                                              ; preds = %458, %441
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  br label %476

476:                                              ; preds = %475
  br label %477

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

478:                                              ; No predecessors!
  br label %479

479:                                              ; preds = %478
  br label %480

480:                                              ; preds = %479, %422
  br label %481

481:                                              ; preds = %480
  br label %482

482:                                              ; preds = %481
  br label %483

483:                                              ; preds = %482
  %484 = load i32, ptr @test_count, align 4, !tbaa !5
  %485 = add nsw i32 %484, 1
  store i32 %485, ptr @test_count, align 4, !tbaa !5
  %486 = load ptr, ptr %15, align 8, !tbaa !9
  %487 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef %486)
  %488 = icmp eq i32 %487, -1
  br i1 %488, label %489, label %542

489:                                              ; preds = %483
  br label %490

490:                                              ; preds = %489
  br label %491

491:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #11
  %492 = call ptr @__errno_location() #12
  %493 = load i32, ptr %492, align 4, !tbaa !5
  store i32 %493, ptr %17, align 4, !tbaa !5
  %494 = load ptr, ptr @stderr, align 8, !tbaa !9
  %495 = call i32 @s2n_print_stacktrace(ptr noundef %494)
  %496 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %497 = trunc i8 %496 to i1
  br i1 %497, label %498, label %520

498:                                              ; preds = %491
  %499 = load ptr, ptr @stderr, align 8, !tbaa !9
  %500 = call i32 @fileno(ptr noundef %499) #11
  %501 = call i32 @isatty(i32 noundef %500) #11
  %502 = icmp ne i32 %501, 0
  br i1 %502, label %503, label %520

503:                                              ; preds = %498
  %504 = load i32, ptr %17, align 4, !tbaa !5
  %505 = call ptr @__errno_location() #12
  store i32 %504, ptr %505, align 4, !tbaa !5
  %506 = load ptr, ptr @stderr, align 8, !tbaa !9
  %507 = load i32, ptr @test_count, align 4, !tbaa !5
  %508 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %509 = load i32, ptr %508, align 4, !tbaa !5
  %510 = call ptr @s2n_strerror(i32 noundef %509, ptr noundef @.str.4)
  %511 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %512 = load i32, ptr %511, align 4, !tbaa !5
  %513 = call ptr @s2n_strerror_debug(i32 noundef %512, ptr noundef @.str.4)
  %514 = call ptr @__errno_location() #12
  %515 = load i32, ptr %514, align 4, !tbaa !5
  %516 = call ptr @strerror(i32 noundef %515) #11
  %517 = call ptr @__errno_location() #12
  %518 = load i32, ptr %517, align 4, !tbaa !5
  %519 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %506, ptr noundef @.str.2, i32 noundef %507, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 38, ptr noundef %510, ptr noundef %513, ptr noundef %516, i32 noundef %518) #11
  br label %537

520:                                              ; preds = %498, %491
  %521 = load i32, ptr %17, align 4, !tbaa !5
  %522 = call ptr @__errno_location() #12
  store i32 %521, ptr %522, align 4, !tbaa !5
  %523 = load ptr, ptr @stderr, align 8, !tbaa !9
  %524 = load i32, ptr @test_count, align 4, !tbaa !5
  %525 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %526 = load i32, ptr %525, align 4, !tbaa !5
  %527 = call ptr @s2n_strerror(i32 noundef %526, ptr noundef @.str.4)
  %528 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %529 = load i32, ptr %528, align 4, !tbaa !5
  %530 = call ptr @s2n_strerror_debug(i32 noundef %529, ptr noundef @.str.4)
  %531 = call ptr @__errno_location() #12
  %532 = load i32, ptr %531, align 4, !tbaa !5
  %533 = call ptr @strerror(i32 noundef %532) #11
  %534 = call ptr @__errno_location() #12
  %535 = load i32, ptr %534, align 4, !tbaa !5
  %536 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %523, ptr noundef @.str.5, i32 noundef %524, ptr noundef @.str.17, ptr noundef @.str.1, i32 noundef 38, ptr noundef %527, ptr noundef %530, ptr noundef %533, i32 noundef %535) #11
  br label %537

537:                                              ; preds = %520, %503
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  br label %538

538:                                              ; preds = %537
  br label %539

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

540:                                              ; No predecessors!
  br label %541

541:                                              ; preds = %540
  br label %542

542:                                              ; preds = %541, %483
  br label %543

543:                                              ; preds = %542
  br label %544

544:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #11
  %545 = call ptr @s2n_config_new_minimal()
  store ptr %545, ptr %18, align 8, !tbaa !9
  br label %546

546:                                              ; preds = %544
  %547 = load i32, ptr @test_count, align 4, !tbaa !5
  %548 = add nsw i32 %547, 1
  store i32 %548, ptr @test_count, align 4, !tbaa !5
  %549 = load ptr, ptr %18, align 8, !tbaa !9
  %550 = load ptr, ptr %11, align 8, !tbaa !9
  %551 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %549, ptr noundef %550)
  %552 = icmp eq i32 %551, -1
  br i1 %552, label %553, label %606

553:                                              ; preds = %546
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  %556 = call ptr @__errno_location() #12
  %557 = load i32, ptr %556, align 4, !tbaa !5
  store i32 %557, ptr %19, align 4, !tbaa !5
  %558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %559 = call i32 @s2n_print_stacktrace(ptr noundef %558)
  %560 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %561 = trunc i8 %560 to i1
  br i1 %561, label %562, label %584

562:                                              ; preds = %555
  %563 = load ptr, ptr @stderr, align 8, !tbaa !9
  %564 = call i32 @fileno(ptr noundef %563) #11
  %565 = call i32 @isatty(i32 noundef %564) #11
  %566 = icmp ne i32 %565, 0
  br i1 %566, label %567, label %584

567:                                              ; preds = %562
  %568 = load i32, ptr %19, align 4, !tbaa !5
  %569 = call ptr @__errno_location() #12
  store i32 %568, ptr %569, align 4, !tbaa !5
  %570 = load ptr, ptr @stderr, align 8, !tbaa !9
  %571 = load i32, ptr @test_count, align 4, !tbaa !5
  %572 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %573 = load i32, ptr %572, align 4, !tbaa !5
  %574 = call ptr @s2n_strerror(i32 noundef %573, ptr noundef @.str.4)
  %575 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %576 = load i32, ptr %575, align 4, !tbaa !5
  %577 = call ptr @s2n_strerror_debug(i32 noundef %576, ptr noundef @.str.4)
  %578 = call ptr @__errno_location() #12
  %579 = load i32, ptr %578, align 4, !tbaa !5
  %580 = call ptr @strerror(i32 noundef %579) #11
  %581 = call ptr @__errno_location() #12
  %582 = load i32, ptr %581, align 4, !tbaa !5
  %583 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %570, ptr noundef @.str.2, i32 noundef %571, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 41, ptr noundef %574, ptr noundef %577, ptr noundef %580, i32 noundef %582) #11
  br label %601

584:                                              ; preds = %562, %555
  %585 = load i32, ptr %19, align 4, !tbaa !5
  %586 = call ptr @__errno_location() #12
  store i32 %585, ptr %586, align 4, !tbaa !5
  %587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %588 = load i32, ptr @test_count, align 4, !tbaa !5
  %589 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %590 = load i32, ptr %589, align 4, !tbaa !5
  %591 = call ptr @s2n_strerror(i32 noundef %590, ptr noundef @.str.4)
  %592 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %593 = load i32, ptr %592, align 4, !tbaa !5
  %594 = call ptr @s2n_strerror_debug(i32 noundef %593, ptr noundef @.str.4)
  %595 = call ptr @__errno_location() #12
  %596 = load i32, ptr %595, align 4, !tbaa !5
  %597 = call ptr @strerror(i32 noundef %596) #11
  %598 = call ptr @__errno_location() #12
  %599 = load i32, ptr %598, align 4, !tbaa !5
  %600 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %587, ptr noundef @.str.5, i32 noundef %588, ptr noundef @.str.18, ptr noundef @.str.1, i32 noundef 41, ptr noundef %591, ptr noundef %594, ptr noundef %597, i32 noundef %599) #11
  br label %601

601:                                              ; preds = %584, %567
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %602

602:                                              ; preds = %601
  br label %603

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

604:                                              ; No predecessors!
  br label %605

605:                                              ; preds = %604
  br label %606

606:                                              ; preds = %605, %546
  br label %607

607:                                              ; preds = %606
  br label %608

608:                                              ; preds = %607
  br label %609

609:                                              ; preds = %608
  %610 = load i32, ptr @test_count, align 4, !tbaa !5
  %611 = add nsw i32 %610, 1
  store i32 %611, ptr @test_count, align 4, !tbaa !5
  %612 = load ptr, ptr %18, align 8, !tbaa !9
  %613 = load ptr, ptr %13, align 8, !tbaa !9
  %614 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %612, ptr noundef %613)
  %615 = icmp eq i32 %614, -1
  br i1 %615, label %616, label %669

616:                                              ; preds = %609
  br label %617

617:                                              ; preds = %616
  br label %618

618:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  %619 = call ptr @__errno_location() #12
  %620 = load i32, ptr %619, align 4, !tbaa !5
  store i32 %620, ptr %20, align 4, !tbaa !5
  %621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %622 = call i32 @s2n_print_stacktrace(ptr noundef %621)
  %623 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %624 = trunc i8 %623 to i1
  br i1 %624, label %625, label %647

625:                                              ; preds = %618
  %626 = load ptr, ptr @stderr, align 8, !tbaa !9
  %627 = call i32 @fileno(ptr noundef %626) #11
  %628 = call i32 @isatty(i32 noundef %627) #11
  %629 = icmp ne i32 %628, 0
  br i1 %629, label %630, label %647

630:                                              ; preds = %625
  %631 = load i32, ptr %20, align 4, !tbaa !5
  %632 = call ptr @__errno_location() #12
  store i32 %631, ptr %632, align 4, !tbaa !5
  %633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %634 = load i32, ptr @test_count, align 4, !tbaa !5
  %635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call ptr @s2n_strerror(i32 noundef %636, ptr noundef @.str.4)
  %638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %639 = load i32, ptr %638, align 4, !tbaa !5
  %640 = call ptr @s2n_strerror_debug(i32 noundef %639, ptr noundef @.str.4)
  %641 = call ptr @__errno_location() #12
  %642 = load i32, ptr %641, align 4, !tbaa !5
  %643 = call ptr @strerror(i32 noundef %642) #11
  %644 = call ptr @__errno_location() #12
  %645 = load i32, ptr %644, align 4, !tbaa !5
  %646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %633, ptr noundef @.str.2, i32 noundef %634, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 42, ptr noundef %637, ptr noundef %640, ptr noundef %643, i32 noundef %645) #11
  br label %664

647:                                              ; preds = %625, %618
  %648 = load i32, ptr %20, align 4, !tbaa !5
  %649 = call ptr @__errno_location() #12
  store i32 %648, ptr %649, align 4, !tbaa !5
  %650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %651 = load i32, ptr @test_count, align 4, !tbaa !5
  %652 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %653 = load i32, ptr %652, align 4, !tbaa !5
  %654 = call ptr @s2n_strerror(i32 noundef %653, ptr noundef @.str.4)
  %655 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %656 = load i32, ptr %655, align 4, !tbaa !5
  %657 = call ptr @s2n_strerror_debug(i32 noundef %656, ptr noundef @.str.4)
  %658 = call ptr @__errno_location() #12
  %659 = load i32, ptr %658, align 4, !tbaa !5
  %660 = call ptr @strerror(i32 noundef %659) #11
  %661 = call ptr @__errno_location() #12
  %662 = load i32, ptr %661, align 4, !tbaa !5
  %663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %650, ptr noundef @.str.5, i32 noundef %651, ptr noundef @.str.19, ptr noundef @.str.1, i32 noundef 42, ptr noundef %654, ptr noundef %657, ptr noundef %660, i32 noundef %662) #11
  br label %664

664:                                              ; preds = %647, %630
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  br label %665

665:                                              ; preds = %664
  br label %666

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

667:                                              ; No predecessors!
  br label %668

668:                                              ; preds = %667
  br label %669

669:                                              ; preds = %668, %609
  br label %670

670:                                              ; preds = %669
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  %673 = load i32, ptr @test_count, align 4, !tbaa !5
  %674 = add nsw i32 %673, 1
  store i32 %674, ptr @test_count, align 4, !tbaa !5
  %675 = load ptr, ptr %18, align 8, !tbaa !9
  %676 = getelementptr inbounds [12000 x i8], ptr %9, i64 0, i64 0
  %677 = call i32 @s2n_config_add_dhparams(ptr noundef %675, ptr noundef %676)
  %678 = icmp eq i32 %677, -1
  br i1 %678, label %679, label %732

679:                                              ; preds = %672
  br label %680

680:                                              ; preds = %679
  br label %681

681:                                              ; preds = %680
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #11
  %682 = call ptr @__errno_location() #12
  %683 = load i32, ptr %682, align 4, !tbaa !5
  store i32 %683, ptr %21, align 4, !tbaa !5
  %684 = load ptr, ptr @stderr, align 8, !tbaa !9
  %685 = call i32 @s2n_print_stacktrace(ptr noundef %684)
  %686 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %687 = trunc i8 %686 to i1
  br i1 %687, label %688, label %710

688:                                              ; preds = %681
  %689 = load ptr, ptr @stderr, align 8, !tbaa !9
  %690 = call i32 @fileno(ptr noundef %689) #11
  %691 = call i32 @isatty(i32 noundef %690) #11
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %693, label %710

693:                                              ; preds = %688
  %694 = load i32, ptr %21, align 4, !tbaa !5
  %695 = call ptr @__errno_location() #12
  store i32 %694, ptr %695, align 4, !tbaa !5
  %696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %697 = load i32, ptr @test_count, align 4, !tbaa !5
  %698 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %699 = load i32, ptr %698, align 4, !tbaa !5
  %700 = call ptr @s2n_strerror(i32 noundef %699, ptr noundef @.str.4)
  %701 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %702 = load i32, ptr %701, align 4, !tbaa !5
  %703 = call ptr @s2n_strerror_debug(i32 noundef %702, ptr noundef @.str.4)
  %704 = call ptr @__errno_location() #12
  %705 = load i32, ptr %704, align 4, !tbaa !5
  %706 = call ptr @strerror(i32 noundef %705) #11
  %707 = call ptr @__errno_location() #12
  %708 = load i32, ptr %707, align 4, !tbaa !5
  %709 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %696, ptr noundef @.str.2, i32 noundef %697, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 43, ptr noundef %700, ptr noundef %703, ptr noundef %706, i32 noundef %708) #11
  br label %727

710:                                              ; preds = %688, %681
  %711 = load i32, ptr %21, align 4, !tbaa !5
  %712 = call ptr @__errno_location() #12
  store i32 %711, ptr %712, align 4, !tbaa !5
  %713 = load ptr, ptr @stderr, align 8, !tbaa !9
  %714 = load i32, ptr @test_count, align 4, !tbaa !5
  %715 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %716 = load i32, ptr %715, align 4, !tbaa !5
  %717 = call ptr @s2n_strerror(i32 noundef %716, ptr noundef @.str.4)
  %718 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %719 = load i32, ptr %718, align 4, !tbaa !5
  %720 = call ptr @s2n_strerror_debug(i32 noundef %719, ptr noundef @.str.4)
  %721 = call ptr @__errno_location() #12
  %722 = load i32, ptr %721, align 4, !tbaa !5
  %723 = call ptr @strerror(i32 noundef %722) #11
  %724 = call ptr @__errno_location() #12
  %725 = load i32, ptr %724, align 4, !tbaa !5
  %726 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %713, ptr noundef @.str.5, i32 noundef %714, ptr noundef @.str.20, ptr noundef @.str.1, i32 noundef 43, ptr noundef %717, ptr noundef %720, ptr noundef %723, i32 noundef %725) #11
  br label %727

727:                                              ; preds = %710, %693
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  br label %728

728:                                              ; preds = %727
  br label %729

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

730:                                              ; No predecessors!
  br label %731

731:                                              ; preds = %730
  br label %732

732:                                              ; preds = %731, %672
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  store i64 0, ptr %22, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #11
  store i64 0, ptr %23, align 8, !tbaa !15
  br label %735

735:                                              ; preds = %1573, %734
  %736 = load i64, ptr %23, align 8, !tbaa !15
  %737 = load i16, ptr @cipher_preferences_test_all, align 8, !tbaa !17
  %738 = zext i16 %737 to i64
  %739 = icmp ult i64 %736, %738
  br i1 %739, label %741, label %740

740:                                              ; preds = %735
  store i32 72, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  br label %1576

741:                                              ; preds = %735
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #11
  %742 = load ptr, ptr getelementptr inbounds (%struct.s2n_cipher_preferences, ptr @cipher_preferences_test_all, i32 0, i32 1), align 8, !tbaa !20
  %743 = load i64, ptr %23, align 8, !tbaa !15
  %744 = getelementptr inbounds ptr, ptr %742, i64 %743
  %745 = load ptr, ptr %744, align 8, !tbaa !9
  %746 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %745, i32 0, i32 8
  %747 = load i8, ptr %746, align 8, !tbaa !21
  store i8 %747, ptr %25, align 1, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  store i64 0, ptr %26, align 8, !tbaa !15
  br label %748

748:                                              ; preds = %1569, %741
  %749 = load i64, ptr %26, align 8, !tbaa !15
  %750 = load i8, ptr %25, align 1, !tbaa !23
  %751 = zext i8 %750 to i64
  %752 = icmp ult i64 %749, %751
  br i1 %752, label %754, label %753

753:                                              ; preds = %748
  store i32 75, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %1572

754:                                              ; preds = %748
  call void @llvm.lifetime.start.p0(i64 104, ptr %27) #11
  %755 = load ptr, ptr getelementptr inbounds (%struct.s2n_cipher_preferences, ptr @cipher_preferences_test_all, i32 0, i32 1), align 8, !tbaa !20
  %756 = load i64, ptr %23, align 8, !tbaa !15
  %757 = getelementptr inbounds ptr, ptr %755, i64 %756
  %758 = load ptr, ptr %757, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %758, i64 104, i1 false), !tbaa.struct !24
  %759 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %27, i32 0, i32 7
  %760 = load i64, ptr %26, align 8, !tbaa !15
  %761 = getelementptr inbounds [2 x ptr], ptr %759, i64 0, i64 %760
  %762 = load ptr, ptr %761, align 8, !tbaa !9
  %763 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %27, i32 0, i32 6
  store ptr %762, ptr %763, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #11
  %764 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %27, i32 0, i32 6
  %765 = load ptr, ptr %764, align 8, !tbaa !25
  %766 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %765, i32 0, i32 0
  %767 = load ptr, ptr %766, align 8, !tbaa !26
  %768 = getelementptr inbounds %struct.s2n_cipher, ptr %767, i32 0, i32 0
  %769 = load i32, ptr %768, align 8, !tbaa !28
  %770 = trunc i32 %769 to i8
  store i8 %770, ptr %28, align 1, !tbaa !23
  %771 = load i8, ptr %28, align 1, !tbaa !23
  %772 = zext i8 %771 to i32
  %773 = icmp ne i32 %772, 1
  br i1 %773, label %774, label %779

774:                                              ; preds = %754
  %775 = load i8, ptr %28, align 1, !tbaa !23
  %776 = zext i8 %775 to i32
  %777 = icmp ne i32 %776, 3
  br i1 %777, label %778, label %779

778:                                              ; preds = %774
  store i32 77, ptr %24, align 4
  br label %1566

779:                                              ; preds = %774, %754
  %780 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %27, i32 0, i32 6
  %781 = load ptr, ptr %780, align 8, !tbaa !25
  %782 = getelementptr inbounds %struct.s2n_record_algorithm, ptr %781, i32 0, i32 0
  %783 = load ptr, ptr %782, align 8, !tbaa !26
  %784 = getelementptr inbounds %struct.s2n_cipher, ptr %783, i32 0, i32 3
  %785 = load ptr, ptr %784, align 8, !tbaa !30
  %786 = call zeroext i1 %785()
  br i1 %786, label %788, label %787

787:                                              ; preds = %779
  store i32 77, ptr %24, align 4
  br label %1566

788:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  store ptr %27, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #11
  %789 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %30, i32 0, i32 0
  store i16 1, ptr %789, align 8, !tbaa !17
  %790 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %30, i32 0, i32 1
  store ptr %29, ptr %790, align 8, !tbaa !20
  %791 = getelementptr inbounds %struct.s2n_cipher_preferences, ptr %30, i32 0, i32 2
  store i8 0, ptr %791, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 64, ptr %31) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %31, ptr align 8 @security_policy_test_all, i64 64, i1 false), !tbaa.struct !32
  %792 = getelementptr inbounds %struct.s2n_security_policy, ptr %31, i32 0, i32 1
  store ptr %30, ptr %792, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  %793 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %793, ptr %32, align 8, !tbaa !9
  br label %794

794:                                              ; preds = %788
  %795 = load i32, ptr @test_count, align 4, !tbaa !5
  %796 = add nsw i32 %795, 1
  store i32 %796, ptr @test_count, align 4, !tbaa !5
  %797 = load ptr, ptr %32, align 8, !tbaa !9
  %798 = icmp eq ptr %797, null
  br i1 %798, label %799, label %852

799:                                              ; preds = %794
  br label %800

800:                                              ; preds = %799
  br label %801

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

808:                                              ; preds = %801
  %809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %810 = call i32 @fileno(ptr noundef %809) #11
  %811 = call i32 @isatty(i32 noundef %810) #11
  %812 = icmp ne i32 %811, 0
  br i1 %812, label %813, label %830

813:                                              ; preds = %808
  %814 = load i32, ptr %33, align 4, !tbaa !5
  %815 = call ptr @__errno_location() #12
  store i32 %814, ptr %815, align 4, !tbaa !5
  %816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %817 = load i32, ptr @test_count, align 4, !tbaa !5
  %818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %819 = load i32, ptr %818, align 4, !tbaa !5
  %820 = call ptr @s2n_strerror(i32 noundef %819, ptr noundef @.str.4)
  %821 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %822 = load i32, ptr %821, align 4, !tbaa !5
  %823 = call ptr @s2n_strerror_debug(i32 noundef %822, ptr noundef @.str.4)
  %824 = call ptr @__errno_location() #12
  %825 = load i32, ptr %824, align 4, !tbaa !5
  %826 = call ptr @strerror(i32 noundef %825) #11
  %827 = call ptr @__errno_location() #12
  %828 = load i32, ptr %827, align 4, !tbaa !5
  %829 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %816, ptr noundef @.str.2, i32 noundef %817, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 75, ptr noundef %820, ptr noundef %823, ptr noundef %826, i32 noundef %828) #11
  br label %847

830:                                              ; preds = %808, %801
  %831 = load i32, ptr %33, align 4, !tbaa !5
  %832 = call ptr @__errno_location() #12
  store i32 %831, ptr %832, align 4, !tbaa !5
  %833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %834 = load i32, ptr @test_count, align 4, !tbaa !5
  %835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %836 = load i32, ptr %835, align 4, !tbaa !5
  %837 = call ptr @s2n_strerror(i32 noundef %836, ptr noundef @.str.4)
  %838 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %839 = load i32, ptr %838, align 4, !tbaa !5
  %840 = call ptr @s2n_strerror_debug(i32 noundef %839, ptr noundef @.str.4)
  %841 = call ptr @__errno_location() #12
  %842 = load i32, ptr %841, align 4, !tbaa !5
  %843 = call ptr @strerror(i32 noundef %842) #11
  %844 = call ptr @__errno_location() #12
  %845 = load i32, ptr %844, align 4, !tbaa !5
  %846 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %833, ptr noundef @.str.5, i32 noundef %834, ptr noundef @.str.21, ptr noundef @.str.1, i32 noundef 75, ptr noundef %837, ptr noundef %840, ptr noundef %843, i32 noundef %845) #11
  br label %847

847:                                              ; preds = %830, %813
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %848

848:                                              ; preds = %847
  br label %849

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

850:                                              ; No predecessors!
  br label %851

851:                                              ; preds = %850
  br label %852

852:                                              ; preds = %851, %794
  br label %853

853:                                              ; preds = %852
  br label %854

854:                                              ; preds = %853
  br label %855

855:                                              ; preds = %854
  %856 = load i32, ptr @test_count, align 4, !tbaa !5
  %857 = add nsw i32 %856, 1
  store i32 %857, ptr @test_count, align 4, !tbaa !5
  %858 = load ptr, ptr %32, align 8, !tbaa !9
  %859 = load ptr, ptr %15, align 8, !tbaa !9
  %860 = call i32 @s2n_connection_set_config(ptr noundef %858, ptr noundef %859)
  %861 = icmp eq i32 %860, -1
  br i1 %861, label %862, label %915

862:                                              ; preds = %855
  br label %863

863:                                              ; preds = %862
  br label %864

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

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

876:                                              ; preds = %871
  %877 = load i32, ptr %34, align 4, !tbaa !5
  %878 = call ptr @__errno_location() #12
  store i32 %877, ptr %878, align 4, !tbaa !5
  %879 = load ptr, ptr @stderr, align 8, !tbaa !9
  %880 = load i32, ptr @test_count, align 4, !tbaa !5
  %881 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %882 = load i32, ptr %881, align 4, !tbaa !5
  %883 = call ptr @s2n_strerror(i32 noundef %882, ptr noundef @.str.4)
  %884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %885 = load i32, ptr %884, align 4, !tbaa !5
  %886 = call ptr @s2n_strerror_debug(i32 noundef %885, ptr noundef @.str.4)
  %887 = call ptr @__errno_location() #12
  %888 = load i32, ptr %887, align 4, !tbaa !5
  %889 = call ptr @strerror(i32 noundef %888) #11
  %890 = call ptr @__errno_location() #12
  %891 = load i32, ptr %890, align 4, !tbaa !5
  %892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %879, ptr noundef @.str.2, i32 noundef %880, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 76, ptr noundef %883, ptr noundef %886, ptr noundef %889, i32 noundef %891) #11
  br label %910

893:                                              ; preds = %871, %864
  %894 = load i32, ptr %34, align 4, !tbaa !5
  %895 = call ptr @__errno_location() #12
  store i32 %894, ptr %895, align 4, !tbaa !5
  %896 = load ptr, ptr @stderr, align 8, !tbaa !9
  %897 = load i32, ptr @test_count, align 4, !tbaa !5
  %898 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %899 = load i32, ptr %898, align 4, !tbaa !5
  %900 = call ptr @s2n_strerror(i32 noundef %899, ptr noundef @.str.4)
  %901 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %902 = load i32, ptr %901, align 4, !tbaa !5
  %903 = call ptr @s2n_strerror_debug(i32 noundef %902, ptr noundef @.str.4)
  %904 = call ptr @__errno_location() #12
  %905 = load i32, ptr %904, align 4, !tbaa !5
  %906 = call ptr @strerror(i32 noundef %905) #11
  %907 = call ptr @__errno_location() #12
  %908 = load i32, ptr %907, align 4, !tbaa !5
  %909 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %896, ptr noundef @.str.5, i32 noundef %897, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 76, ptr noundef %900, ptr noundef %903, ptr noundef %906, i32 noundef %908) #11
  br label %910

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

911:                                              ; preds = %910
  br label %912

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

913:                                              ; No predecessors!
  br label %914

914:                                              ; preds = %913
  br label %915

915:                                              ; preds = %914, %855
  br label %916

916:                                              ; preds = %915
  br label %917

917:                                              ; preds = %916
  %918 = load ptr, ptr %32, align 8, !tbaa !9
  %919 = getelementptr inbounds %struct.s2n_connection, ptr %918, i32 0, i32 2
  store ptr %31, ptr %919, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %920 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %920, ptr %35, align 8, !tbaa !9
  br label %921

921:                                              ; preds = %917
  %922 = load i32, ptr @test_count, align 4, !tbaa !5
  %923 = add nsw i32 %922, 1
  store i32 %923, ptr @test_count, align 4, !tbaa !5
  %924 = load ptr, ptr %35, align 8, !tbaa !9
  %925 = icmp eq ptr %924, null
  br i1 %925, label %926, label %979

926:                                              ; preds = %921
  br label %927

927:                                              ; preds = %926
  br label %928

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

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

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

957:                                              ; preds = %935, %928
  %958 = load i32, ptr %36, align 4, !tbaa !5
  %959 = call ptr @__errno_location() #12
  store i32 %958, ptr %959, align 4, !tbaa !5
  %960 = load ptr, ptr @stderr, align 8, !tbaa !9
  %961 = load i32, ptr @test_count, align 4, !tbaa !5
  %962 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %963 = load i32, ptr %962, align 4, !tbaa !5
  %964 = call ptr @s2n_strerror(i32 noundef %963, ptr noundef @.str.4)
  %965 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %966 = load i32, ptr %965, align 4, !tbaa !5
  %967 = call ptr @s2n_strerror_debug(i32 noundef %966, ptr noundef @.str.4)
  %968 = call ptr @__errno_location() #12
  %969 = load i32, ptr %968, align 4, !tbaa !5
  %970 = call ptr @strerror(i32 noundef %969) #11
  %971 = call ptr @__errno_location() #12
  %972 = load i32, ptr %971, align 4, !tbaa !5
  %973 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %960, ptr noundef @.str.5, i32 noundef %961, ptr noundef @.str.23, ptr noundef @.str.1, i32 noundef 81, ptr noundef %964, ptr noundef %967, ptr noundef %970, i32 noundef %972) #11
  br label %974

974:                                              ; preds = %957, %940
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %975

975:                                              ; preds = %974
  br label %976

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

977:                                              ; No predecessors!
  br label %978

978:                                              ; preds = %977
  br label %979

979:                                              ; preds = %978, %921
  br label %980

980:                                              ; preds = %979
  br label %981

981:                                              ; preds = %980
  br label %982

982:                                              ; preds = %981
  %983 = load i32, ptr @test_count, align 4, !tbaa !5
  %984 = add nsw i32 %983, 1
  store i32 %984, ptr @test_count, align 4, !tbaa !5
  %985 = load ptr, ptr %35, align 8, !tbaa !9
  %986 = load ptr, ptr %18, align 8, !tbaa !9
  %987 = call i32 @s2n_connection_set_config(ptr noundef %985, ptr noundef %986)
  %988 = icmp eq i32 %987, -1
  br i1 %988, label %989, label %1042

989:                                              ; preds = %982
  br label %990

990:                                              ; preds = %989
  br label %991

991:                                              ; preds = %990
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #11
  %992 = call ptr @__errno_location() #12
  %993 = load i32, ptr %992, align 4, !tbaa !5
  store i32 %993, ptr %37, align 4, !tbaa !5
  %994 = load ptr, ptr @stderr, align 8, !tbaa !9
  %995 = call i32 @s2n_print_stacktrace(ptr noundef %994)
  %996 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %997 = trunc i8 %996 to i1
  br i1 %997, label %998, label %1020

998:                                              ; preds = %991
  %999 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1000 = call i32 @fileno(ptr noundef %999) #11
  %1001 = call i32 @isatty(i32 noundef %1000) #11
  %1002 = icmp ne i32 %1001, 0
  br i1 %1002, label %1003, label %1020

1003:                                             ; preds = %998
  %1004 = load i32, ptr %37, align 4, !tbaa !5
  %1005 = call ptr @__errno_location() #12
  store i32 %1004, ptr %1005, align 4, !tbaa !5
  %1006 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1007 = load i32, ptr @test_count, align 4, !tbaa !5
  %1008 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1009 = load i32, ptr %1008, align 4, !tbaa !5
  %1010 = call ptr @s2n_strerror(i32 noundef %1009, ptr noundef @.str.4)
  %1011 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1012 = load i32, ptr %1011, align 4, !tbaa !5
  %1013 = call ptr @s2n_strerror_debug(i32 noundef %1012, ptr noundef @.str.4)
  %1014 = call ptr @__errno_location() #12
  %1015 = load i32, ptr %1014, align 4, !tbaa !5
  %1016 = call ptr @strerror(i32 noundef %1015) #11
  %1017 = call ptr @__errno_location() #12
  %1018 = load i32, ptr %1017, align 4, !tbaa !5
  %1019 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1006, ptr noundef @.str.2, i32 noundef %1007, ptr noundef @.str.24, ptr noundef @.str.1, i32 noundef 82, ptr noundef %1010, ptr noundef %1013, ptr noundef %1016, i32 noundef %1018) #11
  br label %1037

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

1037:                                             ; preds = %1020, %1003
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %1038

1038:                                             ; preds = %1037
  br label %1039

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

1040:                                             ; No predecessors!
  br label %1041

1041:                                             ; preds = %1040
  br label %1042

1042:                                             ; preds = %1041, %982
  br label %1043

1043:                                             ; preds = %1042
  br label %1044

1044:                                             ; preds = %1043
  %1045 = load ptr, ptr %35, align 8, !tbaa !9
  %1046 = getelementptr inbounds %struct.s2n_connection, ptr %1045, i32 0, i32 2
  store ptr %31, ptr %1046, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  call void @llvm.memset.p0.i64(ptr align 4 %38, i8 0, i64 8, i1 false)
  br label %1047

1047:                                             ; preds = %1044
  %1048 = load i32, ptr @test_count, align 4, !tbaa !5
  %1049 = add nsw i32 %1048, 1
  store i32 %1049, ptr @test_count, align 4, !tbaa !5
  %1050 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef %38)
  %1051 = icmp eq i32 %1050, -1
  br i1 %1051, label %1052, label %1105

1052:                                             ; preds = %1047
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

1054:                                             ; preds = %1053
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #11
  %1055 = call ptr @__errno_location() #12
  %1056 = load i32, ptr %1055, align 4, !tbaa !5
  store i32 %1056, ptr %39, align 4, !tbaa !5
  %1057 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1058 = call i32 @s2n_print_stacktrace(ptr noundef %1057)
  %1059 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1060 = trunc i8 %1059 to i1
  br i1 %1060, label %1061, label %1083

1061:                                             ; preds = %1054
  %1062 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1063 = call i32 @fileno(ptr noundef %1062) #11
  %1064 = call i32 @isatty(i32 noundef %1063) #11
  %1065 = icmp ne i32 %1064, 0
  br i1 %1065, label %1066, label %1083

1066:                                             ; preds = %1061
  %1067 = load i32, ptr %39, align 4, !tbaa !5
  %1068 = call ptr @__errno_location() #12
  store i32 %1067, ptr %1068, align 4, !tbaa !5
  %1069 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1070 = load i32, ptr @test_count, align 4, !tbaa !5
  %1071 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1072 = load i32, ptr %1071, align 4, !tbaa !5
  %1073 = call ptr @s2n_strerror(i32 noundef %1072, ptr noundef @.str.4)
  %1074 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1075 = load i32, ptr %1074, align 4, !tbaa !5
  %1076 = call ptr @s2n_strerror_debug(i32 noundef %1075, ptr noundef @.str.4)
  %1077 = call ptr @__errno_location() #12
  %1078 = load i32, ptr %1077, align 4, !tbaa !5
  %1079 = call ptr @strerror(i32 noundef %1078) #11
  %1080 = call ptr @__errno_location() #12
  %1081 = load i32, ptr %1080, align 4, !tbaa !5
  %1082 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1069, ptr noundef @.str.2, i32 noundef %1070, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 86, ptr noundef %1073, ptr noundef %1076, ptr noundef %1079, i32 noundef %1081) #11
  br label %1100

1083:                                             ; preds = %1061, %1054
  %1084 = load i32, ptr %39, align 4, !tbaa !5
  %1085 = call ptr @__errno_location() #12
  store i32 %1084, ptr %1085, align 4, !tbaa !5
  %1086 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1087 = load i32, ptr @test_count, align 4, !tbaa !5
  %1088 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1089 = load i32, ptr %1088, align 4, !tbaa !5
  %1090 = call ptr @s2n_strerror(i32 noundef %1089, ptr noundef @.str.4)
  %1091 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1092 = load i32, ptr %1091, align 4, !tbaa !5
  %1093 = call ptr @s2n_strerror_debug(i32 noundef %1092, ptr noundef @.str.4)
  %1094 = call ptr @__errno_location() #12
  %1095 = load i32, ptr %1094, align 4, !tbaa !5
  %1096 = call ptr @strerror(i32 noundef %1095) #11
  %1097 = call ptr @__errno_location() #12
  %1098 = load i32, ptr %1097, align 4, !tbaa !5
  %1099 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1086, ptr noundef @.str.5, i32 noundef %1087, ptr noundef @.str.25, ptr noundef @.str.1, i32 noundef 86, ptr noundef %1090, ptr noundef %1093, ptr noundef %1096, i32 noundef %1098) #11
  br label %1100

1100:                                             ; preds = %1083, %1066
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #11
  br label %1101

1101:                                             ; preds = %1100
  br label %1102

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

1103:                                             ; No predecessors!
  br label %1104

1104:                                             ; preds = %1103
  br label %1105

1105:                                             ; preds = %1104, %1047
  br label %1106

1106:                                             ; preds = %1105
  br label %1107

1107:                                             ; preds = %1106
  br label %1108

1108:                                             ; preds = %1107
  %1109 = load i32, ptr @test_count, align 4, !tbaa !5
  %1110 = add nsw i32 %1109, 1
  store i32 %1110, ptr @test_count, align 4, !tbaa !5
  %1111 = load ptr, ptr %32, align 8, !tbaa !9
  %1112 = call i32 @s2n_connection_set_io_pair(ptr noundef %1111, ptr noundef %38)
  %1113 = icmp eq i32 %1112, -1
  br i1 %1113, label %1114, label %1167

1114:                                             ; preds = %1108
  br label %1115

1115:                                             ; preds = %1114
  br label %1116

1116:                                             ; preds = %1115
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #11
  %1117 = call ptr @__errno_location() #12
  %1118 = load i32, ptr %1117, align 4, !tbaa !5
  store i32 %1118, ptr %40, align 4, !tbaa !5
  %1119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1120 = call i32 @s2n_print_stacktrace(ptr noundef %1119)
  %1121 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1122 = trunc i8 %1121 to i1
  br i1 %1122, label %1123, label %1145

1123:                                             ; preds = %1116
  %1124 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1125 = call i32 @fileno(ptr noundef %1124) #11
  %1126 = call i32 @isatty(i32 noundef %1125) #11
  %1127 = icmp ne i32 %1126, 0
  br i1 %1127, label %1128, label %1145

1128:                                             ; preds = %1123
  %1129 = load i32, ptr %40, align 4, !tbaa !5
  %1130 = call ptr @__errno_location() #12
  store i32 %1129, ptr %1130, align 4, !tbaa !5
  %1131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1132 = load i32, ptr @test_count, align 4, !tbaa !5
  %1133 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1134 = load i32, ptr %1133, align 4, !tbaa !5
  %1135 = call ptr @s2n_strerror(i32 noundef %1134, ptr noundef @.str.4)
  %1136 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1137 = load i32, ptr %1136, align 4, !tbaa !5
  %1138 = call ptr @s2n_strerror_debug(i32 noundef %1137, ptr noundef @.str.4)
  %1139 = call ptr @__errno_location() #12
  %1140 = load i32, ptr %1139, align 4, !tbaa !5
  %1141 = call ptr @strerror(i32 noundef %1140) #11
  %1142 = call ptr @__errno_location() #12
  %1143 = load i32, ptr %1142, align 4, !tbaa !5
  %1144 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1131, ptr noundef @.str.2, i32 noundef %1132, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 87, ptr noundef %1135, ptr noundef %1138, ptr noundef %1141, i32 noundef %1143) #11
  br label %1162

1145:                                             ; preds = %1123, %1116
  %1146 = load i32, ptr %40, align 4, !tbaa !5
  %1147 = call ptr @__errno_location() #12
  store i32 %1146, ptr %1147, align 4, !tbaa !5
  %1148 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1149 = load i32, ptr @test_count, align 4, !tbaa !5
  %1150 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1151 = load i32, ptr %1150, align 4, !tbaa !5
  %1152 = call ptr @s2n_strerror(i32 noundef %1151, ptr noundef @.str.4)
  %1153 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1154 = load i32, ptr %1153, align 4, !tbaa !5
  %1155 = call ptr @s2n_strerror_debug(i32 noundef %1154, ptr noundef @.str.4)
  %1156 = call ptr @__errno_location() #12
  %1157 = load i32, ptr %1156, align 4, !tbaa !5
  %1158 = call ptr @strerror(i32 noundef %1157) #11
  %1159 = call ptr @__errno_location() #12
  %1160 = load i32, ptr %1159, align 4, !tbaa !5
  %1161 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1148, ptr noundef @.str.5, i32 noundef %1149, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 87, ptr noundef %1152, ptr noundef %1155, ptr noundef %1158, i32 noundef %1160) #11
  br label %1162

1162:                                             ; preds = %1145, %1128
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  br label %1163

1163:                                             ; preds = %1162
  br label %1164

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

1165:                                             ; No predecessors!
  br label %1166

1166:                                             ; preds = %1165
  br label %1167

1167:                                             ; preds = %1166, %1108
  br label %1168

1168:                                             ; preds = %1167
  br label %1169

1169:                                             ; preds = %1168
  br label %1170

1170:                                             ; preds = %1169
  %1171 = load i32, ptr @test_count, align 4, !tbaa !5
  %1172 = add nsw i32 %1171, 1
  store i32 %1172, ptr @test_count, align 4, !tbaa !5
  %1173 = load ptr, ptr %35, align 8, !tbaa !9
  %1174 = call i32 @s2n_connection_set_io_pair(ptr noundef %1173, ptr noundef %38)
  %1175 = icmp eq i32 %1174, -1
  br i1 %1175, label %1176, label %1229

1176:                                             ; preds = %1170
  br label %1177

1177:                                             ; preds = %1176
  br label %1178

1178:                                             ; preds = %1177
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #11
  %1179 = call ptr @__errno_location() #12
  %1180 = load i32, ptr %1179, align 4, !tbaa !5
  store i32 %1180, ptr %41, align 4, !tbaa !5
  %1181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1182 = call i32 @s2n_print_stacktrace(ptr noundef %1181)
  %1183 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1184 = trunc i8 %1183 to i1
  br i1 %1184, label %1185, label %1207

1185:                                             ; preds = %1178
  %1186 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1187 = call i32 @fileno(ptr noundef %1186) #11
  %1188 = call i32 @isatty(i32 noundef %1187) #11
  %1189 = icmp ne i32 %1188, 0
  br i1 %1189, label %1190, label %1207

1190:                                             ; preds = %1185
  %1191 = load i32, ptr %41, align 4, !tbaa !5
  %1192 = call ptr @__errno_location() #12
  store i32 %1191, ptr %1192, align 4, !tbaa !5
  %1193 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1194 = load i32, ptr @test_count, align 4, !tbaa !5
  %1195 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1196 = load i32, ptr %1195, align 4, !tbaa !5
  %1197 = call ptr @s2n_strerror(i32 noundef %1196, ptr noundef @.str.4)
  %1198 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1199 = load i32, ptr %1198, align 4, !tbaa !5
  %1200 = call ptr @s2n_strerror_debug(i32 noundef %1199, ptr noundef @.str.4)
  %1201 = call ptr @__errno_location() #12
  %1202 = load i32, ptr %1201, align 4, !tbaa !5
  %1203 = call ptr @strerror(i32 noundef %1202) #11
  %1204 = call ptr @__errno_location() #12
  %1205 = load i32, ptr %1204, align 4, !tbaa !5
  %1206 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1193, ptr noundef @.str.2, i32 noundef %1194, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 88, ptr noundef %1197, ptr noundef %1200, ptr noundef %1203, i32 noundef %1205) #11
  br label %1224

1207:                                             ; preds = %1185, %1178
  %1208 = load i32, ptr %41, align 4, !tbaa !5
  %1209 = call ptr @__errno_location() #12
  store i32 %1208, ptr %1209, align 4, !tbaa !5
  %1210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1211 = load i32, ptr @test_count, align 4, !tbaa !5
  %1212 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1213 = load i32, ptr %1212, align 4, !tbaa !5
  %1214 = call ptr @s2n_strerror(i32 noundef %1213, ptr noundef @.str.4)
  %1215 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1216 = load i32, ptr %1215, align 4, !tbaa !5
  %1217 = call ptr @s2n_strerror_debug(i32 noundef %1216, ptr noundef @.str.4)
  %1218 = call ptr @__errno_location() #12
  %1219 = load i32, ptr %1218, align 4, !tbaa !5
  %1220 = call ptr @strerror(i32 noundef %1219) #11
  %1221 = call ptr @__errno_location() #12
  %1222 = load i32, ptr %1221, align 4, !tbaa !5
  %1223 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1210, ptr noundef @.str.5, i32 noundef %1211, ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 88, ptr noundef %1214, ptr noundef %1217, ptr noundef %1220, i32 noundef %1222) #11
  br label %1224

1224:                                             ; preds = %1207, %1190
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  br label %1225

1225:                                             ; preds = %1224
  br label %1226

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

1227:                                             ; No predecessors!
  br label %1228

1228:                                             ; preds = %1227
  br label %1229

1229:                                             ; preds = %1228, %1170
  br label %1230

1230:                                             ; preds = %1229
  br label %1231

1231:                                             ; preds = %1230
  br label %1232

1232:                                             ; preds = %1231
  %1233 = load i32, ptr @test_count, align 4, !tbaa !5
  %1234 = add nsw i32 %1233, 1
  store i32 %1234, ptr @test_count, align 4, !tbaa !5
  %1235 = load ptr, ptr %35, align 8, !tbaa !9
  %1236 = load ptr, ptr %32, align 8, !tbaa !9
  %1237 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %1235, ptr noundef %1236)
  %1238 = icmp eq i32 %1237, -1
  br i1 %1238, label %1239, label %1292

1239:                                             ; preds = %1232
  br label %1240

1240:                                             ; preds = %1239
  br label %1241

1241:                                             ; preds = %1240
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #11
  %1242 = call ptr @__errno_location() #12
  %1243 = load i32, ptr %1242, align 4, !tbaa !5
  store i32 %1243, ptr %42, align 4, !tbaa !5
  %1244 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1245 = call i32 @s2n_print_stacktrace(ptr noundef %1244)
  %1246 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1247 = trunc i8 %1246 to i1
  br i1 %1247, label %1248, label %1270

1248:                                             ; preds = %1241
  %1249 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1250 = call i32 @fileno(ptr noundef %1249) #11
  %1251 = call i32 @isatty(i32 noundef %1250) #11
  %1252 = icmp ne i32 %1251, 0
  br i1 %1252, label %1253, label %1270

1253:                                             ; preds = %1248
  %1254 = load i32, ptr %42, align 4, !tbaa !5
  %1255 = call ptr @__errno_location() #12
  store i32 %1254, ptr %1255, align 4, !tbaa !5
  %1256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1257 = load i32, ptr @test_count, align 4, !tbaa !5
  %1258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1259 = load i32, ptr %1258, align 4, !tbaa !5
  %1260 = call ptr @s2n_strerror(i32 noundef %1259, ptr noundef @.str.4)
  %1261 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1262 = load i32, ptr %1261, align 4, !tbaa !5
  %1263 = call ptr @s2n_strerror_debug(i32 noundef %1262, ptr noundef @.str.4)
  %1264 = call ptr @__errno_location() #12
  %1265 = load i32, ptr %1264, align 4, !tbaa !5
  %1266 = call ptr @strerror(i32 noundef %1265) #11
  %1267 = call ptr @__errno_location() #12
  %1268 = load i32, ptr %1267, align 4, !tbaa !5
  %1269 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1256, ptr noundef @.str.2, i32 noundef %1257, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 90, ptr noundef %1260, ptr noundef %1263, ptr noundef %1266, i32 noundef %1268) #11
  br label %1287

1270:                                             ; preds = %1248, %1241
  %1271 = load i32, ptr %42, align 4, !tbaa !5
  %1272 = call ptr @__errno_location() #12
  store i32 %1271, ptr %1272, align 4, !tbaa !5
  %1273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1274 = load i32, ptr @test_count, align 4, !tbaa !5
  %1275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1276 = load i32, ptr %1275, align 4, !tbaa !5
  %1277 = call ptr @s2n_strerror(i32 noundef %1276, ptr noundef @.str.4)
  %1278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1279 = load i32, ptr %1278, align 4, !tbaa !5
  %1280 = call ptr @s2n_strerror_debug(i32 noundef %1279, ptr noundef @.str.4)
  %1281 = call ptr @__errno_location() #12
  %1282 = load i32, ptr %1281, align 4, !tbaa !5
  %1283 = call ptr @strerror(i32 noundef %1282) #11
  %1284 = call ptr @__errno_location() #12
  %1285 = load i32, ptr %1284, align 4, !tbaa !5
  %1286 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1273, ptr noundef @.str.5, i32 noundef %1274, ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 90, ptr noundef %1277, ptr noundef %1280, ptr noundef %1283, i32 noundef %1285) #11
  br label %1287

1287:                                             ; preds = %1270, %1253
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  br label %1288

1288:                                             ; preds = %1287
  br label %1289

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

1290:                                             ; No predecessors!
  br label %1291

1291:                                             ; preds = %1290
  br label %1292

1292:                                             ; preds = %1291, %1232
  br label %1293

1293:                                             ; preds = %1292
  br label %1294

1294:                                             ; preds = %1293
  call void @llvm.lifetime.start.p0(i64 2, ptr %43) #11
  call void @llvm.memset.p0.i64(ptr align 1 %43, i8 0, i64 2, i1 false)
  br label %1295

1295:                                             ; preds = %1294
  %1296 = load i32, ptr @test_count, align 4, !tbaa !5
  %1297 = add nsw i32 %1296, 1
  store i32 %1297, ptr @test_count, align 4, !tbaa !5
  %1298 = load ptr, ptr %35, align 8, !tbaa !9
  %1299 = getelementptr inbounds [2 x i8], ptr %43, i64 0, i64 0
  %1300 = getelementptr inbounds [2 x i8], ptr %43, i64 0, i64 0
  %1301 = getelementptr inbounds i8, ptr %1300, i64 1
  %1302 = call i32 @s2n_connection_get_cipher_iana_value(ptr noundef %1298, ptr noundef %1299, ptr noundef %1301)
  %1303 = icmp eq i32 %1302, -1
  br i1 %1303, label %1304, label %1357

1304:                                             ; preds = %1295
  br label %1305

1305:                                             ; preds = %1304
  br label %1306

1306:                                             ; preds = %1305
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  %1307 = call ptr @__errno_location() #12
  %1308 = load i32, ptr %1307, align 4, !tbaa !5
  store i32 %1308, ptr %44, align 4, !tbaa !5
  %1309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1310 = call i32 @s2n_print_stacktrace(ptr noundef %1309)
  %1311 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1312 = trunc i8 %1311 to i1
  br i1 %1312, label %1313, label %1335

1313:                                             ; preds = %1306
  %1314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1315 = call i32 @fileno(ptr noundef %1314) #11
  %1316 = call i32 @isatty(i32 noundef %1315) #11
  %1317 = icmp ne i32 %1316, 0
  br i1 %1317, label %1318, label %1335

1318:                                             ; preds = %1313
  %1319 = load i32, ptr %44, align 4, !tbaa !5
  %1320 = call ptr @__errno_location() #12
  store i32 %1319, ptr %1320, align 4, !tbaa !5
  %1321 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1322 = load i32, ptr @test_count, align 4, !tbaa !5
  %1323 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1324 = load i32, ptr %1323, align 4, !tbaa !5
  %1325 = call ptr @s2n_strerror(i32 noundef %1324, ptr noundef @.str.4)
  %1326 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1327 = load i32, ptr %1326, align 4, !tbaa !5
  %1328 = call ptr @s2n_strerror_debug(i32 noundef %1327, ptr noundef @.str.4)
  %1329 = call ptr @__errno_location() #12
  %1330 = load i32, ptr %1329, align 4, !tbaa !5
  %1331 = call ptr @strerror(i32 noundef %1330) #11
  %1332 = call ptr @__errno_location() #12
  %1333 = load i32, ptr %1332, align 4, !tbaa !5
  %1334 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1321, ptr noundef @.str.2, i32 noundef %1322, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 94, ptr noundef %1325, ptr noundef %1328, ptr noundef %1331, i32 noundef %1333) #11
  br label %1352

1335:                                             ; preds = %1313, %1306
  %1336 = load i32, ptr %44, align 4, !tbaa !5
  %1337 = call ptr @__errno_location() #12
  store i32 %1336, ptr %1337, align 4, !tbaa !5
  %1338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1339 = load i32, ptr @test_count, align 4, !tbaa !5
  %1340 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1341 = load i32, ptr %1340, align 4, !tbaa !5
  %1342 = call ptr @s2n_strerror(i32 noundef %1341, ptr noundef @.str.4)
  %1343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1344 = load i32, ptr %1343, align 4, !tbaa !5
  %1345 = call ptr @s2n_strerror_debug(i32 noundef %1344, ptr noundef @.str.4)
  %1346 = call ptr @__errno_location() #12
  %1347 = load i32, ptr %1346, align 4, !tbaa !5
  %1348 = call ptr @strerror(i32 noundef %1347) #11
  %1349 = call ptr @__errno_location() #12
  %1350 = load i32, ptr %1349, align 4, !tbaa !5
  %1351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1338, ptr noundef @.str.5, i32 noundef %1339, ptr noundef @.str.29, ptr noundef @.str.1, i32 noundef 94, ptr noundef %1342, ptr noundef %1345, ptr noundef %1348, i32 noundef %1350) #11
  br label %1352

1352:                                             ; preds = %1335, %1318
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %1353

1353:                                             ; preds = %1352
  br label %1354

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

1355:                                             ; No predecessors!
  br label %1356

1356:                                             ; preds = %1355
  br label %1357

1357:                                             ; preds = %1356, %1295
  br label %1358

1358:                                             ; preds = %1357
  br label %1359

1359:                                             ; preds = %1358
  br label %1360

1360:                                             ; preds = %1359
  br label %1361

1361:                                             ; preds = %1360
  %1362 = load i32, ptr @test_count, align 4, !tbaa !5
  %1363 = add nsw i32 %1362, 1
  store i32 %1363, ptr @test_count, align 4, !tbaa !5
  %1364 = getelementptr inbounds [2 x i8], ptr %43, i64 0, i64 0
  %1365 = getelementptr inbounds %struct.s2n_cipher_suite, ptr %27, i32 0, i32 3
  %1366 = getelementptr inbounds [2 x i8], ptr %1365, i64 0, i64 0
  %1367 = call i32 @memcmp(ptr noundef %1364, ptr noundef %1366, i64 noundef 2) #14
  %1368 = icmp eq i32 %1367, 0
  br i1 %1368, label %1422, label %1369

1369:                                             ; preds = %1361
  br label %1370

1370:                                             ; preds = %1369
  br label %1371

1371:                                             ; preds = %1370
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #11
  %1372 = call ptr @__errno_location() #12
  %1373 = load i32, ptr %1372, align 4, !tbaa !5
  store i32 %1373, ptr %45, align 4, !tbaa !5
  %1374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1375 = call i32 @s2n_print_stacktrace(ptr noundef %1374)
  %1376 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1377 = trunc i8 %1376 to i1
  br i1 %1377, label %1378, label %1400

1378:                                             ; preds = %1371
  %1379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1380 = call i32 @fileno(ptr noundef %1379) #11
  %1381 = call i32 @isatty(i32 noundef %1380) #11
  %1382 = icmp ne i32 %1381, 0
  br i1 %1382, label %1383, label %1400

1383:                                             ; preds = %1378
  %1384 = load i32, ptr %45, align 4, !tbaa !5
  %1385 = call ptr @__errno_location() #12
  store i32 %1384, ptr %1385, align 4, !tbaa !5
  %1386 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1387 = load i32, ptr @test_count, align 4, !tbaa !5
  %1388 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1389 = load i32, ptr %1388, align 4, !tbaa !5
  %1390 = call ptr @s2n_strerror(i32 noundef %1389, ptr noundef @.str.4)
  %1391 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1392 = load i32, ptr %1391, align 4, !tbaa !5
  %1393 = call ptr @s2n_strerror_debug(i32 noundef %1392, ptr noundef @.str.4)
  %1394 = call ptr @__errno_location() #12
  %1395 = load i32, ptr %1394, align 4, !tbaa !5
  %1396 = call ptr @strerror(i32 noundef %1395) #11
  %1397 = call ptr @__errno_location() #12
  %1398 = load i32, ptr %1397, align 4, !tbaa !5
  %1399 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1386, ptr noundef @.str.2, i32 noundef %1387, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 96, ptr noundef %1390, ptr noundef %1393, ptr noundef %1396, i32 noundef %1398) #11
  br label %1417

1400:                                             ; preds = %1378, %1371
  %1401 = load i32, ptr %45, align 4, !tbaa !5
  %1402 = call ptr @__errno_location() #12
  store i32 %1401, ptr %1402, align 4, !tbaa !5
  %1403 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1404 = load i32, ptr @test_count, align 4, !tbaa !5
  %1405 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1406 = load i32, ptr %1405, align 4, !tbaa !5
  %1407 = call ptr @s2n_strerror(i32 noundef %1406, ptr noundef @.str.4)
  %1408 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1409 = load i32, ptr %1408, align 4, !tbaa !5
  %1410 = call ptr @s2n_strerror_debug(i32 noundef %1409, ptr noundef @.str.4)
  %1411 = call ptr @__errno_location() #12
  %1412 = load i32, ptr %1411, align 4, !tbaa !5
  %1413 = call ptr @strerror(i32 noundef %1412) #11
  %1414 = call ptr @__errno_location() #12
  %1415 = load i32, ptr %1414, align 4, !tbaa !5
  %1416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1403, ptr noundef @.str.5, i32 noundef %1404, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 96, ptr noundef %1407, ptr noundef %1410, ptr noundef %1413, i32 noundef %1415) #11
  br label %1417

1417:                                             ; preds = %1400, %1383
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  br label %1418

1418:                                             ; preds = %1417
  br label %1419

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

1420:                                             ; No predecessors!
  br label %1421

1421:                                             ; preds = %1420
  br label %1422

1422:                                             ; preds = %1421, %1361
  br label %1423

1423:                                             ; preds = %1422
  br label %1424

1424:                                             ; preds = %1423
  br label %1425

1425:                                             ; preds = %1424
  br label %1426

1426:                                             ; preds = %1425
  br label %1427

1427:                                             ; preds = %1426
  %1428 = load i32, ptr @test_count, align 4, !tbaa !5
  %1429 = add nsw i32 %1428, 1
  store i32 %1429, ptr @test_count, align 4, !tbaa !5
  %1430 = load ptr, ptr %32, align 8, !tbaa !9
  %1431 = load ptr, ptr %35, align 8, !tbaa !9
  %1432 = call i32 @s2n_send_and_recv_test(ptr noundef %1430, ptr noundef %1431)
  %1433 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  store i32 %1432, ptr %1433, align 4
  %1434 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  %1435 = load i32, ptr %1434, align 4
  %1436 = call zeroext i1 @s2n_result_is_ok(i32 %1435)
  br i1 %1436, label %1490, label %1437

1437:                                             ; preds = %1427
  br label %1438

1438:                                             ; preds = %1437
  br label %1439

1439:                                             ; preds = %1438
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #11
  %1440 = call ptr @__errno_location() #12
  %1441 = load i32, ptr %1440, align 4, !tbaa !5
  store i32 %1441, ptr %47, align 4, !tbaa !5
  %1442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1443 = call i32 @s2n_print_stacktrace(ptr noundef %1442)
  %1444 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1445 = trunc i8 %1444 to i1
  br i1 %1445, label %1446, label %1468

1446:                                             ; preds = %1439
  %1447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1448 = call i32 @fileno(ptr noundef %1447) #11
  %1449 = call i32 @isatty(i32 noundef %1448) #11
  %1450 = icmp ne i32 %1449, 0
  br i1 %1450, label %1451, label %1468

1451:                                             ; preds = %1446
  %1452 = load i32, ptr %47, align 4, !tbaa !5
  %1453 = call ptr @__errno_location() #12
  store i32 %1452, ptr %1453, align 4, !tbaa !5
  %1454 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1455 = load i32, ptr @test_count, align 4, !tbaa !5
  %1456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1457 = load i32, ptr %1456, align 4, !tbaa !5
  %1458 = call ptr @s2n_strerror(i32 noundef %1457, ptr noundef @.str.4)
  %1459 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1460 = load i32, ptr %1459, align 4, !tbaa !5
  %1461 = call ptr @s2n_strerror_debug(i32 noundef %1460, ptr noundef @.str.4)
  %1462 = call ptr @__errno_location() #12
  %1463 = load i32, ptr %1462, align 4, !tbaa !5
  %1464 = call ptr @strerror(i32 noundef %1463) #11
  %1465 = call ptr @__errno_location() #12
  %1466 = load i32, ptr %1465, align 4, !tbaa !5
  %1467 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1454, ptr noundef @.str.2, i32 noundef %1455, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 98, ptr noundef %1458, ptr noundef %1461, ptr noundef %1464, i32 noundef %1466) #11
  br label %1485

1468:                                             ; preds = %1446, %1439
  %1469 = load i32, ptr %47, align 4, !tbaa !5
  %1470 = call ptr @__errno_location() #12
  store i32 %1469, ptr %1470, align 4, !tbaa !5
  %1471 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1472 = load i32, ptr @test_count, align 4, !tbaa !5
  %1473 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1474 = load i32, ptr %1473, align 4, !tbaa !5
  %1475 = call ptr @s2n_strerror(i32 noundef %1474, ptr noundef @.str.4)
  %1476 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1477 = load i32, ptr %1476, align 4, !tbaa !5
  %1478 = call ptr @s2n_strerror_debug(i32 noundef %1477, ptr noundef @.str.4)
  %1479 = call ptr @__errno_location() #12
  %1480 = load i32, ptr %1479, align 4, !tbaa !5
  %1481 = call ptr @strerror(i32 noundef %1480) #11
  %1482 = call ptr @__errno_location() #12
  %1483 = load i32, ptr %1482, align 4, !tbaa !5
  %1484 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1471, ptr noundef @.str.5, i32 noundef %1472, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 98, ptr noundef %1475, ptr noundef %1478, ptr noundef %1481, i32 noundef %1483) #11
  br label %1485

1485:                                             ; preds = %1468, %1451
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  br label %1486

1486:                                             ; preds = %1485
  br label %1487

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

1488:                                             ; No predecessors!
  br label %1489

1489:                                             ; preds = %1488
  br label %1490

1490:                                             ; preds = %1489, %1427
  br label %1491

1491:                                             ; preds = %1490
  br label %1492

1492:                                             ; preds = %1491
  br label %1493

1493:                                             ; preds = %1492
  %1494 = load i32, ptr @test_count, align 4, !tbaa !5
  %1495 = add nsw i32 %1494, 1
  store i32 %1495, ptr @test_count, align 4, !tbaa !5
  %1496 = load ptr, ptr %35, align 8, !tbaa !9
  %1497 = load ptr, ptr %32, align 8, !tbaa !9
  %1498 = call i32 @s2n_send_and_recv_test(ptr noundef %1496, ptr noundef %1497)
  %1499 = getelementptr inbounds %struct.s2n_result, ptr %48, i32 0, i32 0
  store i32 %1498, ptr %1499, align 4
  %1500 = getelementptr inbounds %struct.s2n_result, ptr %48, i32 0, i32 0
  %1501 = load i32, ptr %1500, align 4
  %1502 = call zeroext i1 @s2n_result_is_ok(i32 %1501)
  br i1 %1502, label %1556, label %1503

1503:                                             ; preds = %1493
  br label %1504

1504:                                             ; preds = %1503
  br label %1505

1505:                                             ; preds = %1504
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #11
  %1506 = call ptr @__errno_location() #12
  %1507 = load i32, ptr %1506, align 4, !tbaa !5
  store i32 %1507, ptr %49, align 4, !tbaa !5
  %1508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1509 = call i32 @s2n_print_stacktrace(ptr noundef %1508)
  %1510 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1511 = trunc i8 %1510 to i1
  br i1 %1511, label %1512, label %1534

1512:                                             ; preds = %1505
  %1513 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1514 = call i32 @fileno(ptr noundef %1513) #11
  %1515 = call i32 @isatty(i32 noundef %1514) #11
  %1516 = icmp ne i32 %1515, 0
  br i1 %1516, label %1517, label %1534

1517:                                             ; preds = %1512
  %1518 = load i32, ptr %49, align 4, !tbaa !5
  %1519 = call ptr @__errno_location() #12
  store i32 %1518, ptr %1519, align 4, !tbaa !5
  %1520 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1521 = load i32, ptr @test_count, align 4, !tbaa !5
  %1522 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1523 = load i32, ptr %1522, align 4, !tbaa !5
  %1524 = call ptr @s2n_strerror(i32 noundef %1523, ptr noundef @.str.4)
  %1525 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1526 = load i32, ptr %1525, align 4, !tbaa !5
  %1527 = call ptr @s2n_strerror_debug(i32 noundef %1526, ptr noundef @.str.4)
  %1528 = call ptr @__errno_location() #12
  %1529 = load i32, ptr %1528, align 4, !tbaa !5
  %1530 = call ptr @strerror(i32 noundef %1529) #11
  %1531 = call ptr @__errno_location() #12
  %1532 = load i32, ptr %1531, align 4, !tbaa !5
  %1533 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1520, ptr noundef @.str.2, i32 noundef %1521, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 99, ptr noundef %1524, ptr noundef %1527, ptr noundef %1530, i32 noundef %1532) #11
  br label %1551

1534:                                             ; preds = %1512, %1505
  %1535 = load i32, ptr %49, align 4, !tbaa !5
  %1536 = call ptr @__errno_location() #12
  store i32 %1535, ptr %1536, align 4, !tbaa !5
  %1537 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1538 = load i32, ptr @test_count, align 4, !tbaa !5
  %1539 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1540 = load i32, ptr %1539, align 4, !tbaa !5
  %1541 = call ptr @s2n_strerror(i32 noundef %1540, ptr noundef @.str.4)
  %1542 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1543 = load i32, ptr %1542, align 4, !tbaa !5
  %1544 = call ptr @s2n_strerror_debug(i32 noundef %1543, ptr noundef @.str.4)
  %1545 = call ptr @__errno_location() #12
  %1546 = load i32, ptr %1545, align 4, !tbaa !5
  %1547 = call ptr @strerror(i32 noundef %1546) #11
  %1548 = call ptr @__errno_location() #12
  %1549 = load i32, ptr %1548, align 4, !tbaa !5
  %1550 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1537, ptr noundef @.str.5, i32 noundef %1538, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 99, ptr noundef %1541, ptr noundef %1544, ptr noundef %1547, i32 noundef %1549) #11
  br label %1551

1551:                                             ; preds = %1534, %1517
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  br label %1552

1552:                                             ; preds = %1551
  br label %1553

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

1554:                                             ; No predecessors!
  br label %1555

1555:                                             ; preds = %1554
  br label %1556

1556:                                             ; preds = %1555, %1493
  br label %1557

1557:                                             ; preds = %1556
  br label %1558

1558:                                             ; preds = %1557
  %1559 = load i64, ptr %22, align 8, !tbaa !15
  %1560 = add i64 %1559, 1
  store i64 %1560, ptr %22, align 8, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 2, ptr %43) #11
  %1561 = call i32 @s2n_io_pair_close(ptr noundef %38)
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  %1562 = call i32 @s2n_connection_ptr_free(ptr noundef %35)
  %1563 = getelementptr inbounds %struct.s2n_result, ptr %50, i32 0, i32 0
  store i32 %1562, ptr %1563, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  %1564 = call i32 @s2n_connection_ptr_free(ptr noundef %32)
  %1565 = getelementptr inbounds %struct.s2n_result, ptr %51, i32 0, i32 0
  store i32 %1564, ptr %1565, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  store i32 0, ptr %24, align 4
  br label %1566

1566:                                             ; preds = %1558, %787, %778
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 104, ptr %27) #11
  %1567 = load i32, ptr %24, align 4
  switch i32 %1567, label %1804 [
    i32 0, label %1568
    i32 77, label %1569
  ]

1568:                                             ; preds = %1566
  br label %1569

1569:                                             ; preds = %1568, %1566
  %1570 = load i64, ptr %26, align 8, !tbaa !15
  %1571 = add i64 %1570, 1
  store i64 %1571, ptr %26, align 8, !tbaa !15
  br label %748, !llvm.loop !60

1572:                                             ; preds = %753
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #11
  br label %1573

1573:                                             ; preds = %1572
  %1574 = load i64, ptr %23, align 8, !tbaa !15
  %1575 = add i64 %1574, 1
  store i64 %1575, ptr %23, align 8, !tbaa !15
  br label %735, !llvm.loop !62

1576:                                             ; preds = %740
  br label %1577

1577:                                             ; preds = %1576
  %1578 = load i32, ptr @test_count, align 4, !tbaa !5
  %1579 = add nsw i32 %1578, 1
  store i32 %1579, ptr @test_count, align 4, !tbaa !5
  %1580 = load i64, ptr %22, align 8, !tbaa !15
  %1581 = icmp ugt i64 %1580, 0
  br i1 %1581, label %1635, label %1582

1582:                                             ; preds = %1577
  br label %1583

1583:                                             ; preds = %1582
  br label %1584

1584:                                             ; preds = %1583
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #11
  %1585 = call ptr @__errno_location() #12
  %1586 = load i32, ptr %1585, align 4, !tbaa !5
  store i32 %1586, ptr %52, align 4, !tbaa !5
  %1587 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1588 = call i32 @s2n_print_stacktrace(ptr noundef %1587)
  %1589 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1590 = trunc i8 %1589 to i1
  br i1 %1590, label %1591, label %1613

1591:                                             ; preds = %1584
  %1592 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1593 = call i32 @fileno(ptr noundef %1592) #11
  %1594 = call i32 @isatty(i32 noundef %1593) #11
  %1595 = icmp ne i32 %1594, 0
  br i1 %1595, label %1596, label %1613

1596:                                             ; preds = %1591
  %1597 = load i32, ptr %52, align 4, !tbaa !5
  %1598 = call ptr @__errno_location() #12
  store i32 %1597, ptr %1598, align 4, !tbaa !5
  %1599 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1600 = load i32, ptr @test_count, align 4, !tbaa !5
  %1601 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1602 = load i32, ptr %1601, align 4, !tbaa !5
  %1603 = call ptr @s2n_strerror(i32 noundef %1602, ptr noundef @.str.4)
  %1604 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1605 = load i32, ptr %1604, align 4, !tbaa !5
  %1606 = call ptr @s2n_strerror_debug(i32 noundef %1605, ptr noundef @.str.4)
  %1607 = call ptr @__errno_location() #12
  %1608 = load i32, ptr %1607, align 4, !tbaa !5
  %1609 = call ptr @strerror(i32 noundef %1608) #11
  %1610 = call ptr @__errno_location() #12
  %1611 = load i32, ptr %1610, align 4, !tbaa !5
  %1612 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1599, ptr noundef @.str.2, i32 noundef %1600, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 105, ptr noundef %1603, ptr noundef %1606, ptr noundef %1609, i32 noundef %1611) #11
  br label %1630

1613:                                             ; preds = %1591, %1584
  %1614 = load i32, ptr %52, align 4, !tbaa !5
  %1615 = call ptr @__errno_location() #12
  store i32 %1614, ptr %1615, align 4, !tbaa !5
  %1616 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1617 = load i32, ptr @test_count, align 4, !tbaa !5
  %1618 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1619 = load i32, ptr %1618, align 4, !tbaa !5
  %1620 = call ptr @s2n_strerror(i32 noundef %1619, ptr noundef @.str.4)
  %1621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1622 = load i32, ptr %1621, align 4, !tbaa !5
  %1623 = call ptr @s2n_strerror_debug(i32 noundef %1622, ptr noundef @.str.4)
  %1624 = call ptr @__errno_location() #12
  %1625 = load i32, ptr %1624, align 4, !tbaa !5
  %1626 = call ptr @strerror(i32 noundef %1625) #11
  %1627 = call ptr @__errno_location() #12
  %1628 = load i32, ptr %1627, align 4, !tbaa !5
  %1629 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1616, ptr noundef @.str.5, i32 noundef %1617, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 105, ptr noundef %1620, ptr noundef %1623, ptr noundef %1626, i32 noundef %1628) #11
  br label %1630

1630:                                             ; preds = %1613, %1596
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  br label %1631

1631:                                             ; preds = %1630
  br label %1632

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

1633:                                             ; No predecessors!
  br label %1634

1634:                                             ; preds = %1633
  br label %1635

1635:                                             ; preds = %1634, %1577
  br label %1636

1636:                                             ; preds = %1635
  br label %1637

1637:                                             ; preds = %1636
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  %1638 = call i32 @s2n_config_ptr_free(ptr noundef %18)
  %1639 = getelementptr inbounds %struct.s2n_result, ptr %53, i32 0, i32 0
  store i32 %1638, ptr %1639, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #11
  %1640 = call i32 @s2n_config_ptr_free(ptr noundef %15)
  %1641 = getelementptr inbounds %struct.s2n_result, ptr %54, i32 0, i32 0
  store i32 %1640, ptr %1641, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  br label %1642

1642:                                             ; preds = %1637
  br label %1643

1643:                                             ; preds = %1642
  %1644 = call i32 @s2n_cleanup()
  %1645 = icmp eq i32 %1644, -1
  br i1 %1645, label %1646, label %1699

1646:                                             ; preds = %1643
  br label %1647

1647:                                             ; preds = %1646
  br label %1648

1648:                                             ; preds = %1647
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #11
  %1649 = call ptr @__errno_location() #12
  %1650 = load i32, ptr %1649, align 4, !tbaa !5
  store i32 %1650, ptr %55, align 4, !tbaa !5
  %1651 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1652 = call i32 @s2n_print_stacktrace(ptr noundef %1651)
  %1653 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1654 = trunc i8 %1653 to i1
  br i1 %1654, label %1655, label %1677

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

1660:                                             ; preds = %1655
  %1661 = load i32, ptr %55, align 4, !tbaa !5
  %1662 = call ptr @__errno_location() #12
  store i32 %1661, ptr %1662, align 4, !tbaa !5
  %1663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1664 = load i32, ptr @test_count, align 4, !tbaa !5
  %1665 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1666 = load i32, ptr %1665, align 4, !tbaa !5
  %1667 = call ptr @s2n_strerror(i32 noundef %1666, ptr noundef @.str.4)
  %1668 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1669 = load i32, ptr %1668, align 4, !tbaa !5
  %1670 = call ptr @s2n_strerror_debug(i32 noundef %1669, ptr noundef @.str.4)
  %1671 = call ptr @__errno_location() #12
  %1672 = load i32, ptr %1671, align 4, !tbaa !5
  %1673 = call ptr @strerror(i32 noundef %1672) #11
  %1674 = call ptr @__errno_location() #12
  %1675 = load i32, ptr %1674, align 4, !tbaa !5
  %1676 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1663, ptr noundef @.str.2, i32 noundef %1664, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 108, ptr noundef %1667, ptr noundef %1670, ptr noundef %1673, i32 noundef %1675) #11
  br label %1694

1677:                                             ; preds = %1655, %1648
  %1678 = load i32, ptr %55, align 4, !tbaa !5
  %1679 = call ptr @__errno_location() #12
  store i32 %1678, ptr %1679, align 4, !tbaa !5
  %1680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1681 = load i32, ptr @test_count, align 4, !tbaa !5
  %1682 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1683 = load i32, ptr %1682, align 4, !tbaa !5
  %1684 = call ptr @s2n_strerror(i32 noundef %1683, ptr noundef @.str.4)
  %1685 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1686 = load i32, ptr %1685, align 4, !tbaa !5
  %1687 = call ptr @s2n_strerror_debug(i32 noundef %1686, ptr noundef @.str.4)
  %1688 = call ptr @__errno_location() #12
  %1689 = load i32, ptr %1688, align 4, !tbaa !5
  %1690 = call ptr @strerror(i32 noundef %1689) #11
  %1691 = call ptr @__errno_location() #12
  %1692 = load i32, ptr %1691, align 4, !tbaa !5
  %1693 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1680, ptr noundef @.str.5, i32 noundef %1681, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 108, ptr noundef %1684, ptr noundef %1687, ptr noundef %1690, i32 noundef %1692) #11
  br label %1694

1694:                                             ; preds = %1677, %1660
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #11
  br label %1695

1695:                                             ; preds = %1694
  br label %1696

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

1697:                                             ; No predecessors!
  br label %1698

1698:                                             ; preds = %1697
  br label %1699

1699:                                             ; preds = %1698, %1643
  br label %1700

1700:                                             ; preds = %1699
  br label %1701

1701:                                             ; preds = %1700
  br label %1702

1702:                                             ; preds = %1701
  br label %1703

1703:                                             ; preds = %1702
  %1704 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1705 = icmp eq i32 %1704, -1
  br i1 %1705, label %1706, label %1759

1706:                                             ; preds = %1703
  br label %1707

1707:                                             ; preds = %1706
  br label %1708

1708:                                             ; preds = %1707
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #11
  %1709 = call ptr @__errno_location() #12
  %1710 = load i32, ptr %1709, align 4, !tbaa !5
  store i32 %1710, ptr %56, align 4, !tbaa !5
  %1711 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1712 = call i32 @s2n_print_stacktrace(ptr noundef %1711)
  %1713 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1714 = trunc i8 %1713 to i1
  br i1 %1714, label %1715, label %1737

1715:                                             ; preds = %1708
  %1716 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1717 = call i32 @fileno(ptr noundef %1716) #11
  %1718 = call i32 @isatty(i32 noundef %1717) #11
  %1719 = icmp ne i32 %1718, 0
  br i1 %1719, label %1720, label %1737

1720:                                             ; preds = %1715
  %1721 = load i32, ptr %56, align 4, !tbaa !5
  %1722 = call ptr @__errno_location() #12
  store i32 %1721, ptr %1722, align 4, !tbaa !5
  %1723 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1724 = load i32, ptr @test_count, align 4, !tbaa !5
  %1725 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1726 = load i32, ptr %1725, align 4, !tbaa !5
  %1727 = call ptr @s2n_strerror(i32 noundef %1726, ptr noundef @.str.4)
  %1728 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1729 = load i32, ptr %1728, align 4, !tbaa !5
  %1730 = call ptr @s2n_strerror_debug(i32 noundef %1729, ptr noundef @.str.4)
  %1731 = call ptr @__errno_location() #12
  %1732 = load i32, ptr %1731, align 4, !tbaa !5
  %1733 = call ptr @strerror(i32 noundef %1732) #11
  %1734 = call ptr @__errno_location() #12
  %1735 = load i32, ptr %1734, align 4, !tbaa !5
  %1736 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1723, ptr noundef @.str.2, i32 noundef %1724, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 108, ptr noundef %1727, ptr noundef %1730, ptr noundef %1733, i32 noundef %1735) #11
  br label %1754

1737:                                             ; preds = %1715, %1708
  %1738 = load i32, ptr %56, align 4, !tbaa !5
  %1739 = call ptr @__errno_location() #12
  store i32 %1738, ptr %1739, align 4, !tbaa !5
  %1740 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1741 = load i32, ptr @test_count, align 4, !tbaa !5
  %1742 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1743 = load i32, ptr %1742, align 4, !tbaa !5
  %1744 = call ptr @s2n_strerror(i32 noundef %1743, ptr noundef @.str.4)
  %1745 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1746 = load i32, ptr %1745, align 4, !tbaa !5
  %1747 = call ptr @s2n_strerror_debug(i32 noundef %1746, ptr noundef @.str.4)
  %1748 = call ptr @__errno_location() #12
  %1749 = load i32, ptr %1748, align 4, !tbaa !5
  %1750 = call ptr @strerror(i32 noundef %1749) #11
  %1751 = call ptr @__errno_location() #12
  %1752 = load i32, ptr %1751, align 4, !tbaa !5
  %1753 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1740, ptr noundef @.str.5, i32 noundef %1741, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 108, ptr noundef %1744, ptr noundef %1747, ptr noundef %1750, i32 noundef %1752) #11
  br label %1754

1754:                                             ; preds = %1737, %1720
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #11
  br label %1755

1755:                                             ; preds = %1754
  br label %1756

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

1757:                                             ; No predecessors!
  br label %1758

1758:                                             ; preds = %1757
  br label %1759

1759:                                             ; preds = %1758, %1703
  br label %1760

1760:                                             ; preds = %1759
  br label %1761

1761:                                             ; preds = %1760
  %1762 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1763 = trunc i8 %1762 to i1
  br i1 %1763, label %1764, label %1780

1764:                                             ; preds = %1761
  %1765 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1766 = call i32 @fileno(ptr noundef %1765) #11
  %1767 = call i32 @isatty(i32 noundef %1766) #11
  %1768 = icmp ne i32 %1767, 0
  br i1 %1768, label %1769, label %1780

1769:                                             ; preds = %1764
  %1770 = load i32, ptr @test_count, align 4, !tbaa !5
  %1771 = icmp ne i32 %1770, 0
  br i1 %1771, label %1772, label %1776

1772:                                             ; preds = %1769
  %1773 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1774 = load i32, ptr @test_count, align 4, !tbaa !5
  %1775 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1773, ptr noundef @.str.36, i32 noundef %1774) #11
  br label %1779

1776:                                             ; preds = %1769
  %1777 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1778 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1777, ptr noundef @.str.37) #11
  br label %1779

1779:                                             ; preds = %1776, %1772
  br label %1791

1780:                                             ; preds = %1764, %1761
  %1781 = load i32, ptr @test_count, align 4, !tbaa !5
  %1782 = icmp ne i32 %1781, 0
  br i1 %1782, label %1783, label %1787

1783:                                             ; preds = %1780
  %1784 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1785 = load i32, ptr @test_count, align 4, !tbaa !5
  %1786 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1784, ptr noundef @.str.38, i32 noundef %1785) #11
  br label %1790

1787:                                             ; preds = %1780
  %1788 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1789 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1788, ptr noundef @.str.39) #11
  br label %1790

1790:                                             ; preds = %1787, %1783
  br label %1791

1791:                                             ; preds = %1790, %1779
  store i32 0, ptr %3, align 4
  store i32 1, ptr %24, align 4
  br label %1796

1792:                                             ; No predecessors!
  br label %1793

1793:                                             ; preds = %1792
  br label %1794

1794:                                             ; preds = %1793
  br label %1795

1795:                                             ; preds = %1794
  store i32 0, ptr %24, align 4
  br label %1796

1796:                                             ; preds = %1795, %1791
  %1797 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %13)
  %1798 = getelementptr inbounds %struct.s2n_result, ptr %57, i32 0, i32 0
  store i32 %1797, ptr %1798, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  %1799 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %11)
  %1800 = getelementptr inbounds %struct.s2n_result, ptr %58, i32 0, i32 0
  store i32 %1799, ptr %1800, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 12000, ptr %9) #11
  %1801 = load i32, ptr %24, align 4
  switch i32 %1801, label %1804 [
    i32 0, label %1802
    i32 1, label %1802
  ]

1802:                                             ; preds = %1796, %1796
  %1803 = load i32, ptr %3, align 4
  ret i32 %1803

1804:                                             ; preds = %1796, %1566
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

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

declare i32 @s2n_read_test_pem(ptr noundef, ptr noundef, i64 noundef) #2

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) #2

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

declare ptr @s2n_config_new_minimal() #2

declare i32 @s2n_config_ptr_free(ptr noundef) #2

declare i32 @s2n_config_set_unsafe_for_testing(ptr noundef) #2

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

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

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

declare ptr @s2n_connection_new(i32 noundef) #2

declare i32 @s2n_connection_ptr_free(ptr noundef) #2

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

declare i32 @s2n_io_pair_close(ptr noundef) #2

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) #2

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

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

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

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

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

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

declare i32 @s2n_cleanup() #2

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

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

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


; 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_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_cipher_suite = type { i8, ptr, ptr, [2 x i8], ptr, i32, ptr, [2 x ptr], i8, ptr, ptr, i32, i8 }
%struct.s2n_test_io_pair = type { i32, i32 }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@test_count = external dso_local local_unnamed_addr global i32, align 4
@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 [71 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 [26 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [58 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [204 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [155 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [105 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [81 x i8], align 1
@cipher_preferences_test_all = external local_unnamed_addr constant %struct.s2n_cipher_preferences, align 8
@security_policy_test_all = external local_unnamed_addr constant %struct.s2n_security_policy, align 8
@.str.21 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [95 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #0 {
  %3 = alloca [12000 x i8], align 16
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %struct.s2n_cipher_suite, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %struct.s2n_cipher_preferences, align 8
  %11 = alloca %struct.s2n_security_policy, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %struct.s2n_test_io_pair, align 8
  %15 = alloca [2 x i8], align 2
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %16 = load ptr, ptr @stdout, align 8, !tbaa !9
  %17 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %16, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #11
  %18 = load ptr, ptr @stdout, align 8, !tbaa !9
  %19 = tail call i32 @fflush(ptr noundef %18)
  %20 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #11
  %21 = icmp eq i32 %20, -1
  br i1 %21, label %22, label %46

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

29:                                               ; preds = %22
  %30 = load ptr, ptr @stderr, align 8, !tbaa !9
  %31 = tail call i32 @fileno(ptr noundef %30) #11
  %32 = tail call i32 @isatty(i32 noundef %31) #11
  %.not106 = icmp eq i32 %32, 0
  br i1 %.not106, label %33, label %34

33:                                               ; preds = %29, %22
  br label %34

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

46:                                               ; preds = %2
  %47 = load i32, ptr @test_count, align 4, !tbaa !5
  %48 = add nsw i32 %47, 1
  store i32 %48, ptr @test_count, align 4, !tbaa !5
  %49 = tail call i32 @s2n_enable_atexit() #11
  %50 = icmp eq i32 %49, -1
  br i1 %50, label %51, label %75

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

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

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

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

75:                                               ; preds = %46
  %76 = tail call i32 @s2n_init() #11
  %77 = icmp eq i32 %76, -1
  br i1 %77, label %78, label %102

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

85:                                               ; preds = %78
  %86 = load ptr, ptr @stderr, align 8, !tbaa !9
  %87 = tail call i32 @fileno(ptr noundef %86) #11
  %88 = tail call i32 @isatty(i32 noundef %87) #11
  %.not104 = icmp eq i32 %88, 0
  br i1 %.not104, label %89, label %90

89:                                               ; preds = %85, %78
  br label %90

90:                                               ; preds = %85, %89
  %.str.5.sink163 = phi ptr [ @.str.5, %89 ], [ @.str.2, %85 ]
  store i32 %80, ptr %79, align 4, !tbaa !5
  %91 = load ptr, ptr @stderr, align 8, !tbaa !9
  %92 = load i32, ptr @test_count, align 4, !tbaa !5
  %93 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %94 = load i32, ptr %93, align 4, !tbaa !5
  %95 = tail call ptr @s2n_strerror(i32 noundef %94, ptr noundef nonnull @.str.4) #11
  %96 = load i32, ptr %93, align 4, !tbaa !5
  %97 = tail call ptr @s2n_strerror_debug(i32 noundef %96, ptr noundef nonnull @.str.4) #11
  %98 = load i32, ptr %79, align 4, !tbaa !5
  %99 = tail call ptr @strerror(i32 noundef %98) #11
  %100 = load i32, ptr %79, align 4, !tbaa !5
  %101 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %91, ptr noundef nonnull %.str.5.sink163, i32 noundef %92, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 21, ptr noundef %95, ptr noundef %97, ptr noundef %99, i32 noundef %100) #13
  tail call void @exit(i32 noundef 1) #14
  unreachable

102:                                              ; preds = %75
  call void @llvm.lifetime.start.p0(i64 12000, ptr nonnull %3) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(12000) %3, i8 0, i64 12000, i1 false)
  %103 = load i32, ptr @test_count, align 4, !tbaa !5
  %104 = add nsw i32 %103, 1
  store i32 %104, ptr @test_count, align 4, !tbaa !5
  %105 = call i32 @s2n_read_test_pem(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, i64 noundef 12000) #11
  %106 = icmp eq i32 %105, -1
  br i1 %106, label %107, label %131

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

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

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

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

131:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #11
  store ptr null, ptr %4, align 8, !tbaa !9
  %132 = load i32, ptr @test_count, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr @test_count, align 4, !tbaa !5
  %134 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %4, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11) #11
  %135 = icmp eq i32 %134, -1
  br i1 %135, label %136, label %160

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

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

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

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

160:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #11
  store ptr null, ptr %5, align 8, !tbaa !9
  %161 = load i32, ptr @test_count, align 4, !tbaa !5
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr @test_count, align 4, !tbaa !5
  %163 = call i32 @s2n_test_cert_chain_and_key_new(ptr noundef nonnull %5, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14) #11
  %164 = icmp eq i32 %163, -1
  br i1 %164, label %165, label %189

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

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

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

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

189:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #11
  %190 = call ptr @s2n_config_new_minimal() #11
  store ptr %190, ptr %6, align 8, !tbaa !9
  %191 = load i32, ptr @test_count, align 4, !tbaa !5
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr @test_count, align 4, !tbaa !5
  %193 = icmp eq ptr %190, null
  br i1 %193, label %194, label %218

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

201:                                              ; preds = %194
  %202 = load ptr, ptr @stderr, align 8, !tbaa !9
  %203 = call i32 @fileno(ptr noundef %202) #11
  %204 = call i32 @isatty(i32 noundef %203) #11
  %.not100 = icmp eq i32 %204, 0
  br i1 %.not100, label %205, label %206

205:                                              ; preds = %201, %194
  br label %206

206:                                              ; preds = %201, %205
  %.str.5.sink207 = phi ptr [ @.str.5, %205 ], [ @.str.2, %201 ]
  store i32 %196, ptr %195, align 4, !tbaa !5
  %207 = load ptr, ptr @stderr, align 8, !tbaa !9
  %208 = load i32, ptr @test_count, align 4, !tbaa !5
  %209 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %210 = load i32, ptr %209, align 4, !tbaa !5
  %211 = call ptr @s2n_strerror(i32 noundef %210, ptr noundef nonnull @.str.4) #11
  %212 = load i32, ptr %209, align 4, !tbaa !5
  %213 = call ptr @s2n_strerror_debug(i32 noundef %212, ptr noundef nonnull @.str.4) #11
  %214 = load i32, ptr %195, align 4, !tbaa !5
  %215 = call ptr @strerror(i32 noundef %214) #11
  %216 = load i32, ptr %195, align 4, !tbaa !5
  %217 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %207, ptr noundef nonnull %.str.5.sink207, i32 noundef %208, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.1, i32 noundef 37, ptr noundef %211, ptr noundef %213, ptr noundef %215, i32 noundef %216) #13
  call void @exit(i32 noundef 1) #14
  unreachable

218:                                              ; preds = %189
  %219 = add nsw i32 %191, 2
  store i32 %219, ptr @test_count, align 4, !tbaa !5
  %220 = call i32 @s2n_config_set_unsafe_for_testing(ptr noundef nonnull %190) #11
  %221 = icmp eq i32 %220, -1
  br i1 %221, label %222, label %246

222:                                              ; preds = %218
  %223 = tail call ptr @__errno_location() #12
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = load ptr, ptr @stderr, align 8, !tbaa !9
  %226 = call i32 @s2n_print_stacktrace(ptr noundef %225) #11
  %227 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %228 = trunc nuw i8 %227 to i1
  br i1 %228, label %229, label %233

229:                                              ; preds = %222
  %230 = load ptr, ptr @stderr, align 8, !tbaa !9
  %231 = call i32 @fileno(ptr noundef %230) #11
  %232 = call i32 @isatty(i32 noundef %231) #11
  %.not99 = icmp eq i32 %232, 0
  br i1 %.not99, label %233, label %234

233:                                              ; preds = %229, %222
  br label %234

234:                                              ; preds = %229, %233
  %.str.5.sink218 = phi ptr [ @.str.5, %233 ], [ @.str.2, %229 ]
  store i32 %224, ptr %223, align 4, !tbaa !5
  %235 = load ptr, ptr @stderr, align 8, !tbaa !9
  %236 = load i32, ptr @test_count, align 4, !tbaa !5
  %237 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %238 = load i32, ptr %237, align 4, !tbaa !5
  %239 = call ptr @s2n_strerror(i32 noundef %238, ptr noundef nonnull @.str.4) #11
  %240 = load i32, ptr %237, align 4, !tbaa !5
  %241 = call ptr @s2n_strerror_debug(i32 noundef %240, ptr noundef nonnull @.str.4) #11
  %242 = load i32, ptr %223, align 4, !tbaa !5
  %243 = call ptr @strerror(i32 noundef %242) #11
  %244 = load i32, ptr %223, align 4, !tbaa !5
  %245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %235, ptr noundef nonnull %.str.5.sink218, i32 noundef %236, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.1, i32 noundef 38, ptr noundef %239, ptr noundef %241, ptr noundef %243, i32 noundef %244) #13
  call void @exit(i32 noundef 1) #14
  unreachable

246:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #11
  %247 = call ptr @s2n_config_new_minimal() #11
  store ptr %247, ptr %7, align 8, !tbaa !9
  %248 = load i32, ptr @test_count, align 4, !tbaa !5
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr @test_count, align 4, !tbaa !5
  %250 = load ptr, ptr %4, align 8, !tbaa !9
  %251 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %247, ptr noundef %250) #11
  %252 = icmp eq i32 %251, -1
  br i1 %252, label %253, label %277

253:                                              ; preds = %246
  %254 = tail call ptr @__errno_location() #12
  %255 = load i32, ptr %254, align 4, !tbaa !5
  %256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %257 = call i32 @s2n_print_stacktrace(ptr noundef %256) #11
  %258 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %259 = trunc nuw i8 %258 to i1
  br i1 %259, label %260, label %264

260:                                              ; preds = %253
  %261 = load ptr, ptr @stderr, align 8, !tbaa !9
  %262 = call i32 @fileno(ptr noundef %261) #11
  %263 = call i32 @isatty(i32 noundef %262) #11
  %.not98 = icmp eq i32 %263, 0
  br i1 %.not98, label %264, label %265

264:                                              ; preds = %260, %253
  br label %265

265:                                              ; preds = %260, %264
  %.str.5.sink229 = phi ptr [ @.str.5, %264 ], [ @.str.2, %260 ]
  store i32 %255, ptr %254, align 4, !tbaa !5
  %266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %267 = load i32, ptr @test_count, align 4, !tbaa !5
  %268 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %269 = load i32, ptr %268, align 4, !tbaa !5
  %270 = call ptr @s2n_strerror(i32 noundef %269, ptr noundef nonnull @.str.4) #11
  %271 = load i32, ptr %268, align 4, !tbaa !5
  %272 = call ptr @s2n_strerror_debug(i32 noundef %271, ptr noundef nonnull @.str.4) #11
  %273 = load i32, ptr %254, align 4, !tbaa !5
  %274 = call ptr @strerror(i32 noundef %273) #11
  %275 = load i32, ptr %254, align 4, !tbaa !5
  %276 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %266, ptr noundef nonnull %.str.5.sink229, i32 noundef %267, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.1, i32 noundef 41, ptr noundef %270, ptr noundef %272, ptr noundef %274, i32 noundef %275) #13
  call void @exit(i32 noundef 1) #14
  unreachable

277:                                              ; preds = %246
  %278 = load i32, ptr @test_count, align 4, !tbaa !5
  %279 = add nsw i32 %278, 1
  store i32 %279, ptr @test_count, align 4, !tbaa !5
  %280 = load ptr, ptr %5, align 8, !tbaa !9
  %281 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef %247, ptr noundef %280) #11
  %282 = icmp eq i32 %281, -1
  br i1 %282, label %283, label %307

283:                                              ; preds = %277
  %284 = tail call ptr @__errno_location() #12
  %285 = load i32, ptr %284, align 4, !tbaa !5
  %286 = load ptr, ptr @stderr, align 8, !tbaa !9
  %287 = call i32 @s2n_print_stacktrace(ptr noundef %286) #11
  %288 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %289 = trunc nuw i8 %288 to i1
  br i1 %289, label %290, label %294

290:                                              ; preds = %283
  %291 = load ptr, ptr @stderr, align 8, !tbaa !9
  %292 = call i32 @fileno(ptr noundef %291) #11
  %293 = call i32 @isatty(i32 noundef %292) #11
  %.not97 = icmp eq i32 %293, 0
  br i1 %.not97, label %294, label %295

294:                                              ; preds = %290, %283
  br label %295

295:                                              ; preds = %290, %294
  %.str.5.sink240 = phi ptr [ @.str.5, %294 ], [ @.str.2, %290 ]
  store i32 %285, ptr %284, align 4, !tbaa !5
  %296 = load ptr, ptr @stderr, align 8, !tbaa !9
  %297 = load i32, ptr @test_count, align 4, !tbaa !5
  %298 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %299 = load i32, ptr %298, align 4, !tbaa !5
  %300 = call ptr @s2n_strerror(i32 noundef %299, ptr noundef nonnull @.str.4) #11
  %301 = load i32, ptr %298, align 4, !tbaa !5
  %302 = call ptr @s2n_strerror_debug(i32 noundef %301, ptr noundef nonnull @.str.4) #11
  %303 = load i32, ptr %284, align 4, !tbaa !5
  %304 = call ptr @strerror(i32 noundef %303) #11
  %305 = load i32, ptr %284, align 4, !tbaa !5
  %306 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %296, ptr noundef nonnull %.str.5.sink240, i32 noundef %297, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.1, i32 noundef 42, ptr noundef %300, ptr noundef %302, ptr noundef %304, i32 noundef %305) #13
  call void @exit(i32 noundef 1) #14
  unreachable

307:                                              ; preds = %277
  %308 = load i32, ptr @test_count, align 4, !tbaa !5
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr @test_count, align 4, !tbaa !5
  %310 = call i32 @s2n_config_add_dhparams(ptr noundef %247, ptr noundef nonnull %3) #11
  %311 = icmp eq i32 %310, -1
  br i1 %311, label %324, label %.preheader

.preheader:                                       ; preds = %307
  %312 = load i16, ptr @cipher_preferences_test_all, align 8, !tbaa !15
  %313 = zext i16 %312 to i64
  %.not138 = icmp eq i16 %312, 0
  br i1 %.not138, label %._crit_edge136.thread, label %.lr.ph135

._crit_edge136.thread:                            ; preds = %.preheader
  %314 = load i32, ptr @test_count, align 4, !tbaa !5
  %315 = add nsw i32 %314, 1
  store i32 %315, ptr @test_count, align 4, !tbaa !5
  br label %731

.lr.ph135:                                        ; preds = %.preheader
  %316 = load ptr, ptr getelementptr inbounds (i8, ptr @cipher_preferences_test_all, i64 8), align 8, !tbaa !18
  %317 = getelementptr inbounds i8, ptr %8, i64 56
  %318 = getelementptr inbounds i8, ptr %8, i64 48
  %319 = getelementptr inbounds i8, ptr %10, i64 8
  %320 = getelementptr inbounds i8, ptr %10, i64 16
  %321 = getelementptr inbounds i8, ptr %11, i64 8
  %322 = getelementptr inbounds i8, ptr %15, i64 1
  %323 = getelementptr inbounds i8, ptr %8, i64 24
  br label %351

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

331:                                              ; preds = %324
  %332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %333 = call i32 @fileno(ptr noundef %332) #11
  %334 = call i32 @isatty(i32 noundef %333) #11
  %.not96 = icmp eq i32 %334, 0
  br i1 %.not96, label %335, label %336

335:                                              ; preds = %331, %324
  br label %336

336:                                              ; preds = %331, %335
  %.str.5.sink251 = phi ptr [ @.str.5, %335 ], [ @.str.2, %331 ]
  store i32 %326, ptr %325, align 4, !tbaa !5
  %337 = load ptr, ptr @stderr, align 8, !tbaa !9
  %338 = load i32, ptr @test_count, align 4, !tbaa !5
  %339 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %340 = load i32, ptr %339, align 4, !tbaa !5
  %341 = call ptr @s2n_strerror(i32 noundef %340, ptr noundef nonnull @.str.4) #11
  %342 = load i32, ptr %339, align 4, !tbaa !5
  %343 = call ptr @s2n_strerror_debug(i32 noundef %342, ptr noundef nonnull @.str.4) #11
  %344 = load i32, ptr %325, align 4, !tbaa !5
  %345 = call ptr @strerror(i32 noundef %344) #11
  %346 = load i32, ptr %325, align 4, !tbaa !5
  %347 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %337, ptr noundef nonnull %.str.5.sink251, i32 noundef %338, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.1, i32 noundef 43, ptr noundef %341, ptr noundef %343, ptr noundef %345, i32 noundef %346) #13
  call void @exit(i32 noundef 1) #14
  unreachable

._crit_edge136:                                   ; preds = %._crit_edge
  %348 = icmp eq i64 %.1.lcssa, 0
  %349 = load i32, ptr @test_count, align 4, !tbaa !5
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr @test_count, align 4, !tbaa !5
  br i1 %348, label %731, label %755

351:                                              ; preds = %.lr.ph135, %._crit_edge
  %.0134 = phi i64 [ 0, %.lr.ph135 ], [ %.1.lcssa, %._crit_edge ]
  %.074133 = phi i64 [ 0, %.lr.ph135 ], [ %357, %._crit_edge ]
  %352 = getelementptr inbounds ptr, ptr %316, i64 %.074133
  %353 = load ptr, ptr %352, align 8, !tbaa !9
  %354 = getelementptr inbounds i8, ptr %353, i64 72
  %355 = load i8, ptr %354, align 8, !tbaa !19
  %356 = zext i8 %355 to i64
  %.not139 = icmp eq i8 %355, 0
  br i1 %.not139, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %729, %351
  %.1.lcssa = phi i64 [ %.0134, %351 ], [ %.2, %729 ]
  %357 = add nuw nsw i64 %.074133, 1
  %exitcond140.not = icmp eq i64 %357, %313
  br i1 %exitcond140.not, label %._crit_edge136, label %351, !llvm.loop !21

.lr.ph:                                           ; preds = %351, %729
  %.1132 = phi i64 [ %.2, %729 ], [ %.0134, %351 ]
  %.075131 = phi i64 [ %730, %729 ], [ 0, %351 ]
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %8) #11
  %358 = load ptr, ptr %352, align 8, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %8, ptr noundef nonnull align 8 dereferenceable(104) %358, i64 104, i1 false), !tbaa.struct !23
  %359 = getelementptr inbounds [2 x ptr], ptr %317, i64 0, i64 %.075131
  %360 = load ptr, ptr %359, align 8, !tbaa !9
  store ptr %360, ptr %318, align 8, !tbaa !25
  %361 = load ptr, ptr %360, align 8, !tbaa !26
  %362 = load i32, ptr %361, align 8, !tbaa !29
  %363 = and i32 %362, 253
  %or.cond.not = icmp eq i32 %363, 1
  br i1 %or.cond.not, label %364, label %729

364:                                              ; preds = %.lr.ph
  %365 = getelementptr inbounds i8, ptr %361, i64 56
  %366 = load ptr, ptr %365, align 8, !tbaa !31
  %367 = call zeroext i1 %366() #11
  br i1 %367, label %368, label %729

368:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #11
  store ptr %8, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #11
  store i16 1, ptr %10, align 8, !tbaa !15
  store ptr %9, ptr %319, align 8, !tbaa !18
  store i8 0, ptr %320, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, ptr noundef nonnull align 8 dereferenceable(64) @security_policy_test_all, i64 64, i1 false), !tbaa.struct !33
  store ptr %10, ptr %321, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  %369 = call ptr @s2n_connection_new(i32 noundef 1) #11
  store ptr %369, ptr %12, align 8, !tbaa !9
  %370 = load i32, ptr @test_count, align 4, !tbaa !5
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr @test_count, align 4, !tbaa !5
  %372 = icmp eq ptr %369, null
  br i1 %372, label %373, label %397

373:                                              ; preds = %368
  %374 = tail call ptr @__errno_location() #12
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = load ptr, ptr @stderr, align 8, !tbaa !9
  %377 = call i32 @s2n_print_stacktrace(ptr noundef %376) #11
  %378 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %379 = trunc nuw i8 %378 to i1
  br i1 %379, label %380, label %384

380:                                              ; preds = %373
  %381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %382 = call i32 @fileno(ptr noundef %381) #11
  %383 = call i32 @isatty(i32 noundef %382) #11
  %.not95 = icmp eq i32 %383, 0
  br i1 %.not95, label %384, label %385

384:                                              ; preds = %380, %373
  br label %385

385:                                              ; preds = %380, %384
  %.str.5.sink262 = phi ptr [ @.str.5, %384 ], [ @.str.2, %380 ]
  store i32 %375, ptr %374, align 4, !tbaa !5
  %386 = load ptr, ptr @stderr, align 8, !tbaa !9
  %387 = load i32, ptr @test_count, align 4, !tbaa !5
  %388 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %389 = load i32, ptr %388, align 4, !tbaa !5
  %390 = call ptr @s2n_strerror(i32 noundef %389, ptr noundef nonnull @.str.4) #11
  %391 = load i32, ptr %388, align 4, !tbaa !5
  %392 = call ptr @s2n_strerror_debug(i32 noundef %391, ptr noundef nonnull @.str.4) #11
  %393 = load i32, ptr %374, align 4, !tbaa !5
  %394 = call ptr @strerror(i32 noundef %393) #11
  %395 = load i32, ptr %374, align 4, !tbaa !5
  %396 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %386, ptr noundef nonnull %.str.5.sink262, i32 noundef %387, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.1, i32 noundef 75, ptr noundef %390, ptr noundef %392, ptr noundef %394, i32 noundef %395) #13
  call void @exit(i32 noundef 1) #14
  unreachable

397:                                              ; preds = %368
  %398 = add nsw i32 %370, 2
  store i32 %398, ptr @test_count, align 4, !tbaa !5
  %399 = call i32 @s2n_connection_set_config(ptr noundef nonnull %369, ptr noundef nonnull %190) #11
  %400 = icmp eq i32 %399, -1
  br i1 %400, label %401, label %425

401:                                              ; preds = %397
  %402 = tail call ptr @__errno_location() #12
  %403 = load i32, ptr %402, align 4, !tbaa !5
  %404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %405 = call i32 @s2n_print_stacktrace(ptr noundef %404) #11
  %406 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %407 = trunc nuw i8 %406 to i1
  br i1 %407, label %408, label %412

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

412:                                              ; preds = %408, %401
  br label %413

413:                                              ; preds = %408, %412
  %.str.5.sink273 = phi ptr [ @.str.5, %412 ], [ @.str.2, %408 ]
  store i32 %403, ptr %402, align 4, !tbaa !5
  %414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %415 = load i32, ptr @test_count, align 4, !tbaa !5
  %416 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %417 = load i32, ptr %416, align 4, !tbaa !5
  %418 = call ptr @s2n_strerror(i32 noundef %417, ptr noundef nonnull @.str.4) #11
  %419 = load i32, ptr %416, align 4, !tbaa !5
  %420 = call ptr @s2n_strerror_debug(i32 noundef %419, ptr noundef nonnull @.str.4) #11
  %421 = load i32, ptr %402, align 4, !tbaa !5
  %422 = call ptr @strerror(i32 noundef %421) #11
  %423 = load i32, ptr %402, align 4, !tbaa !5
  %424 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %414, ptr noundef nonnull %.str.5.sink273, i32 noundef %415, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 76, ptr noundef %418, ptr noundef %420, ptr noundef %422, i32 noundef %423) #13
  call void @exit(i32 noundef 1) #14
  unreachable

425:                                              ; preds = %397
  %426 = load ptr, ptr %12, align 8, !tbaa !9
  %427 = getelementptr inbounds i8, ptr %426, i64 16
  store ptr %11, ptr %427, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  %428 = call ptr @s2n_connection_new(i32 noundef 0) #11
  store ptr %428, ptr %13, align 8, !tbaa !9
  %429 = load i32, ptr @test_count, align 4, !tbaa !5
  %430 = add nsw i32 %429, 1
  store i32 %430, ptr @test_count, align 4, !tbaa !5
  %431 = icmp eq ptr %428, null
  br i1 %431, label %432, label %456

432:                                              ; preds = %425
  %433 = tail call ptr @__errno_location() #12
  %434 = load i32, ptr %433, align 4, !tbaa !5
  %435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %436 = call i32 @s2n_print_stacktrace(ptr noundef %435) #11
  %437 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %438 = trunc nuw i8 %437 to i1
  br i1 %438, label %439, label %443

439:                                              ; preds = %432
  %440 = load ptr, ptr @stderr, align 8, !tbaa !9
  %441 = call i32 @fileno(ptr noundef %440) #11
  %442 = call i32 @isatty(i32 noundef %441) #11
  %.not93 = icmp eq i32 %442, 0
  br i1 %.not93, label %443, label %444

443:                                              ; preds = %439, %432
  br label %444

444:                                              ; preds = %439, %443
  %.str.5.sink284 = phi ptr [ @.str.5, %443 ], [ @.str.2, %439 ]
  store i32 %434, ptr %433, align 4, !tbaa !5
  %445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %446 = load i32, ptr @test_count, align 4, !tbaa !5
  %447 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %448 = load i32, ptr %447, align 4, !tbaa !5
  %449 = call ptr @s2n_strerror(i32 noundef %448, ptr noundef nonnull @.str.4) #11
  %450 = load i32, ptr %447, align 4, !tbaa !5
  %451 = call ptr @s2n_strerror_debug(i32 noundef %450, ptr noundef nonnull @.str.4) #11
  %452 = load i32, ptr %433, align 4, !tbaa !5
  %453 = call ptr @strerror(i32 noundef %452) #11
  %454 = load i32, ptr %433, align 4, !tbaa !5
  %455 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %445, ptr noundef nonnull %.str.5.sink284, i32 noundef %446, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.1, i32 noundef 81, ptr noundef %449, ptr noundef %451, ptr noundef %453, i32 noundef %454) #13
  call void @exit(i32 noundef 1) #14
  unreachable

456:                                              ; preds = %425
  %457 = add nsw i32 %429, 2
  store i32 %457, ptr @test_count, align 4, !tbaa !5
  %458 = call i32 @s2n_connection_set_config(ptr noundef nonnull %428, ptr noundef %247) #11
  %459 = icmp eq i32 %458, -1
  br i1 %459, label %460, label %484

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

467:                                              ; preds = %460
  %468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %469 = call i32 @fileno(ptr noundef %468) #11
  %470 = call i32 @isatty(i32 noundef %469) #11
  %.not92 = icmp eq i32 %470, 0
  br i1 %.not92, label %471, label %472

471:                                              ; preds = %467, %460
  br label %472

472:                                              ; preds = %467, %471
  %.str.5.sink295 = phi ptr [ @.str.5, %471 ], [ @.str.2, %467 ]
  store i32 %462, ptr %461, align 4, !tbaa !5
  %473 = load ptr, ptr @stderr, align 8, !tbaa !9
  %474 = load i32, ptr @test_count, align 4, !tbaa !5
  %475 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %476 = load i32, ptr %475, align 4, !tbaa !5
  %477 = call ptr @s2n_strerror(i32 noundef %476, ptr noundef nonnull @.str.4) #11
  %478 = load i32, ptr %475, align 4, !tbaa !5
  %479 = call ptr @s2n_strerror_debug(i32 noundef %478, ptr noundef nonnull @.str.4) #11
  %480 = load i32, ptr %461, align 4, !tbaa !5
  %481 = call ptr @strerror(i32 noundef %480) #11
  %482 = load i32, ptr %461, align 4, !tbaa !5
  %483 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %473, ptr noundef nonnull %.str.5.sink295, i32 noundef %474, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.1, i32 noundef 82, ptr noundef %477, ptr noundef %479, ptr noundef %481, i32 noundef %482) #13
  call void @exit(i32 noundef 1) #14
  unreachable

484:                                              ; preds = %456
  %485 = load ptr, ptr %13, align 8, !tbaa !9
  %486 = getelementptr inbounds i8, ptr %485, i64 16
  store ptr %11, ptr %486, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #11
  store i64 0, ptr %14, align 8
  %487 = load i32, ptr @test_count, align 4, !tbaa !5
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr @test_count, align 4, !tbaa !5
  %489 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef nonnull %14) #11
  %490 = icmp eq i32 %489, -1
  br i1 %490, label %491, label %515

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

498:                                              ; preds = %491
  %499 = load ptr, ptr @stderr, align 8, !tbaa !9
  %500 = call i32 @fileno(ptr noundef %499) #11
  %501 = call i32 @isatty(i32 noundef %500) #11
  %.not91 = icmp eq i32 %501, 0
  br i1 %.not91, label %502, label %503

502:                                              ; preds = %498, %491
  br label %503

503:                                              ; preds = %498, %502
  %.str.5.sink306 = phi ptr [ @.str.5, %502 ], [ @.str.2, %498 ]
  store i32 %493, ptr %492, align 4, !tbaa !5
  %504 = load ptr, ptr @stderr, align 8, !tbaa !9
  %505 = load i32, ptr @test_count, align 4, !tbaa !5
  %506 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %507 = load i32, ptr %506, align 4, !tbaa !5
  %508 = call ptr @s2n_strerror(i32 noundef %507, ptr noundef nonnull @.str.4) #11
  %509 = load i32, ptr %506, align 4, !tbaa !5
  %510 = call ptr @s2n_strerror_debug(i32 noundef %509, ptr noundef nonnull @.str.4) #11
  %511 = load i32, ptr %492, align 4, !tbaa !5
  %512 = call ptr @strerror(i32 noundef %511) #11
  %513 = load i32, ptr %492, align 4, !tbaa !5
  %514 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %504, ptr noundef nonnull %.str.5.sink306, i32 noundef %505, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.1, i32 noundef 86, ptr noundef %508, ptr noundef %510, ptr noundef %512, i32 noundef %513) #13
  call void @exit(i32 noundef 1) #14
  unreachable

515:                                              ; preds = %484
  %516 = load i32, ptr @test_count, align 4, !tbaa !5
  %517 = add nsw i32 %516, 1
  store i32 %517, ptr @test_count, align 4, !tbaa !5
  %518 = load ptr, ptr %12, align 8, !tbaa !9
  %519 = call i32 @s2n_connection_set_io_pair(ptr noundef %518, ptr noundef nonnull %14) #11
  %520 = icmp eq i32 %519, -1
  br i1 %520, label %521, label %545

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

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

532:                                              ; preds = %528, %521
  br label %533

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

545:                                              ; preds = %515
  %546 = load i32, ptr @test_count, align 4, !tbaa !5
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr @test_count, align 4, !tbaa !5
  %548 = load ptr, ptr %13, align 8, !tbaa !9
  %549 = call i32 @s2n_connection_set_io_pair(ptr noundef %548, ptr noundef nonnull %14) #11
  %550 = icmp eq i32 %549, -1
  br i1 %550, label %551, label %575

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

558:                                              ; preds = %551
  %559 = load ptr, ptr @stderr, align 8, !tbaa !9
  %560 = call i32 @fileno(ptr noundef %559) #11
  %561 = call i32 @isatty(i32 noundef %560) #11
  %.not89 = icmp eq i32 %561, 0
  br i1 %.not89, label %562, label %563

562:                                              ; preds = %558, %551
  br label %563

563:                                              ; preds = %558, %562
  %.str.5.sink328 = phi ptr [ @.str.5, %562 ], [ @.str.2, %558 ]
  store i32 %553, ptr %552, align 4, !tbaa !5
  %564 = load ptr, ptr @stderr, align 8, !tbaa !9
  %565 = load i32, ptr @test_count, align 4, !tbaa !5
  %566 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %567 = load i32, ptr %566, align 4, !tbaa !5
  %568 = call ptr @s2n_strerror(i32 noundef %567, ptr noundef nonnull @.str.4) #11
  %569 = load i32, ptr %566, align 4, !tbaa !5
  %570 = call ptr @s2n_strerror_debug(i32 noundef %569, ptr noundef nonnull @.str.4) #11
  %571 = load i32, ptr %552, align 4, !tbaa !5
  %572 = call ptr @strerror(i32 noundef %571) #11
  %573 = load i32, ptr %552, align 4, !tbaa !5
  %574 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %564, ptr noundef nonnull %.str.5.sink328, i32 noundef %565, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 88, ptr noundef %568, ptr noundef %570, ptr noundef %572, i32 noundef %573) #13
  call void @exit(i32 noundef 1) #14
  unreachable

575:                                              ; preds = %545
  %576 = load i32, ptr @test_count, align 4, !tbaa !5
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr @test_count, align 4, !tbaa !5
  %578 = load ptr, ptr %13, align 8, !tbaa !9
  %579 = load ptr, ptr %12, align 8, !tbaa !9
  %580 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %578, ptr noundef %579) #11
  %581 = icmp eq i32 %580, -1
  br i1 %581, label %582, label %606

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

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

593:                                              ; preds = %589, %582
  br label %594

594:                                              ; preds = %589, %593
  %.str.5.sink339 = phi ptr [ @.str.5, %593 ], [ @.str.2, %589 ]
  store i32 %584, ptr %583, align 4, !tbaa !5
  %595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %596 = load i32, ptr @test_count, align 4, !tbaa !5
  %597 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %598 = load i32, ptr %597, align 4, !tbaa !5
  %599 = call ptr @s2n_strerror(i32 noundef %598, ptr noundef nonnull @.str.4) #11
  %600 = load i32, ptr %597, align 4, !tbaa !5
  %601 = call ptr @s2n_strerror_debug(i32 noundef %600, ptr noundef nonnull @.str.4) #11
  %602 = load i32, ptr %583, align 4, !tbaa !5
  %603 = call ptr @strerror(i32 noundef %602) #11
  %604 = load i32, ptr %583, align 4, !tbaa !5
  %605 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %595, ptr noundef nonnull %.str.5.sink339, i32 noundef %596, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 90, ptr noundef %599, ptr noundef %601, ptr noundef %603, i32 noundef %604) #13
  call void @exit(i32 noundef 1) #14
  unreachable

606:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %15) #11
  store i16 0, ptr %15, align 2
  %607 = load i32, ptr @test_count, align 4, !tbaa !5
  %608 = add nsw i32 %607, 1
  store i32 %608, ptr @test_count, align 4, !tbaa !5
  %609 = load ptr, ptr %13, align 8, !tbaa !9
  %610 = call i32 @s2n_connection_get_cipher_iana_value(ptr noundef %609, ptr noundef nonnull %15, ptr noundef nonnull %322) #11
  %611 = icmp eq i32 %610, -1
  br i1 %611, label %612, label %636

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

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

623:                                              ; preds = %619, %612
  br label %624

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

636:                                              ; preds = %606
  %637 = load i32, ptr @test_count, align 4, !tbaa !5
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr @test_count, align 4, !tbaa !5
  %lhsv = load i16, ptr %15, align 2
  %rhsv = load i16, ptr %323, align 8
  %.not = icmp eq i16 %lhsv, %rhsv
  br i1 %.not, label %663, label %639

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

646:                                              ; preds = %639
  %647 = load ptr, ptr @stderr, align 8, !tbaa !9
  %648 = call i32 @fileno(ptr noundef %647) #11
  %649 = call i32 @isatty(i32 noundef %648) #11
  %.not84 = icmp eq i32 %649, 0
  br i1 %.not84, label %650, label %651

650:                                              ; preds = %646, %639
  br label %651

651:                                              ; preds = %646, %650
  %.str.5.sink361 = phi ptr [ @.str.5, %650 ], [ @.str.2, %646 ]
  store i32 %641, ptr %640, align 4, !tbaa !5
  %652 = load ptr, ptr @stderr, align 8, !tbaa !9
  %653 = load i32, ptr @test_count, align 4, !tbaa !5
  %654 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %655 = load i32, ptr %654, align 4, !tbaa !5
  %656 = call ptr @s2n_strerror(i32 noundef %655, ptr noundef nonnull @.str.4) #11
  %657 = load i32, ptr %654, align 4, !tbaa !5
  %658 = call ptr @s2n_strerror_debug(i32 noundef %657, ptr noundef nonnull @.str.4) #11
  %659 = load i32, ptr %640, align 4, !tbaa !5
  %660 = call ptr @strerror(i32 noundef %659) #11
  %661 = load i32, ptr %640, align 4, !tbaa !5
  %662 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %652, ptr noundef nonnull %.str.5.sink361, i32 noundef %653, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 96, ptr noundef %656, ptr noundef %658, ptr noundef %660, i32 noundef %661) #13
  call void @exit(i32 noundef 1) #14
  unreachable

663:                                              ; preds = %636
  %664 = add nsw i32 %637, 2
  store i32 %664, ptr @test_count, align 4, !tbaa !5
  %665 = load ptr, ptr %12, align 8, !tbaa !9
  %666 = load ptr, ptr %13, align 8, !tbaa !9
  %667 = call i32 @s2n_send_and_recv_test(ptr noundef %665, ptr noundef %666) #11
  %668 = call zeroext i1 @s2n_result_is_ok(i32 %667)
  br i1 %668, label %693, label %669

669:                                              ; preds = %663
  %670 = tail call ptr @__errno_location() #12
  %671 = load i32, ptr %670, align 4, !tbaa !5
  %672 = load ptr, ptr @stderr, align 8, !tbaa !9
  %673 = call i32 @s2n_print_stacktrace(ptr noundef %672) #11
  %674 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %675 = trunc nuw i8 %674 to i1
  br i1 %675, label %676, label %680

676:                                              ; preds = %669
  %677 = load ptr, ptr @stderr, align 8, !tbaa !9
  %678 = call i32 @fileno(ptr noundef %677) #11
  %679 = call i32 @isatty(i32 noundef %678) #11
  %.not85 = icmp eq i32 %679, 0
  br i1 %.not85, label %680, label %681

680:                                              ; preds = %676, %669
  br label %681

681:                                              ; preds = %676, %680
  %.str.5.sink372 = phi ptr [ @.str.5, %680 ], [ @.str.2, %676 ]
  store i32 %671, ptr %670, align 4, !tbaa !5
  %682 = load ptr, ptr @stderr, align 8, !tbaa !9
  %683 = load i32, ptr @test_count, align 4, !tbaa !5
  %684 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %685 = load i32, ptr %684, align 4, !tbaa !5
  %686 = call ptr @s2n_strerror(i32 noundef %685, ptr noundef nonnull @.str.4) #11
  %687 = load i32, ptr %684, align 4, !tbaa !5
  %688 = call ptr @s2n_strerror_debug(i32 noundef %687, ptr noundef nonnull @.str.4) #11
  %689 = load i32, ptr %670, align 4, !tbaa !5
  %690 = call ptr @strerror(i32 noundef %689) #11
  %691 = load i32, ptr %670, align 4, !tbaa !5
  %692 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %682, ptr noundef nonnull %.str.5.sink372, i32 noundef %683, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 98, ptr noundef %686, ptr noundef %688, ptr noundef %690, i32 noundef %691) #13
  call void @exit(i32 noundef 1) #14
  unreachable

693:                                              ; preds = %663
  %694 = load i32, ptr @test_count, align 4, !tbaa !5
  %695 = add nsw i32 %694, 1
  store i32 %695, ptr @test_count, align 4, !tbaa !5
  %696 = load ptr, ptr %13, align 8, !tbaa !9
  %697 = load ptr, ptr %12, align 8, !tbaa !9
  %698 = call i32 @s2n_send_and_recv_test(ptr noundef %696, ptr noundef %697) #11
  %699 = call zeroext i1 @s2n_result_is_ok(i32 %698)
  br i1 %699, label %724, label %700

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

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

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

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

724:                                              ; preds = %693
  %725 = add i64 %.1132, 1
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %15) #11
  %726 = call i32 @s2n_io_pair_close(ptr noundef nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  %727 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  %728 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  br label %729

729:                                              ; preds = %364, %.lr.ph, %724
  %.2 = phi i64 [ %725, %724 ], [ %.1132, %.lr.ph ], [ %.1132, %364 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %8) #11
  %730 = add nuw nsw i64 %.075131, 1
  %exitcond.not = icmp eq i64 %730, %356
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !61

731:                                              ; preds = %._crit_edge136.thread, %._crit_edge136
  %732 = tail call ptr @__errno_location() #12
  %733 = load i32, ptr %732, align 4, !tbaa !5
  %734 = load ptr, ptr @stderr, align 8, !tbaa !9
  %735 = call i32 @s2n_print_stacktrace(ptr noundef %734) #11
  %736 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %737 = trunc nuw i8 %736 to i1
  br i1 %737, label %738, label %742

738:                                              ; preds = %731
  %739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %740 = call i32 @fileno(ptr noundef %739) #11
  %741 = call i32 @isatty(i32 noundef %740) #11
  %.not78 = icmp eq i32 %741, 0
  br i1 %.not78, label %742, label %743

742:                                              ; preds = %738, %731
  br label %743

743:                                              ; preds = %738, %742
  %.str.5.sink394 = phi ptr [ @.str.5, %742 ], [ @.str.2, %738 ]
  store i32 %733, ptr %732, align 4, !tbaa !5
  %744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %745 = load i32, ptr @test_count, align 4, !tbaa !5
  %746 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %747 = load i32, ptr %746, align 4, !tbaa !5
  %748 = call ptr @s2n_strerror(i32 noundef %747, ptr noundef nonnull @.str.4) #11
  %749 = load i32, ptr %746, align 4, !tbaa !5
  %750 = call ptr @s2n_strerror_debug(i32 noundef %749, ptr noundef nonnull @.str.4) #11
  %751 = load i32, ptr %732, align 4, !tbaa !5
  %752 = call ptr @strerror(i32 noundef %751) #11
  %753 = load i32, ptr %732, align 4, !tbaa !5
  %754 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %744, ptr noundef nonnull %.str.5.sink394, i32 noundef %745, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 105, ptr noundef %748, ptr noundef %750, ptr noundef %752, i32 noundef %753) #13
  call void @exit(i32 noundef 1) #14
  unreachable

755:                                              ; preds = %._crit_edge136
  %756 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  %757 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #11
  %758 = call i32 @s2n_cleanup() #11
  %759 = icmp eq i32 %758, -1
  br i1 %759, label %760, label %784

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

767:                                              ; preds = %760
  %768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %769 = call i32 @fileno(ptr noundef %768) #11
  %770 = call i32 @isatty(i32 noundef %769) #11
  %.not83 = icmp eq i32 %770, 0
  br i1 %.not83, label %771, label %772

771:                                              ; preds = %767, %760
  br label %772

772:                                              ; preds = %767, %771
  %.str.5.sink405 = phi ptr [ @.str.5, %771 ], [ @.str.2, %767 ]
  store i32 %762, ptr %761, align 4, !tbaa !5
  %773 = load ptr, ptr @stderr, align 8, !tbaa !9
  %774 = load i32, ptr @test_count, align 4, !tbaa !5
  %775 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %776 = load i32, ptr %775, align 4, !tbaa !5
  %777 = call ptr @s2n_strerror(i32 noundef %776, ptr noundef nonnull @.str.4) #11
  %778 = load i32, ptr %775, align 4, !tbaa !5
  %779 = call ptr @s2n_strerror_debug(i32 noundef %778, ptr noundef nonnull @.str.4) #11
  %780 = load i32, ptr %761, align 4, !tbaa !5
  %781 = call ptr @strerror(i32 noundef %780) #11
  %782 = load i32, ptr %761, align 4, !tbaa !5
  %783 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %773, ptr noundef nonnull %.str.5.sink405, i32 noundef %774, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 108, ptr noundef %777, ptr noundef %779, ptr noundef %781, i32 noundef %782) #13
  call void @exit(i32 noundef 1) #14
  unreachable

784:                                              ; preds = %755
  %785 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #11
  %786 = icmp eq i32 %785, -1
  br i1 %786, label %787, label %811

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

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

798:                                              ; preds = %794, %787
  br label %799

799:                                              ; preds = %794, %798
  %.str.5.sink416 = phi ptr [ @.str.5, %798 ], [ @.str.2, %794 ]
  store i32 %789, ptr %788, align 4, !tbaa !5
  %800 = load ptr, ptr @stderr, align 8, !tbaa !9
  %801 = load i32, ptr @test_count, align 4, !tbaa !5
  %802 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %803 = load i32, ptr %802, align 4, !tbaa !5
  %804 = call ptr @s2n_strerror(i32 noundef %803, ptr noundef nonnull @.str.4) #11
  %805 = load i32, ptr %802, align 4, !tbaa !5
  %806 = call ptr @s2n_strerror_debug(i32 noundef %805, ptr noundef nonnull @.str.4) #11
  %807 = load i32, ptr %788, align 4, !tbaa !5
  %808 = call ptr @strerror(i32 noundef %807) #11
  %809 = load i32, ptr %788, align 4, !tbaa !5
  %810 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %800, ptr noundef nonnull %.str.5.sink416, i32 noundef %801, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 108, ptr noundef %804, ptr noundef %806, ptr noundef %808, i32 noundef %809) #13
  call void @exit(i32 noundef 1) #14
  unreachable

811:                                              ; preds = %784
  %812 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %813 = trunc nuw i8 %812 to i1
  br i1 %813, label %814, label %825

814:                                              ; preds = %811
  %815 = load ptr, ptr @stdout, align 8, !tbaa !9
  %816 = call i32 @fileno(ptr noundef %815) #11
  %817 = call i32 @isatty(i32 noundef %816) #11
  %.not79 = icmp eq i32 %817, 0
  br i1 %.not79, label %825, label %818

818:                                              ; preds = %814
  %819 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not81 = icmp eq i32 %819, 0
  %820 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not81, label %823, label %821

821:                                              ; preds = %818
  %822 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %820, ptr noundef nonnull @.str.36, i32 noundef %819) #11
  br label %832

823:                                              ; preds = %818
  %824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %820, ptr noundef nonnull @.str.37) #11
  br label %832

825:                                              ; preds = %814, %811
  %826 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not80 = icmp eq i32 %826, 0
  %827 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not80, label %830, label %828

828:                                              ; preds = %825
  %829 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %827, ptr noundef nonnull @.str.38, i32 noundef %826) #11
  br label %832

830:                                              ; preds = %825
  %831 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %827, ptr noundef nonnull @.str.39) #11
  br label %832

832:                                              ; preds = %828, %830, %821, %823
  %833 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #11
  %834 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 12000, ptr nonnull %3) #11
  ret i32 0
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

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

declare i32 @s2n_read_test_pem(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) local_unnamed_addr #2

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

declare ptr @s2n_config_new_minimal() local_unnamed_addr #2

declare i32 @s2n_config_ptr_free(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_config_set_unsafe_for_testing(ptr noundef) local_unnamed_addr #2

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

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

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #2

declare i32 @s2n_connection_ptr_free(ptr noundef) local_unnamed_addr #2

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

declare i32 @s2n_io_pair_close(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_io_pair_init_non_blocking(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare i32 @s2n_cleanup() local_unnamed_addr #2

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass