; LLVM IR from aws/s2n-tls :: tests/unit (s2n_self_talk_certificates_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.anon = type { ptr, ptr, i8 }
%struct.s2n_result = type { i32 }
%struct.s2n_test_io_pair = type { i32, i32 }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon, i32 }
%union.anon = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_sig_scheme_list = type { [128 x i16], i8 }
%struct.s2n_psk_parameters = type { i32, %struct.s2n_array, i16, i16, ptr, i32 }
%struct.s2n_array = type { %struct.s2n_blob, i32, i32 }
%struct.s2n_handshake = type { %struct.s2n_stuffer, ptr, [8 x i8], [48 x i8], [48 x i8], i8, i32, i32, i32, i32, %struct.s2n_offered_early_data, i8, i32 }
%struct.s2n_offered_early_data = type { ptr }
%struct.s2n_client_hello = type { %struct.s2n_blob, %struct.s2n_parsed_extensions_list, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8 }
%struct.s2n_parsed_extensions_list = type { [21 x %struct.s2n_parsed_extension], %struct.s2n_blob, i16 }
%struct.s2n_parsed_extension = type { %struct.s2n_blob, i16, i16, i8 }
%struct.s2n_x509_validator = type { ptr, ptr, i8, i8, i16, ptr, i32, ptr, %struct.s2n_cert_validation_info, i8 }
%struct.s2n_cert_validation_info = type { i8, [3 x i8] }
%struct.s2n_ticket_fields = type { %struct.s2n_blob, i32 }
%struct.s2n_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 [90 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 [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@__const.main.test_versions = external hidden unnamed_addr constant [4 x i8], align 1
@__const.main.test_certs = external hidden unnamed_addr constant [4 x %struct.anon], align 16
@.str.22 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [23 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca [4 x i8], align 1
  %12 = alloca [4 x %struct.anon], align 16
  %13 = alloca i64, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca [12000 x i8], align 16
  %17 = alloca %struct.s2n_result, align 4
  %18 = alloca i32, align 4
  %19 = alloca i64, align 8
  %20 = alloca i8, align 1
  %21 = alloca i8, align 1
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %struct.s2n_test_io_pair, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i8, align 1
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca %struct.s2n_result, align 4
  %45 = alloca %struct.s2n_result, align 4
  %46 = alloca %struct.s2n_result, align 4
  %47 = alloca %struct.s2n_result, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  br label %50

50:                                               ; preds = %2
  br label %51

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

56:                                               ; preds = %51
  %57 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %58 = icmp eq i32 %57, -1
  br i1 %58, label %59, label %110

59:                                               ; preds = %56
  br label %60

60:                                               ; preds = %59
  br label %61

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

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

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

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

107:                                              ; preds = %90, %73
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  br label %108

108:                                              ; preds = %107
  call void @exit(i32 noundef 1) #12
  unreachable

109:                                              ; No predecessors!
  br label %110

110:                                              ; preds = %109, %56
  br label %111

111:                                              ; preds = %110
  br label %112

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

117:                                              ; preds = %112
  br label %118

118:                                              ; preds = %117
  br label %119

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

126:                                              ; preds = %119
  %127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %128 = call i32 @fileno(ptr noundef %127) #10
  %129 = call i32 @isatty(i32 noundef %128) #10
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %148

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

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

165:                                              ; preds = %148, %131
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #10
  br label %166

166:                                              ; preds = %165
  call void @exit(i32 noundef 1) #12
  unreachable

167:                                              ; No predecessors!
  br label %168

168:                                              ; preds = %167, %112
  br label %169

169:                                              ; preds = %168
  br label %170

170:                                              ; preds = %169
  br label %171

171:                                              ; preds = %170
  %172 = call i32 @s2n_init()
  %173 = icmp eq i32 %172, -1
  br i1 %173, label %174, label %225

174:                                              ; preds = %171
  br label %175

175:                                              ; preds = %174
  br label %176

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

183:                                              ; preds = %176
  %184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %185 = call i32 @fileno(ptr noundef %184) #10
  %186 = call i32 @isatty(i32 noundef %185) #10
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %205

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

205:                                              ; preds = %183, %176
  %206 = load i32, ptr %8, align 4, !tbaa !5
  %207 = call ptr @__errno_location() #11
  store i32 %206, ptr %207, align 4, !tbaa !5
  %208 = load ptr, ptr @stderr, align 8, !tbaa !9
  %209 = load i32, ptr @test_count, align 4, !tbaa !5
  %210 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %211 = load i32, ptr %210, align 4, !tbaa !5
  %212 = call ptr @s2n_strerror(i32 noundef %211, ptr noundef @.str.4)
  %213 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %214 = load i32, ptr %213, align 4, !tbaa !5
  %215 = call ptr @s2n_strerror_debug(i32 noundef %214, ptr noundef @.str.4)
  %216 = call ptr @__errno_location() #11
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %218 = call ptr @strerror(i32 noundef %217) #10
  %219 = call ptr @__errno_location() #11
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %221 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %208, ptr noundef @.str.5, i32 noundef %209, ptr noundef @.str.7, ptr noundef @.str.1, i32 noundef 44, ptr noundef %212, ptr noundef %215, ptr noundef %218, i32 noundef %220) #10
  br label %222

222:                                              ; preds = %205, %188
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %223

223:                                              ; preds = %222
  call void @exit(i32 noundef 1) #12
  unreachable

224:                                              ; No predecessors!
  br label %225

225:                                              ; preds = %224, %171
  br label %226

226:                                              ; preds = %225
  br label %227

227:                                              ; preds = %226
  %228 = call zeroext i1 (...) @s2n_is_rsa_pss_certs_supported()
  br i1 %228, label %229, label %231

229:                                              ; preds = %227
  %230 = call zeroext i1 (...) @s2n_is_tls13_fully_supported()
  br i1 %230, label %378, label %231

231:                                              ; preds = %229, %227
  br label %232

232:                                              ; preds = %231
  br label %233

233:                                              ; preds = %232
  %234 = call i32 @s2n_cleanup()
  %235 = icmp eq i32 %234, -1
  br i1 %235, label %236, label %287

236:                                              ; preds = %233
  br label %237

237:                                              ; preds = %236
  br label %238

238:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #10
  %239 = call ptr @__errno_location() #11
  %240 = load i32, ptr %239, align 4, !tbaa !5
  store i32 %240, ptr %9, align 4, !tbaa !5
  %241 = load ptr, ptr @stderr, align 8, !tbaa !9
  %242 = call i32 @s2n_print_stacktrace(ptr noundef %241)
  %243 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %244 = trunc i8 %243 to i1
  br i1 %244, label %245, label %267

245:                                              ; preds = %238
  %246 = load ptr, ptr @stderr, align 8, !tbaa !9
  %247 = call i32 @fileno(ptr noundef %246) #10
  %248 = call i32 @isatty(i32 noundef %247) #10
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %267

250:                                              ; preds = %245
  %251 = load i32, ptr %9, align 4, !tbaa !5
  %252 = call ptr @__errno_location() #11
  store i32 %251, ptr %252, align 4, !tbaa !5
  %253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %254 = load i32, ptr @test_count, align 4, !tbaa !5
  %255 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = call ptr @s2n_strerror(i32 noundef %256, ptr noundef @.str.4)
  %258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %259 = load i32, ptr %258, align 4, !tbaa !5
  %260 = call ptr @s2n_strerror_debug(i32 noundef %259, ptr noundef @.str.4)
  %261 = call ptr @__errno_location() #11
  %262 = load i32, ptr %261, align 4, !tbaa !5
  %263 = call ptr @strerror(i32 noundef %262) #10
  %264 = call ptr @__errno_location() #11
  %265 = load i32, ptr %264, align 4, !tbaa !5
  %266 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %253, ptr noundef @.str.2, i32 noundef %254, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 47, ptr noundef %257, ptr noundef %260, ptr noundef %263, i32 noundef %265) #10
  br label %284

267:                                              ; preds = %245, %238
  %268 = load i32, ptr %9, align 4, !tbaa !5
  %269 = call ptr @__errno_location() #11
  store i32 %268, ptr %269, align 4, !tbaa !5
  %270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %271 = load i32, ptr @test_count, align 4, !tbaa !5
  %272 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = call ptr @s2n_strerror(i32 noundef %273, ptr noundef @.str.4)
  %275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %276 = load i32, ptr %275, align 4, !tbaa !5
  %277 = call ptr @s2n_strerror_debug(i32 noundef %276, ptr noundef @.str.4)
  %278 = call ptr @__errno_location() #11
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %280 = call ptr @strerror(i32 noundef %279) #10
  %281 = call ptr @__errno_location() #11
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %270, ptr noundef @.str.5, i32 noundef %271, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 47, ptr noundef %274, ptr noundef %277, ptr noundef %280, i32 noundef %282) #10
  br label %284

284:                                              ; preds = %267, %250
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #10
  br label %285

285:                                              ; preds = %284
  call void @exit(i32 noundef 1) #12
  unreachable

286:                                              ; No predecessors!
  br label %287

287:                                              ; preds = %286, %233
  br label %288

288:                                              ; preds = %287
  br label %289

289:                                              ; preds = %288
  br label %290

290:                                              ; preds = %289
  %291 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %292 = icmp eq i32 %291, -1
  br i1 %292, label %293, label %344

293:                                              ; preds = %290
  br label %294

294:                                              ; preds = %293
  br label %295

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

302:                                              ; preds = %295
  %303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %304 = call i32 @fileno(ptr noundef %303) #10
  %305 = call i32 @isatty(i32 noundef %304) #10
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %324

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

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

341:                                              ; preds = %324, %307
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #10
  br label %342

342:                                              ; preds = %341
  call void @exit(i32 noundef 1) #12
  unreachable

343:                                              ; No predecessors!
  br label %344

344:                                              ; preds = %343, %290
  br label %345

345:                                              ; preds = %344
  %346 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %347 = trunc i8 %346 to i1
  br i1 %347, label %348, label %364

348:                                              ; preds = %345
  %349 = load ptr, ptr @stdout, align 8, !tbaa !9
  %350 = call i32 @fileno(ptr noundef %349) #10
  %351 = call i32 @isatty(i32 noundef %350) #10
  %352 = icmp ne i32 %351, 0
  br i1 %352, label %353, label %364

353:                                              ; preds = %348
  %354 = load i32, ptr @test_count, align 4, !tbaa !5
  %355 = icmp ne i32 %354, 0
  br i1 %355, label %356, label %360

356:                                              ; preds = %353
  %357 = load ptr, ptr @stdout, align 8, !tbaa !9
  %358 = load i32, ptr @test_count, align 4, !tbaa !5
  %359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %357, ptr noundef @.str.10, i32 noundef %358) #10
  br label %363

360:                                              ; preds = %353
  %361 = load ptr, ptr @stdout, align 8, !tbaa !9
  %362 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %361, ptr noundef @.str.11) #10
  br label %363

363:                                              ; preds = %360, %356
  br label %375

364:                                              ; preds = %348, %345
  %365 = load i32, ptr @test_count, align 4, !tbaa !5
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %371

367:                                              ; preds = %364
  %368 = load ptr, ptr @stdout, align 8, !tbaa !9
  %369 = load i32, ptr @test_count, align 4, !tbaa !5
  %370 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %368, ptr noundef @.str.12, i32 noundef %369) #10
  br label %374

371:                                              ; preds = %364
  %372 = load ptr, ptr @stdout, align 8, !tbaa !9
  %373 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %372, ptr noundef @.str.13) #10
  br label %374

374:                                              ; preds = %371, %367
  br label %375

375:                                              ; preds = %374, %363
  store i32 0, ptr %3, align 4
  br label %1630

376:                                              ; No predecessors!
  br label %377

377:                                              ; preds = %376
  br label %378

378:                                              ; preds = %377, %229
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %11, ptr align 1 @__const.main.test_versions, i64 4, i1 false)
  call void @llvm.lifetime.start.p0(i64 96, ptr %12) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %12, ptr align 16 @__const.main.test_certs, i64 96, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #10
  store i64 0, ptr %13, align 8, !tbaa !15
  br label %379

379:                                              ; preds = %1470, %378
  %380 = load i64, ptr %13, align 8, !tbaa !15
  %381 = icmp ult i64 %380, 4
  br i1 %381, label %383, label %382

382:                                              ; preds = %379
  store i32 40, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #10
  br label %1473

383:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  store ptr null, ptr %15, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12000, ptr %16) #10
  call void @llvm.memset.p0.i64(ptr align 16 %16, i8 0, i64 12000, i1 false)
  br label %384

384:                                              ; preds = %383
  %385 = load i32, ptr @test_count, align 4, !tbaa !5
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr @test_count, align 4, !tbaa !5
  %387 = getelementptr inbounds [12000 x i8], ptr %16, i64 0, i64 0
  %388 = load i64, ptr %13, align 8, !tbaa !15
  %389 = getelementptr inbounds [4 x %struct.anon], ptr %12, i64 0, i64 %388
  %390 = getelementptr inbounds %struct.anon, ptr %389, i32 0, i32 0
  %391 = load ptr, ptr %390, align 8, !tbaa !17
  %392 = load i64, ptr %13, align 8, !tbaa !15
  %393 = getelementptr inbounds [4 x %struct.anon], ptr %12, i64 0, i64 %392
  %394 = getelementptr inbounds %struct.anon, ptr %393, i32 0, i32 1
  %395 = load ptr, ptr %394, align 8, !tbaa !19
  %396 = call i32 @s2n_test_load_certificate(ptr noundef %15, ptr noundef %387, ptr noundef %391, ptr noundef %395)
  %397 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  store i32 %396, ptr %397, align 4
  %398 = getelementptr inbounds %struct.s2n_result, ptr %17, i32 0, i32 0
  %399 = load i32, ptr %398, align 4
  %400 = call zeroext i1 @s2n_result_is_ok(i32 %399)
  br i1 %400, label %454, label %401

401:                                              ; preds = %384
  br label %402

402:                                              ; preds = %401
  br label %403

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

410:                                              ; preds = %403
  %411 = load ptr, ptr @stderr, align 8, !tbaa !9
  %412 = call i32 @fileno(ptr noundef %411) #10
  %413 = call i32 @isatty(i32 noundef %412) #10
  %414 = icmp ne i32 %413, 0
  br i1 %414, label %415, label %432

415:                                              ; preds = %410
  %416 = load i32, ptr %18, align 4, !tbaa !5
  %417 = call ptr @__errno_location() #11
  store i32 %416, ptr %417, align 4, !tbaa !5
  %418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %419 = load i32, ptr @test_count, align 4, !tbaa !5
  %420 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = call ptr @s2n_strerror(i32 noundef %421, ptr noundef @.str.4)
  %423 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %424 = load i32, ptr %423, align 4, !tbaa !5
  %425 = call ptr @s2n_strerror_debug(i32 noundef %424, ptr noundef @.str.4)
  %426 = call ptr @__errno_location() #11
  %427 = load i32, ptr %426, align 4, !tbaa !5
  %428 = call ptr @strerror(i32 noundef %427) #10
  %429 = call ptr @__errno_location() #11
  %430 = load i32, ptr %429, align 4, !tbaa !5
  %431 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %418, ptr noundef @.str.2, i32 noundef %419, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 80, ptr noundef %422, ptr noundef %425, ptr noundef %428, i32 noundef %430) #10
  br label %449

432:                                              ; preds = %410, %403
  %433 = load i32, ptr %18, align 4, !tbaa !5
  %434 = call ptr @__errno_location() #11
  store i32 %433, ptr %434, align 4, !tbaa !5
  %435 = load ptr, ptr @stderr, align 8, !tbaa !9
  %436 = load i32, ptr @test_count, align 4, !tbaa !5
  %437 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = call ptr @s2n_strerror(i32 noundef %438, ptr noundef @.str.4)
  %440 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %441 = load i32, ptr %440, align 4, !tbaa !5
  %442 = call ptr @s2n_strerror_debug(i32 noundef %441, ptr noundef @.str.4)
  %443 = call ptr @__errno_location() #11
  %444 = load i32, ptr %443, align 4, !tbaa !5
  %445 = call ptr @strerror(i32 noundef %444) #10
  %446 = call ptr @__errno_location() #11
  %447 = load i32, ptr %446, align 4, !tbaa !5
  %448 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %435, ptr noundef @.str.5, i32 noundef %436, ptr noundef @.str.22, ptr noundef @.str.1, i32 noundef 80, ptr noundef %439, ptr noundef %442, ptr noundef %445, i32 noundef %447) #10
  br label %449

449:                                              ; preds = %432, %415
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  br label %450

450:                                              ; preds = %449
  br label %451

451:                                              ; preds = %450
  call void @exit(i32 noundef 1) #12
  unreachable

452:                                              ; No predecessors!
  br label %453

453:                                              ; preds = %452
  br label %454

454:                                              ; preds = %453, %384
  br label %455

455:                                              ; preds = %454
  br label %456

456:                                              ; preds = %455
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  store i64 0, ptr %19, align 8, !tbaa !15
  br label %457

457:                                              ; preds = %1464, %456
  %458 = load i64, ptr %19, align 8, !tbaa !15
  %459 = icmp ult i64 %458, 4
  br i1 %459, label %461, label %460

460:                                              ; preds = %457
  store i32 49, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %1467

461:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #10
  %462 = load i64, ptr %19, align 8, !tbaa !15
  %463 = getelementptr inbounds [4 x i8], ptr %11, i64 0, i64 %462
  %464 = load i8, ptr %463, align 1, !tbaa !20
  store i8 %464, ptr %20, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #10
  %465 = load i8, ptr %20, align 1, !tbaa !20
  %466 = zext i8 %465 to i32
  %467 = load i64, ptr %13, align 8, !tbaa !15
  %468 = getelementptr inbounds [4 x %struct.anon], ptr %12, i64 0, i64 %467
  %469 = getelementptr inbounds %struct.anon, ptr %468, i32 0, i32 2
  %470 = load i8, ptr %469, align 8, !tbaa !21
  %471 = zext i8 %470 to i32
  %472 = icmp sge i32 %466, %471
  %473 = zext i1 %472 to i8
  store i8 %473, ptr %21, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  store ptr @.str.23, ptr %22, align 8, !tbaa !9
  %474 = load i8, ptr %20, align 1, !tbaa !20
  %475 = zext i8 %474 to i32
  %476 = icmp sge i32 %475, 34
  br i1 %476, label %477, label %478

477:                                              ; preds = %461
  store ptr @.str.24, ptr %22, align 8, !tbaa !9
  br label %484

478:                                              ; preds = %461
  %479 = load i8, ptr %20, align 1, !tbaa !20
  %480 = zext i8 %479 to i32
  %481 = icmp slt i32 %480, 33
  br i1 %481, label %482, label %483

482:                                              ; preds = %478
  store ptr @.str.25, ptr %22, align 8, !tbaa !9
  br label %483

483:                                              ; preds = %482, %478
  br label %484

484:                                              ; preds = %483, %477
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %485 = call ptr @s2n_config_new()
  store ptr %485, ptr %23, align 8, !tbaa !9
  br label %486

486:                                              ; preds = %484
  %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 = load ptr, ptr %23, align 8, !tbaa !9
  %490 = icmp eq ptr %489, null
  br i1 %490, label %491, label %544

491:                                              ; preds = %486
  br label %492

492:                                              ; preds = %491
  br label %493

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

500:                                              ; preds = %493
  %501 = load ptr, ptr @stderr, align 8, !tbaa !9
  %502 = call i32 @fileno(ptr noundef %501) #10
  %503 = call i32 @isatty(i32 noundef %502) #10
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %505, label %522

505:                                              ; preds = %500
  %506 = load i32, ptr %24, align 4, !tbaa !5
  %507 = call ptr @__errno_location() #11
  store i32 %506, ptr %507, align 4, !tbaa !5
  %508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %509 = load i32, ptr @test_count, align 4, !tbaa !5
  %510 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %511 = load i32, ptr %510, align 4, !tbaa !5
  %512 = call ptr @s2n_strerror(i32 noundef %511, ptr noundef @.str.4)
  %513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %514 = load i32, ptr %513, align 4, !tbaa !5
  %515 = call ptr @s2n_strerror_debug(i32 noundef %514, ptr noundef @.str.4)
  %516 = call ptr @__errno_location() #11
  %517 = load i32, ptr %516, align 4, !tbaa !5
  %518 = call ptr @strerror(i32 noundef %517) #10
  %519 = call ptr @__errno_location() #11
  %520 = load i32, ptr %519, align 4, !tbaa !5
  %521 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %508, ptr noundef @.str.2, i32 noundef %509, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 98, ptr noundef %512, ptr noundef %515, ptr noundef %518, i32 noundef %520) #10
  br label %539

522:                                              ; preds = %500, %493
  %523 = load i32, ptr %24, align 4, !tbaa !5
  %524 = call ptr @__errno_location() #11
  store i32 %523, ptr %524, align 4, !tbaa !5
  %525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %526 = load i32, ptr @test_count, align 4, !tbaa !5
  %527 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %528 = load i32, ptr %527, align 4, !tbaa !5
  %529 = call ptr @s2n_strerror(i32 noundef %528, ptr noundef @.str.4)
  %530 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %531 = load i32, ptr %530, align 4, !tbaa !5
  %532 = call ptr @s2n_strerror_debug(i32 noundef %531, ptr noundef @.str.4)
  %533 = call ptr @__errno_location() #11
  %534 = load i32, ptr %533, align 4, !tbaa !5
  %535 = call ptr @strerror(i32 noundef %534) #10
  %536 = call ptr @__errno_location() #11
  %537 = load i32, ptr %536, align 4, !tbaa !5
  %538 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %525, ptr noundef @.str.5, i32 noundef %526, ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 98, ptr noundef %529, ptr noundef %532, ptr noundef %535, i32 noundef %537) #10
  br label %539

539:                                              ; preds = %522, %505
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %540

540:                                              ; preds = %539
  br label %541

541:                                              ; preds = %540
  call void @exit(i32 noundef 1) #12
  unreachable

542:                                              ; No predecessors!
  br label %543

543:                                              ; preds = %542
  br label %544

544:                                              ; preds = %543, %486
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545
  br label %547

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

554:                                              ; preds = %547
  br label %555

555:                                              ; preds = %554
  br label %556

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

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

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

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

602:                                              ; preds = %585, %568
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %603

603:                                              ; preds = %602
  br label %604

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

605:                                              ; No predecessors!
  br label %606

606:                                              ; preds = %605
  br label %607

607:                                              ; preds = %606, %547
  br label %608

608:                                              ; preds = %607
  br label %609

609:                                              ; preds = %608
  br label %610

610:                                              ; preds = %609
  %611 = load i32, ptr @test_count, align 4, !tbaa !5
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr @test_count, align 4, !tbaa !5
  %613 = load ptr, ptr %23, align 8, !tbaa !9
  %614 = getelementptr inbounds [12000 x i8], ptr %16, i64 0, i64 0
  %615 = call i32 @s2n_config_add_pem_to_trust_store(ptr noundef %613, ptr noundef %614)
  %616 = icmp eq i32 %615, -1
  br i1 %616, label %617, label %670

617:                                              ; preds = %610
  br label %618

618:                                              ; preds = %617
  br label %619

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

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

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

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

665:                                              ; preds = %648, %631
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %666

666:                                              ; preds = %665
  br label %667

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

668:                                              ; No predecessors!
  br label %669

669:                                              ; preds = %668
  br label %670

670:                                              ; preds = %669, %610
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  br label %673

673:                                              ; preds = %672
  %674 = load i32, ptr @test_count, align 4, !tbaa !5
  %675 = add nsw i32 %674, 1
  store i32 %675, ptr @test_count, align 4, !tbaa !5
  %676 = load ptr, ptr %23, align 8, !tbaa !9
  %677 = call i32 @s2n_config_set_verify_host_callback(ptr noundef %676, ptr noundef @s2n_noop_verify_host_fn, ptr noundef null)
  %678 = icmp eq i32 %677, -1
  br i1 %678, label %679, label %732

679:                                              ; preds = %673
  br label %680

680:                                              ; preds = %679
  br label %681

681:                                              ; preds = %680
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  %682 = call ptr @__errno_location() #11
  %683 = load i32, ptr %682, align 4, !tbaa !5
  store i32 %683, ptr %27, 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) #10
  %691 = call i32 @isatty(i32 noundef %690) #10
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %693, label %710

693:                                              ; preds = %688
  %694 = load i32, ptr %27, align 4, !tbaa !5
  %695 = call ptr @__errno_location() #11
  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() #11
  %705 = load i32, ptr %704, align 4, !tbaa !5
  %706 = call ptr @strerror(i32 noundef %705) #10
  %707 = call ptr @__errno_location() #11
  %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.29, ptr noundef @.str.1, i32 noundef 101, ptr noundef %700, ptr noundef %703, ptr noundef %706, i32 noundef %708) #10
  br label %727

710:                                              ; preds = %688, %681
  %711 = load i32, ptr %27, align 4, !tbaa !5
  %712 = call ptr @__errno_location() #11
  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() #11
  %722 = load i32, ptr %721, align 4, !tbaa !5
  %723 = call ptr @strerror(i32 noundef %722) #10
  %724 = call ptr @__errno_location() #11
  %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.29, ptr noundef @.str.1, i32 noundef 101, ptr noundef %717, ptr noundef %720, ptr noundef %723, i32 noundef %725) #10
  br label %727

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

728:                                              ; preds = %727
  br label %729

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

730:                                              ; No predecessors!
  br label %731

731:                                              ; preds = %730
  br label %732

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

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734
  %736 = load i32, ptr @test_count, align 4, !tbaa !5
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr @test_count, align 4, !tbaa !5
  %738 = load ptr, ptr %23, align 8, !tbaa !9
  %739 = call i32 @s2n_config_set_max_blinding_delay(ptr noundef %738, i32 noundef 0)
  %740 = icmp eq i32 %739, -1
  br i1 %740, label %741, label %794

741:                                              ; preds = %735
  br label %742

742:                                              ; preds = %741
  br label %743

743:                                              ; preds = %742
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  %744 = call ptr @__errno_location() #11
  %745 = load i32, ptr %744, align 4, !tbaa !5
  store i32 %745, ptr %28, align 4, !tbaa !5
  %746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %747 = call i32 @s2n_print_stacktrace(ptr noundef %746)
  %748 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %749 = trunc i8 %748 to i1
  br i1 %749, label %750, label %772

750:                                              ; preds = %743
  %751 = load ptr, ptr @stderr, align 8, !tbaa !9
  %752 = call i32 @fileno(ptr noundef %751) #10
  %753 = call i32 @isatty(i32 noundef %752) #10
  %754 = icmp ne i32 %753, 0
  br i1 %754, label %755, label %772

755:                                              ; preds = %750
  %756 = load i32, ptr %28, align 4, !tbaa !5
  %757 = call ptr @__errno_location() #11
  store i32 %756, ptr %757, align 4, !tbaa !5
  %758 = load ptr, ptr @stderr, align 8, !tbaa !9
  %759 = load i32, ptr @test_count, align 4, !tbaa !5
  %760 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %761 = load i32, ptr %760, align 4, !tbaa !5
  %762 = call ptr @s2n_strerror(i32 noundef %761, ptr noundef @.str.4)
  %763 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %764 = load i32, ptr %763, align 4, !tbaa !5
  %765 = call ptr @s2n_strerror_debug(i32 noundef %764, ptr noundef @.str.4)
  %766 = call ptr @__errno_location() #11
  %767 = load i32, ptr %766, align 4, !tbaa !5
  %768 = call ptr @strerror(i32 noundef %767) #10
  %769 = call ptr @__errno_location() #11
  %770 = load i32, ptr %769, align 4, !tbaa !5
  %771 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %758, ptr noundef @.str.2, i32 noundef %759, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 102, ptr noundef %762, ptr noundef %765, ptr noundef %768, i32 noundef %770) #10
  br label %789

772:                                              ; preds = %750, %743
  %773 = load i32, ptr %28, align 4, !tbaa !5
  %774 = call ptr @__errno_location() #11
  store i32 %773, ptr %774, align 4, !tbaa !5
  %775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %776 = load i32, ptr @test_count, align 4, !tbaa !5
  %777 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %778 = load i32, ptr %777, align 4, !tbaa !5
  %779 = call ptr @s2n_strerror(i32 noundef %778, ptr noundef @.str.4)
  %780 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %781 = load i32, ptr %780, align 4, !tbaa !5
  %782 = call ptr @s2n_strerror_debug(i32 noundef %781, ptr noundef @.str.4)
  %783 = call ptr @__errno_location() #11
  %784 = load i32, ptr %783, align 4, !tbaa !5
  %785 = call ptr @strerror(i32 noundef %784) #10
  %786 = call ptr @__errno_location() #11
  %787 = load i32, ptr %786, align 4, !tbaa !5
  %788 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %775, ptr noundef @.str.5, i32 noundef %776, ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 102, ptr noundef %779, ptr noundef %782, ptr noundef %785, i32 noundef %787) #10
  br label %789

789:                                              ; preds = %772, %755
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  br label %790

790:                                              ; preds = %789
  br label %791

791:                                              ; preds = %790
  call void @exit(i32 noundef 1) #12
  unreachable

792:                                              ; No predecessors!
  br label %793

793:                                              ; preds = %792
  br label %794

794:                                              ; preds = %793, %735
  br label %795

795:                                              ; preds = %794
  br label %796

796:                                              ; preds = %795
  br label %797

797:                                              ; preds = %796
  %798 = load i32, ptr @test_count, align 4, !tbaa !5
  %799 = add nsw i32 %798, 1
  store i32 %799, ptr @test_count, align 4, !tbaa !5
  %800 = load ptr, ptr %23, align 8, !tbaa !9
  %801 = load ptr, ptr %22, align 8, !tbaa !9
  %802 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %800, ptr noundef %801)
  %803 = icmp eq i32 %802, -1
  br i1 %803, label %804, label %857

804:                                              ; preds = %797
  br label %805

805:                                              ; preds = %804
  br label %806

806:                                              ; preds = %805
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  %807 = call ptr @__errno_location() #11
  %808 = load i32, ptr %807, align 4, !tbaa !5
  store i32 %808, ptr %29, align 4, !tbaa !5
  %809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %810 = call i32 @s2n_print_stacktrace(ptr noundef %809)
  %811 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %812 = trunc i8 %811 to i1
  br i1 %812, label %813, label %835

813:                                              ; preds = %806
  %814 = load ptr, ptr @stderr, align 8, !tbaa !9
  %815 = call i32 @fileno(ptr noundef %814) #10
  %816 = call i32 @isatty(i32 noundef %815) #10
  %817 = icmp ne i32 %816, 0
  br i1 %817, label %818, label %835

818:                                              ; preds = %813
  %819 = load i32, ptr %29, align 4, !tbaa !5
  %820 = call ptr @__errno_location() #11
  store i32 %819, ptr %820, align 4, !tbaa !5
  %821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %822 = load i32, ptr @test_count, align 4, !tbaa !5
  %823 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %824 = load i32, ptr %823, align 4, !tbaa !5
  %825 = call ptr @s2n_strerror(i32 noundef %824, ptr noundef @.str.4)
  %826 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %827 = load i32, ptr %826, align 4, !tbaa !5
  %828 = call ptr @s2n_strerror_debug(i32 noundef %827, ptr noundef @.str.4)
  %829 = call ptr @__errno_location() #11
  %830 = load i32, ptr %829, align 4, !tbaa !5
  %831 = call ptr @strerror(i32 noundef %830) #10
  %832 = call ptr @__errno_location() #11
  %833 = load i32, ptr %832, align 4, !tbaa !5
  %834 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %821, ptr noundef @.str.2, i32 noundef %822, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 103, ptr noundef %825, ptr noundef %828, ptr noundef %831, i32 noundef %833) #10
  br label %852

835:                                              ; preds = %813, %806
  %836 = load i32, ptr %29, align 4, !tbaa !5
  %837 = call ptr @__errno_location() #11
  store i32 %836, ptr %837, align 4, !tbaa !5
  %838 = load ptr, ptr @stderr, align 8, !tbaa !9
  %839 = load i32, ptr @test_count, align 4, !tbaa !5
  %840 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %841 = load i32, ptr %840, align 4, !tbaa !5
  %842 = call ptr @s2n_strerror(i32 noundef %841, ptr noundef @.str.4)
  %843 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %844 = load i32, ptr %843, align 4, !tbaa !5
  %845 = call ptr @s2n_strerror_debug(i32 noundef %844, ptr noundef @.str.4)
  %846 = call ptr @__errno_location() #11
  %847 = load i32, ptr %846, align 4, !tbaa !5
  %848 = call ptr @strerror(i32 noundef %847) #10
  %849 = call ptr @__errno_location() #11
  %850 = load i32, ptr %849, align 4, !tbaa !5
  %851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %838, ptr noundef @.str.5, i32 noundef %839, ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 103, ptr noundef %842, ptr noundef %845, ptr noundef %848, i32 noundef %850) #10
  br label %852

852:                                              ; preds = %835, %818
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %853

853:                                              ; preds = %852
  br label %854

854:                                              ; preds = %853
  call void @exit(i32 noundef 1) #12
  unreachable

855:                                              ; No predecessors!
  br label %856

856:                                              ; preds = %855
  br label %857

857:                                              ; preds = %856, %797
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %860 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %860, ptr %30, align 8, !tbaa !9
  br label %861

861:                                              ; preds = %859
  %862 = load i32, ptr @test_count, align 4, !tbaa !5
  %863 = add nsw i32 %862, 1
  store i32 %863, ptr @test_count, align 4, !tbaa !5
  %864 = load ptr, ptr %30, align 8, !tbaa !9
  %865 = icmp eq ptr %864, null
  br i1 %865, label %866, label %919

866:                                              ; preds = %861
  br label %867

867:                                              ; preds = %866
  br label %868

868:                                              ; preds = %867
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  %869 = call ptr @__errno_location() #11
  %870 = load i32, ptr %869, align 4, !tbaa !5
  store i32 %870, ptr %31, align 4, !tbaa !5
  %871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %872 = call i32 @s2n_print_stacktrace(ptr noundef %871)
  %873 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %874 = trunc i8 %873 to i1
  br i1 %874, label %875, label %897

875:                                              ; preds = %868
  %876 = load ptr, ptr @stderr, align 8, !tbaa !9
  %877 = call i32 @fileno(ptr noundef %876) #10
  %878 = call i32 @isatty(i32 noundef %877) #10
  %879 = icmp ne i32 %878, 0
  br i1 %879, label %880, label %897

880:                                              ; preds = %875
  %881 = load i32, ptr %31, align 4, !tbaa !5
  %882 = call ptr @__errno_location() #11
  store i32 %881, ptr %882, align 4, !tbaa !5
  %883 = load ptr, ptr @stderr, align 8, !tbaa !9
  %884 = load i32, ptr @test_count, align 4, !tbaa !5
  %885 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %886 = load i32, ptr %885, align 4, !tbaa !5
  %887 = call ptr @s2n_strerror(i32 noundef %886, ptr noundef @.str.4)
  %888 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %889 = load i32, ptr %888, align 4, !tbaa !5
  %890 = call ptr @s2n_strerror_debug(i32 noundef %889, ptr noundef @.str.4)
  %891 = call ptr @__errno_location() #11
  %892 = load i32, ptr %891, align 4, !tbaa !5
  %893 = call ptr @strerror(i32 noundef %892) #10
  %894 = call ptr @__errno_location() #11
  %895 = load i32, ptr %894, align 4, !tbaa !5
  %896 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %883, ptr noundef @.str.2, i32 noundef %884, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 107, ptr noundef %887, ptr noundef %890, ptr noundef %893, i32 noundef %895) #10
  br label %914

897:                                              ; preds = %875, %868
  %898 = load i32, ptr %31, align 4, !tbaa !5
  %899 = call ptr @__errno_location() #11
  store i32 %898, ptr %899, align 4, !tbaa !5
  %900 = load ptr, ptr @stderr, align 8, !tbaa !9
  %901 = load i32, ptr @test_count, align 4, !tbaa !5
  %902 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %903 = load i32, ptr %902, align 4, !tbaa !5
  %904 = call ptr @s2n_strerror(i32 noundef %903, ptr noundef @.str.4)
  %905 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %906 = load i32, ptr %905, align 4, !tbaa !5
  %907 = call ptr @s2n_strerror_debug(i32 noundef %906, ptr noundef @.str.4)
  %908 = call ptr @__errno_location() #11
  %909 = load i32, ptr %908, align 4, !tbaa !5
  %910 = call ptr @strerror(i32 noundef %909) #10
  %911 = call ptr @__errno_location() #11
  %912 = load i32, ptr %911, align 4, !tbaa !5
  %913 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %900, ptr noundef @.str.5, i32 noundef %901, ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 107, ptr noundef %904, ptr noundef %907, ptr noundef %910, i32 noundef %912) #10
  br label %914

914:                                              ; preds = %897, %880
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %915

915:                                              ; preds = %914
  br label %916

916:                                              ; preds = %915
  call void @exit(i32 noundef 1) #12
  unreachable

917:                                              ; No predecessors!
  br label %918

918:                                              ; preds = %917
  br label %919

919:                                              ; preds = %918, %861
  br label %920

920:                                              ; preds = %919
  br label %921

921:                                              ; preds = %920
  br label %922

922:                                              ; preds = %921
  %923 = load i32, ptr @test_count, align 4, !tbaa !5
  %924 = add nsw i32 %923, 1
  store i32 %924, ptr @test_count, align 4, !tbaa !5
  %925 = load ptr, ptr %30, align 8, !tbaa !9
  %926 = load ptr, ptr %23, align 8, !tbaa !9
  %927 = call i32 @s2n_connection_set_config(ptr noundef %925, ptr noundef %926)
  %928 = icmp eq i32 %927, -1
  br i1 %928, label %929, label %982

929:                                              ; preds = %922
  br label %930

930:                                              ; preds = %929
  br label %931

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

938:                                              ; preds = %931
  %939 = load ptr, ptr @stderr, align 8, !tbaa !9
  %940 = call i32 @fileno(ptr noundef %939) #10
  %941 = call i32 @isatty(i32 noundef %940) #10
  %942 = icmp ne i32 %941, 0
  br i1 %942, label %943, label %960

943:                                              ; preds = %938
  %944 = load i32, ptr %32, align 4, !tbaa !5
  %945 = call ptr @__errno_location() #11
  store i32 %944, ptr %945, align 4, !tbaa !5
  %946 = load ptr, ptr @stderr, align 8, !tbaa !9
  %947 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %949, ptr noundef @.str.4)
  %951 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %952 = load i32, ptr %951, align 4, !tbaa !5
  %953 = call ptr @s2n_strerror_debug(i32 noundef %952, ptr noundef @.str.4)
  %954 = call ptr @__errno_location() #11
  %955 = load i32, ptr %954, align 4, !tbaa !5
  %956 = call ptr @strerror(i32 noundef %955) #10
  %957 = call ptr @__errno_location() #11
  %958 = load i32, ptr %957, align 4, !tbaa !5
  %959 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %946, ptr noundef @.str.2, i32 noundef %947, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 108, ptr noundef %950, ptr noundef %953, ptr noundef %956, i32 noundef %958) #10
  br label %977

960:                                              ; preds = %938, %931
  %961 = load i32, ptr %32, align 4, !tbaa !5
  %962 = call ptr @__errno_location() #11
  store i32 %961, ptr %962, align 4, !tbaa !5
  %963 = load ptr, ptr @stderr, align 8, !tbaa !9
  %964 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %966, ptr noundef @.str.4)
  %968 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %969 = load i32, ptr %968, align 4, !tbaa !5
  %970 = call ptr @s2n_strerror_debug(i32 noundef %969, ptr noundef @.str.4)
  %971 = call ptr @__errno_location() #11
  %972 = load i32, ptr %971, align 4, !tbaa !5
  %973 = call ptr @strerror(i32 noundef %972) #10
  %974 = call ptr @__errno_location() #11
  %975 = load i32, ptr %974, align 4, !tbaa !5
  %976 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %963, ptr noundef @.str.5, i32 noundef %964, ptr noundef @.str.33, ptr noundef @.str.1, i32 noundef 108, ptr noundef %967, ptr noundef %970, ptr noundef %973, i32 noundef %975) #10
  br label %977

977:                                              ; preds = %960, %943
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %978

978:                                              ; preds = %977
  br label %979

979:                                              ; preds = %978
  call void @exit(i32 noundef 1) #12
  unreachable

980:                                              ; No predecessors!
  br label %981

981:                                              ; preds = %980
  br label %982

982:                                              ; preds = %981, %922
  br label %983

983:                                              ; preds = %982
  br label %984

984:                                              ; preds = %983
  %985 = load i8, ptr %20, align 1, !tbaa !20
  %986 = load ptr, ptr %30, align 8, !tbaa !9
  %987 = getelementptr inbounds %struct.s2n_connection, ptr %986, i32 0, i32 22
  store i8 %985, ptr %987, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %988 = call ptr @s2n_connection_new(i32 noundef 1)
  store ptr %988, ptr %33, align 8, !tbaa !9
  br label %989

989:                                              ; preds = %984
  %990 = load i32, ptr @test_count, align 4, !tbaa !5
  %991 = add nsw i32 %990, 1
  store i32 %991, ptr @test_count, align 4, !tbaa !5
  %992 = load ptr, ptr %33, align 8, !tbaa !9
  %993 = icmp eq ptr %992, null
  br i1 %993, label %994, label %1047

994:                                              ; preds = %989
  br label %995

995:                                              ; preds = %994
  br label %996

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

1003:                                             ; preds = %996
  %1004 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1005 = call i32 @fileno(ptr noundef %1004) #10
  %1006 = call i32 @isatty(i32 noundef %1005) #10
  %1007 = icmp ne i32 %1006, 0
  br i1 %1007, label %1008, label %1025

1008:                                             ; preds = %1003
  %1009 = load i32, ptr %34, align 4, !tbaa !5
  %1010 = call ptr @__errno_location() #11
  store i32 %1009, ptr %1010, align 4, !tbaa !5
  %1011 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1012 = load i32, ptr @test_count, align 4, !tbaa !5
  %1013 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1014 = load i32, ptr %1013, align 4, !tbaa !5
  %1015 = call ptr @s2n_strerror(i32 noundef %1014, ptr noundef @.str.4)
  %1016 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1017 = load i32, ptr %1016, align 4, !tbaa !5
  %1018 = call ptr @s2n_strerror_debug(i32 noundef %1017, ptr noundef @.str.4)
  %1019 = call ptr @__errno_location() #11
  %1020 = load i32, ptr %1019, align 4, !tbaa !5
  %1021 = call ptr @strerror(i32 noundef %1020) #10
  %1022 = call ptr @__errno_location() #11
  %1023 = load i32, ptr %1022, align 4, !tbaa !5
  %1024 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1011, ptr noundef @.str.2, i32 noundef %1012, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1015, ptr noundef %1018, ptr noundef %1021, i32 noundef %1023) #10
  br label %1042

1025:                                             ; preds = %1003, %996
  %1026 = load i32, ptr %34, align 4, !tbaa !5
  %1027 = call ptr @__errno_location() #11
  store i32 %1026, ptr %1027, align 4, !tbaa !5
  %1028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1029 = load i32, ptr @test_count, align 4, !tbaa !5
  %1030 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1031 = load i32, ptr %1030, align 4, !tbaa !5
  %1032 = call ptr @s2n_strerror(i32 noundef %1031, ptr noundef @.str.4)
  %1033 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1034 = load i32, ptr %1033, align 4, !tbaa !5
  %1035 = call ptr @s2n_strerror_debug(i32 noundef %1034, ptr noundef @.str.4)
  %1036 = call ptr @__errno_location() #11
  %1037 = load i32, ptr %1036, align 4, !tbaa !5
  %1038 = call ptr @strerror(i32 noundef %1037) #10
  %1039 = call ptr @__errno_location() #11
  %1040 = load i32, ptr %1039, align 4, !tbaa !5
  %1041 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1028, ptr noundef @.str.5, i32 noundef %1029, ptr noundef @.str.34, ptr noundef @.str.1, i32 noundef 113, ptr noundef %1032, ptr noundef %1035, ptr noundef %1038, i32 noundef %1040) #10
  br label %1042

1042:                                             ; preds = %1025, %1008
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %1043

1043:                                             ; preds = %1042
  br label %1044

1044:                                             ; preds = %1043
  call void @exit(i32 noundef 1) #12
  unreachable

1045:                                             ; No predecessors!
  br label %1046

1046:                                             ; preds = %1045
  br label %1047

1047:                                             ; preds = %1046, %989
  br label %1048

1048:                                             ; preds = %1047
  br label %1049

1049:                                             ; preds = %1048
  br label %1050

1050:                                             ; preds = %1049
  %1051 = load i32, ptr @test_count, align 4, !tbaa !5
  %1052 = add nsw i32 %1051, 1
  store i32 %1052, ptr @test_count, align 4, !tbaa !5
  %1053 = load ptr, ptr %33, align 8, !tbaa !9
  %1054 = load ptr, ptr %23, align 8, !tbaa !9
  %1055 = call i32 @s2n_connection_set_config(ptr noundef %1053, ptr noundef %1054)
  %1056 = icmp eq i32 %1055, -1
  br i1 %1056, label %1057, label %1110

1057:                                             ; preds = %1050
  br label %1058

1058:                                             ; preds = %1057
  br label %1059

1059:                                             ; preds = %1058
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  %1060 = call ptr @__errno_location() #11
  %1061 = load i32, ptr %1060, align 4, !tbaa !5
  store i32 %1061, ptr %35, align 4, !tbaa !5
  %1062 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1063 = call i32 @s2n_print_stacktrace(ptr noundef %1062)
  %1064 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1065 = trunc i8 %1064 to i1
  br i1 %1065, label %1066, label %1088

1066:                                             ; preds = %1059
  %1067 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1068 = call i32 @fileno(ptr noundef %1067) #10
  %1069 = call i32 @isatty(i32 noundef %1068) #10
  %1070 = icmp ne i32 %1069, 0
  br i1 %1070, label %1071, label %1088

1071:                                             ; preds = %1066
  %1072 = load i32, ptr %35, align 4, !tbaa !5
  %1073 = call ptr @__errno_location() #11
  store i32 %1072, ptr %1073, align 4, !tbaa !5
  %1074 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1075 = load i32, ptr @test_count, align 4, !tbaa !5
  %1076 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1077 = load i32, ptr %1076, align 4, !tbaa !5
  %1078 = call ptr @s2n_strerror(i32 noundef %1077, ptr noundef @.str.4)
  %1079 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1080 = load i32, ptr %1079, align 4, !tbaa !5
  %1081 = call ptr @s2n_strerror_debug(i32 noundef %1080, ptr noundef @.str.4)
  %1082 = call ptr @__errno_location() #11
  %1083 = load i32, ptr %1082, align 4, !tbaa !5
  %1084 = call ptr @strerror(i32 noundef %1083) #10
  %1085 = call ptr @__errno_location() #11
  %1086 = load i32, ptr %1085, align 4, !tbaa !5
  %1087 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1074, ptr noundef @.str.2, i32 noundef %1075, ptr noundef @.str.35, ptr noundef @.str.1, i32 noundef 114, ptr noundef %1078, ptr noundef %1081, ptr noundef %1084, i32 noundef %1086) #10
  br label %1105

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

1105:                                             ; preds = %1088, %1071
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %1106

1106:                                             ; preds = %1105
  br label %1107

1107:                                             ; preds = %1106
  call void @exit(i32 noundef 1) #12
  unreachable

1108:                                             ; No predecessors!
  br label %1109

1109:                                             ; preds = %1108
  br label %1110

1110:                                             ; preds = %1109, %1050
  br label %1111

1111:                                             ; preds = %1110
  br label %1112

1112:                                             ; preds = %1111
  %1113 = load i8, ptr %20, align 1, !tbaa !20
  %1114 = load ptr, ptr %33, align 8, !tbaa !9
  %1115 = getelementptr inbounds %struct.s2n_connection, ptr %1114, i32 0, i32 21
  store i8 %1113, ptr %1115, align 2, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  call void @llvm.memset.p0.i64(ptr align 4 %36, i8 0, i64 8, i1 false)
  br label %1116

1116:                                             ; preds = %1112
  %1117 = load i32, ptr @test_count, align 4, !tbaa !5
  %1118 = add nsw i32 %1117, 1
  store i32 %1118, ptr @test_count, align 4, !tbaa !5
  %1119 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef %36)
  %1120 = icmp eq i32 %1119, -1
  br i1 %1120, label %1121, label %1174

1121:                                             ; preds = %1116
  br label %1122

1122:                                             ; preds = %1121
  br label %1123

1123:                                             ; preds = %1122
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  %1124 = call ptr @__errno_location() #11
  %1125 = load i32, ptr %1124, align 4, !tbaa !5
  store i32 %1125, ptr %37, align 4, !tbaa !5
  %1126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1127 = call i32 @s2n_print_stacktrace(ptr noundef %1126)
  %1128 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1129 = trunc i8 %1128 to i1
  br i1 %1129, label %1130, label %1152

1130:                                             ; preds = %1123
  %1131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1132 = call i32 @fileno(ptr noundef %1131) #10
  %1133 = call i32 @isatty(i32 noundef %1132) #10
  %1134 = icmp ne i32 %1133, 0
  br i1 %1134, label %1135, label %1152

1135:                                             ; preds = %1130
  %1136 = load i32, ptr %37, align 4, !tbaa !5
  %1137 = call ptr @__errno_location() #11
  store i32 %1136, ptr %1137, align 4, !tbaa !5
  %1138 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1139 = load i32, ptr @test_count, align 4, !tbaa !5
  %1140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1141 = load i32, ptr %1140, align 4, !tbaa !5
  %1142 = call ptr @s2n_strerror(i32 noundef %1141, ptr noundef @.str.4)
  %1143 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1144 = load i32, ptr %1143, align 4, !tbaa !5
  %1145 = call ptr @s2n_strerror_debug(i32 noundef %1144, ptr noundef @.str.4)
  %1146 = call ptr @__errno_location() #11
  %1147 = load i32, ptr %1146, align 4, !tbaa !5
  %1148 = call ptr @strerror(i32 noundef %1147) #10
  %1149 = call ptr @__errno_location() #11
  %1150 = load i32, ptr %1149, align 4, !tbaa !5
  %1151 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1138, ptr noundef @.str.2, i32 noundef %1139, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 118, ptr noundef %1142, ptr noundef %1145, ptr noundef %1148, i32 noundef %1150) #10
  br label %1169

1152:                                             ; preds = %1130, %1123
  %1153 = load i32, ptr %37, align 4, !tbaa !5
  %1154 = call ptr @__errno_location() #11
  store i32 %1153, ptr %1154, align 4, !tbaa !5
  %1155 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1156 = load i32, ptr @test_count, align 4, !tbaa !5
  %1157 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1158 = load i32, ptr %1157, align 4, !tbaa !5
  %1159 = call ptr @s2n_strerror(i32 noundef %1158, ptr noundef @.str.4)
  %1160 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1161 = load i32, ptr %1160, align 4, !tbaa !5
  %1162 = call ptr @s2n_strerror_debug(i32 noundef %1161, ptr noundef @.str.4)
  %1163 = call ptr @__errno_location() #11
  %1164 = load i32, ptr %1163, align 4, !tbaa !5
  %1165 = call ptr @strerror(i32 noundef %1164) #10
  %1166 = call ptr @__errno_location() #11
  %1167 = load i32, ptr %1166, align 4, !tbaa !5
  %1168 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1155, ptr noundef @.str.5, i32 noundef %1156, ptr noundef @.str.36, ptr noundef @.str.1, i32 noundef 118, ptr noundef %1159, ptr noundef %1162, ptr noundef %1165, i32 noundef %1167) #10
  br label %1169

1169:                                             ; preds = %1152, %1135
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %1170

1170:                                             ; preds = %1169
  br label %1171

1171:                                             ; preds = %1170
  call void @exit(i32 noundef 1) #12
  unreachable

1172:                                             ; No predecessors!
  br label %1173

1173:                                             ; preds = %1172
  br label %1174

1174:                                             ; preds = %1173, %1116
  br label %1175

1175:                                             ; preds = %1174
  br label %1176

1176:                                             ; preds = %1175
  br label %1177

1177:                                             ; preds = %1176
  %1178 = load i32, ptr @test_count, align 4, !tbaa !5
  %1179 = add nsw i32 %1178, 1
  store i32 %1179, ptr @test_count, align 4, !tbaa !5
  %1180 = load ptr, ptr %33, align 8, !tbaa !9
  %1181 = load ptr, ptr %30, align 8, !tbaa !9
  %1182 = call i32 @s2n_connections_set_io_pair(ptr noundef %1180, ptr noundef %1181, ptr noundef %36)
  %1183 = icmp eq i32 %1182, -1
  br i1 %1183, label %1184, label %1237

1184:                                             ; preds = %1177
  br label %1185

1185:                                             ; preds = %1184
  br label %1186

1186:                                             ; preds = %1185
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  %1187 = call ptr @__errno_location() #11
  %1188 = load i32, ptr %1187, align 4, !tbaa !5
  store i32 %1188, ptr %38, align 4, !tbaa !5
  %1189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1190 = call i32 @s2n_print_stacktrace(ptr noundef %1189)
  %1191 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1192 = trunc i8 %1191 to i1
  br i1 %1192, label %1193, label %1215

1193:                                             ; preds = %1186
  %1194 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1195 = call i32 @fileno(ptr noundef %1194) #10
  %1196 = call i32 @isatty(i32 noundef %1195) #10
  %1197 = icmp ne i32 %1196, 0
  br i1 %1197, label %1198, label %1215

1198:                                             ; preds = %1193
  %1199 = load i32, ptr %38, align 4, !tbaa !5
  %1200 = call ptr @__errno_location() #11
  store i32 %1199, ptr %1200, align 4, !tbaa !5
  %1201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1202 = load i32, ptr @test_count, align 4, !tbaa !5
  %1203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1204 = load i32, ptr %1203, align 4, !tbaa !5
  %1205 = call ptr @s2n_strerror(i32 noundef %1204, ptr noundef @.str.4)
  %1206 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1207 = load i32, ptr %1206, align 4, !tbaa !5
  %1208 = call ptr @s2n_strerror_debug(i32 noundef %1207, ptr noundef @.str.4)
  %1209 = call ptr @__errno_location() #11
  %1210 = load i32, ptr %1209, align 4, !tbaa !5
  %1211 = call ptr @strerror(i32 noundef %1210) #10
  %1212 = call ptr @__errno_location() #11
  %1213 = load i32, ptr %1212, align 4, !tbaa !5
  %1214 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1201, ptr noundef @.str.2, i32 noundef %1202, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 119, ptr noundef %1205, ptr noundef %1208, ptr noundef %1211, i32 noundef %1213) #10
  br label %1232

1215:                                             ; preds = %1193, %1186
  %1216 = load i32, ptr %38, align 4, !tbaa !5
  %1217 = call ptr @__errno_location() #11
  store i32 %1216, ptr %1217, align 4, !tbaa !5
  %1218 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1219 = load i32, ptr @test_count, align 4, !tbaa !5
  %1220 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1221 = load i32, ptr %1220, align 4, !tbaa !5
  %1222 = call ptr @s2n_strerror(i32 noundef %1221, ptr noundef @.str.4)
  %1223 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1224 = load i32, ptr %1223, align 4, !tbaa !5
  %1225 = call ptr @s2n_strerror_debug(i32 noundef %1224, ptr noundef @.str.4)
  %1226 = call ptr @__errno_location() #11
  %1227 = load i32, ptr %1226, align 4, !tbaa !5
  %1228 = call ptr @strerror(i32 noundef %1227) #10
  %1229 = call ptr @__errno_location() #11
  %1230 = load i32, ptr %1229, align 4, !tbaa !5
  %1231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1218, ptr noundef @.str.5, i32 noundef %1219, ptr noundef @.str.37, ptr noundef @.str.1, i32 noundef 119, ptr noundef %1222, ptr noundef %1225, ptr noundef %1228, i32 noundef %1230) #10
  br label %1232

1232:                                             ; preds = %1215, %1198
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %1233

1233:                                             ; preds = %1232
  br label %1234

1234:                                             ; preds = %1233
  call void @exit(i32 noundef 1) #12
  unreachable

1235:                                             ; No predecessors!
  br label %1236

1236:                                             ; preds = %1235
  br label %1237

1237:                                             ; preds = %1236, %1177
  br label %1238

1238:                                             ; preds = %1237
  br label %1239

1239:                                             ; preds = %1238
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #10
  %1240 = load ptr, ptr %30, align 8, !tbaa !9
  %1241 = load ptr, ptr %33, align 8, !tbaa !9
  %1242 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %1240, ptr noundef %1241)
  %1243 = icmp eq i32 %1242, 0
  %1244 = zext i1 %1243 to i8
  store i8 %1244, ptr %39, align 1, !tbaa !11
  %1245 = load i8, ptr %39, align 1, !tbaa !11, !range !13, !noundef !14
  %1246 = trunc i8 %1245 to i1
  br i1 %1246, label %1247, label %1380

1247:                                             ; preds = %1239
  br label %1248

1248:                                             ; preds = %1247
  %1249 = load i32, ptr @test_count, align 4, !tbaa !5
  %1250 = add nsw i32 %1249, 1
  store i32 %1250, ptr @test_count, align 4, !tbaa !5
  %1251 = load ptr, ptr %30, align 8, !tbaa !9
  %1252 = getelementptr inbounds %struct.s2n_connection, ptr %1251, i32 0, i32 23
  %1253 = load i8, ptr %1252, align 4, !tbaa !49
  %1254 = zext i8 %1253 to i32
  %1255 = load i8, ptr %20, align 1, !tbaa !20
  %1256 = zext i8 %1255 to i32
  %1257 = icmp eq i32 %1254, %1256
  br i1 %1257, label %1311, label %1258

1258:                                             ; preds = %1248
  br label %1259

1259:                                             ; preds = %1258
  br label %1260

1260:                                             ; preds = %1259
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  %1261 = call ptr @__errno_location() #11
  %1262 = load i32, ptr %1261, align 4, !tbaa !5
  store i32 %1262, ptr %40, align 4, !tbaa !5
  %1263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1264 = call i32 @s2n_print_stacktrace(ptr noundef %1263)
  %1265 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1266 = trunc i8 %1265 to i1
  br i1 %1266, label %1267, label %1289

1267:                                             ; preds = %1260
  %1268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1269 = call i32 @fileno(ptr noundef %1268) #10
  %1270 = call i32 @isatty(i32 noundef %1269) #10
  %1271 = icmp ne i32 %1270, 0
  br i1 %1271, label %1272, label %1289

1272:                                             ; preds = %1267
  %1273 = load i32, ptr %40, align 4, !tbaa !5
  %1274 = call ptr @__errno_location() #11
  store i32 %1273, ptr %1274, align 4, !tbaa !5
  %1275 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1276 = load i32, ptr @test_count, align 4, !tbaa !5
  %1277 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1278 = load i32, ptr %1277, align 4, !tbaa !5
  %1279 = call ptr @s2n_strerror(i32 noundef %1278, ptr noundef @.str.4)
  %1280 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1281 = load i32, ptr %1280, align 4, !tbaa !5
  %1282 = call ptr @s2n_strerror_debug(i32 noundef %1281, ptr noundef @.str.4)
  %1283 = call ptr @__errno_location() #11
  %1284 = load i32, ptr %1283, align 4, !tbaa !5
  %1285 = call ptr @strerror(i32 noundef %1284) #10
  %1286 = call ptr @__errno_location() #11
  %1287 = load i32, ptr %1286, align 4, !tbaa !5
  %1288 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1275, ptr noundef @.str.2, i32 noundef %1276, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 124, ptr noundef %1279, ptr noundef %1282, ptr noundef %1285, i32 noundef %1287) #10
  br label %1306

1289:                                             ; preds = %1267, %1260
  %1290 = load i32, ptr %40, align 4, !tbaa !5
  %1291 = call ptr @__errno_location() #11
  store i32 %1290, ptr %1291, align 4, !tbaa !5
  %1292 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1293 = load i32, ptr @test_count, align 4, !tbaa !5
  %1294 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1295 = load i32, ptr %1294, align 4, !tbaa !5
  %1296 = call ptr @s2n_strerror(i32 noundef %1295, ptr noundef @.str.4)
  %1297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1298 = load i32, ptr %1297, align 4, !tbaa !5
  %1299 = call ptr @s2n_strerror_debug(i32 noundef %1298, ptr noundef @.str.4)
  %1300 = call ptr @__errno_location() #11
  %1301 = load i32, ptr %1300, align 4, !tbaa !5
  %1302 = call ptr @strerror(i32 noundef %1301) #10
  %1303 = call ptr @__errno_location() #11
  %1304 = load i32, ptr %1303, align 4, !tbaa !5
  %1305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1292, ptr noundef @.str.5, i32 noundef %1293, ptr noundef @.str.38, ptr noundef @.str.1, i32 noundef 124, ptr noundef %1296, ptr noundef %1299, ptr noundef %1302, i32 noundef %1304) #10
  br label %1306

1306:                                             ; preds = %1289, %1272
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %1307

1307:                                             ; preds = %1306
  br label %1308

1308:                                             ; preds = %1307
  call void @exit(i32 noundef 1) #12
  unreachable

1309:                                             ; No predecessors!
  br label %1310

1310:                                             ; preds = %1309
  br label %1311

1311:                                             ; preds = %1310, %1248
  br label %1312

1312:                                             ; preds = %1311
  br label %1313

1313:                                             ; preds = %1312
  br label %1314

1314:                                             ; preds = %1313
  %1315 = load i32, ptr @test_count, align 4, !tbaa !5
  %1316 = add nsw i32 %1315, 1
  store i32 %1316, ptr @test_count, align 4, !tbaa !5
  %1317 = load ptr, ptr %33, align 8, !tbaa !9
  %1318 = getelementptr inbounds %struct.s2n_connection, ptr %1317, i32 0, i32 23
  %1319 = load i8, ptr %1318, align 4, !tbaa !49
  %1320 = zext i8 %1319 to i32
  %1321 = load i8, ptr %20, align 1, !tbaa !20
  %1322 = zext i8 %1321 to i32
  %1323 = icmp eq i32 %1320, %1322
  br i1 %1323, label %1377, label %1324

1324:                                             ; preds = %1314
  br label %1325

1325:                                             ; preds = %1324
  br label %1326

1326:                                             ; preds = %1325
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  %1327 = call ptr @__errno_location() #11
  %1328 = load i32, ptr %1327, align 4, !tbaa !5
  store i32 %1328, ptr %41, align 4, !tbaa !5
  %1329 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1330 = call i32 @s2n_print_stacktrace(ptr noundef %1329)
  %1331 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1332 = trunc i8 %1331 to i1
  br i1 %1332, label %1333, label %1355

1333:                                             ; preds = %1326
  %1334 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1335 = call i32 @fileno(ptr noundef %1334) #10
  %1336 = call i32 @isatty(i32 noundef %1335) #10
  %1337 = icmp ne i32 %1336, 0
  br i1 %1337, label %1338, label %1355

1338:                                             ; preds = %1333
  %1339 = load i32, ptr %41, align 4, !tbaa !5
  %1340 = call ptr @__errno_location() #11
  store i32 %1339, ptr %1340, align 4, !tbaa !5
  %1341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1342 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1344, ptr noundef @.str.4)
  %1346 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1347 = load i32, ptr %1346, align 4, !tbaa !5
  %1348 = call ptr @s2n_strerror_debug(i32 noundef %1347, ptr noundef @.str.4)
  %1349 = call ptr @__errno_location() #11
  %1350 = load i32, ptr %1349, align 4, !tbaa !5
  %1351 = call ptr @strerror(i32 noundef %1350) #10
  %1352 = call ptr @__errno_location() #11
  %1353 = load i32, ptr %1352, align 4, !tbaa !5
  %1354 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1341, ptr noundef @.str.2, i32 noundef %1342, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 125, ptr noundef %1345, ptr noundef %1348, ptr noundef %1351, i32 noundef %1353) #10
  br label %1372

1355:                                             ; preds = %1333, %1326
  %1356 = load i32, ptr %41, align 4, !tbaa !5
  %1357 = call ptr @__errno_location() #11
  store i32 %1356, ptr %1357, align 4, !tbaa !5
  %1358 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1359 = load i32, ptr @test_count, align 4, !tbaa !5
  %1360 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1361 = load i32, ptr %1360, align 4, !tbaa !5
  %1362 = call ptr @s2n_strerror(i32 noundef %1361, ptr noundef @.str.4)
  %1363 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1364 = load i32, ptr %1363, align 4, !tbaa !5
  %1365 = call ptr @s2n_strerror_debug(i32 noundef %1364, ptr noundef @.str.4)
  %1366 = call ptr @__errno_location() #11
  %1367 = load i32, ptr %1366, align 4, !tbaa !5
  %1368 = call ptr @strerror(i32 noundef %1367) #10
  %1369 = call ptr @__errno_location() #11
  %1370 = load i32, ptr %1369, align 4, !tbaa !5
  %1371 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1358, ptr noundef @.str.5, i32 noundef %1359, ptr noundef @.str.39, ptr noundef @.str.1, i32 noundef 125, ptr noundef %1362, ptr noundef %1365, ptr noundef %1368, i32 noundef %1370) #10
  br label %1372

1372:                                             ; preds = %1355, %1338
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %1373

1373:                                             ; preds = %1372
  br label %1374

1374:                                             ; preds = %1373
  call void @exit(i32 noundef 1) #12
  unreachable

1375:                                             ; No predecessors!
  br label %1376

1376:                                             ; preds = %1375
  br label %1377

1377:                                             ; preds = %1376, %1314
  br label %1378

1378:                                             ; preds = %1377
  br label %1379

1379:                                             ; preds = %1378
  br label %1380

1380:                                             ; preds = %1379, %1239
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  store ptr @.str.40, ptr %42, align 8, !tbaa !9
  %1381 = load i8, ptr %21, align 1, !tbaa !11, !range !13, !noundef !14
  %1382 = trunc i8 %1381 to i1
  br i1 %1382, label %1384, label %1383

1383:                                             ; preds = %1380
  store ptr @.str.41, ptr %42, align 8, !tbaa !9
  br label %1384

1384:                                             ; preds = %1383, %1380
  %1385 = load i8, ptr %39, align 1, !tbaa !11, !range !13, !noundef !14
  %1386 = trunc i8 %1385 to i1
  %1387 = zext i1 %1386 to i32
  %1388 = load i8, ptr %21, align 1, !tbaa !11, !range !13, !noundef !14
  %1389 = trunc i8 %1388 to i1
  %1390 = zext i1 %1389 to i32
  %1391 = icmp ne i32 %1387, %1390
  br i1 %1391, label %1392, label %1456

1392:                                             ; preds = %1384
  %1393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1394 = load ptr, ptr %42, align 8, !tbaa !9
  %1395 = load i8, ptr %20, align 1, !tbaa !20
  %1396 = zext i8 %1395 to i32
  %1397 = load i64, ptr %13, align 8, !tbaa !15
  %1398 = getelementptr inbounds [4 x %struct.anon], ptr %12, i64 0, i64 %1397
  %1399 = getelementptr inbounds %struct.anon, ptr %1398, i32 0, i32 0
  %1400 = load ptr, ptr %1399, align 8, !tbaa !17
  %1401 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1393, ptr noundef @.str.42, ptr noundef %1394, i32 noundef %1396, ptr noundef %1400) #10
  br label %1402

1402:                                             ; preds = %1392
  br label %1403

1403:                                             ; preds = %1402
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %1404 = call ptr @__errno_location() #11
  %1405 = load i32, ptr %1404, align 4, !tbaa !5
  store i32 %1405, ptr %43, align 4, !tbaa !5
  %1406 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1407 = call i32 @s2n_print_stacktrace(ptr noundef %1406)
  %1408 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1409 = trunc i8 %1408 to i1
  br i1 %1409, label %1410, label %1433

1410:                                             ; preds = %1403
  %1411 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1412 = call i32 @fileno(ptr noundef %1411) #10
  %1413 = call i32 @isatty(i32 noundef %1412) #10
  %1414 = icmp ne i32 %1413, 0
  br i1 %1414, label %1415, label %1433

1415:                                             ; preds = %1410
  %1416 = load i32, ptr %43, align 4, !tbaa !5
  %1417 = call ptr @__errno_location() #11
  store i32 %1416, ptr %1417, align 4, !tbaa !5
  %1418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1419 = load i32, ptr @test_count, align 4, !tbaa !5
  %1420 = load ptr, ptr %42, align 8, !tbaa !9
  %1421 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1422 = load i32, ptr %1421, align 4, !tbaa !5
  %1423 = call ptr @s2n_strerror(i32 noundef %1422, ptr noundef @.str.4)
  %1424 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1425 = load i32, ptr %1424, align 4, !tbaa !5
  %1426 = call ptr @s2n_strerror_debug(i32 noundef %1425, ptr noundef @.str.4)
  %1427 = call ptr @__errno_location() #11
  %1428 = load i32, ptr %1427, align 4, !tbaa !5
  %1429 = call ptr @strerror(i32 noundef %1428) #10
  %1430 = call ptr @__errno_location() #11
  %1431 = load i32, ptr %1430, align 4, !tbaa !5
  %1432 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1418, ptr noundef @.str.2, i32 noundef %1419, ptr noundef %1420, ptr noundef @.str.1, i32 noundef 135, ptr noundef %1423, ptr noundef %1426, ptr noundef %1429, i32 noundef %1431) #10
  br label %1451

1433:                                             ; preds = %1410, %1403
  %1434 = load i32, ptr %43, align 4, !tbaa !5
  %1435 = call ptr @__errno_location() #11
  store i32 %1434, ptr %1435, align 4, !tbaa !5
  %1436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1437 = load i32, ptr @test_count, align 4, !tbaa !5
  %1438 = load ptr, ptr %42, align 8, !tbaa !9
  %1439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1440 = load i32, ptr %1439, align 4, !tbaa !5
  %1441 = call ptr @s2n_strerror(i32 noundef %1440, ptr noundef @.str.4)
  %1442 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1443 = load i32, ptr %1442, align 4, !tbaa !5
  %1444 = call ptr @s2n_strerror_debug(i32 noundef %1443, ptr noundef @.str.4)
  %1445 = call ptr @__errno_location() #11
  %1446 = load i32, ptr %1445, align 4, !tbaa !5
  %1447 = call ptr @strerror(i32 noundef %1446) #10
  %1448 = call ptr @__errno_location() #11
  %1449 = load i32, ptr %1448, align 4, !tbaa !5
  %1450 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1436, ptr noundef @.str.5, i32 noundef %1437, ptr noundef %1438, ptr noundef @.str.1, i32 noundef 135, ptr noundef %1441, ptr noundef %1444, ptr noundef %1447, i32 noundef %1449) #10
  br label %1451

1451:                                             ; preds = %1433, %1415
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %1452

1452:                                             ; preds = %1451
  br label %1453

1453:                                             ; preds = %1452
  call void @exit(i32 noundef 1) #12
  unreachable

1454:                                             ; No predecessors!
  br label %1455

1455:                                             ; preds = %1454
  br label %1456

1456:                                             ; preds = %1455, %1384
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #10
  %1457 = call i32 @s2n_io_pair_close(ptr noundef %36)
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  %1458 = call i32 @s2n_connection_ptr_free(ptr noundef %33)
  %1459 = getelementptr inbounds %struct.s2n_result, ptr %44, i32 0, i32 0
  store i32 %1458, ptr %1459, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  %1460 = call i32 @s2n_connection_ptr_free(ptr noundef %30)
  %1461 = getelementptr inbounds %struct.s2n_result, ptr %45, i32 0, i32 0
  store i32 %1460, ptr %1461, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  %1462 = call i32 @s2n_config_ptr_free(ptr noundef %23)
  %1463 = getelementptr inbounds %struct.s2n_result, ptr %46, i32 0, i32 0
  store i32 %1462, ptr %1463, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #10
  br label %1464

1464:                                             ; preds = %1456
  %1465 = load i64, ptr %19, align 8, !tbaa !15
  %1466 = add i64 %1465, 1
  store i64 %1466, ptr %19, align 8, !tbaa !15
  br label %457, !llvm.loop !50

1467:                                             ; preds = %460
  call void @llvm.lifetime.end.p0(i64 12000, ptr %16) #10
  %1468 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef %15)
  %1469 = getelementptr inbounds %struct.s2n_result, ptr %47, i32 0, i32 0
  store i32 %1468, ptr %1469, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %1470

1470:                                             ; preds = %1467
  %1471 = load i64, ptr %13, align 8, !tbaa !15
  %1472 = add i64 %1471, 1
  store i64 %1472, ptr %13, align 8, !tbaa !15
  br label %379, !llvm.loop !52

1473:                                             ; preds = %382
  br label %1474

1474:                                             ; preds = %1473
  br label %1475

1475:                                             ; preds = %1474
  %1476 = call i32 @s2n_cleanup()
  %1477 = icmp eq i32 %1476, -1
  br i1 %1477, label %1478, label %1531

1478:                                             ; preds = %1475
  br label %1479

1479:                                             ; preds = %1478
  br label %1480

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

1487:                                             ; preds = %1480
  %1488 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1489 = call i32 @fileno(ptr noundef %1488) #10
  %1490 = call i32 @isatty(i32 noundef %1489) #10
  %1491 = icmp ne i32 %1490, 0
  br i1 %1491, label %1492, label %1509

1492:                                             ; preds = %1487
  %1493 = load i32, ptr %48, align 4, !tbaa !5
  %1494 = call ptr @__errno_location() #11
  store i32 %1493, ptr %1494, align 4, !tbaa !5
  %1495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1496 = load i32, ptr @test_count, align 4, !tbaa !5
  %1497 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1498 = load i32, ptr %1497, align 4, !tbaa !5
  %1499 = call ptr @s2n_strerror(i32 noundef %1498, ptr noundef @.str.4)
  %1500 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1501 = load i32, ptr %1500, align 4, !tbaa !5
  %1502 = call ptr @s2n_strerror_debug(i32 noundef %1501, ptr noundef @.str.4)
  %1503 = call ptr @__errno_location() #11
  %1504 = load i32, ptr %1503, align 4, !tbaa !5
  %1505 = call ptr @strerror(i32 noundef %1504) #10
  %1506 = call ptr @__errno_location() #11
  %1507 = load i32, ptr %1506, align 4, !tbaa !5
  %1508 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1495, ptr noundef @.str.2, i32 noundef %1496, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 140, ptr noundef %1499, ptr noundef %1502, ptr noundef %1505, i32 noundef %1507) #10
  br label %1526

1509:                                             ; preds = %1487, %1480
  %1510 = load i32, ptr %48, align 4, !tbaa !5
  %1511 = call ptr @__errno_location() #11
  store i32 %1510, ptr %1511, align 4, !tbaa !5
  %1512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1513 = load i32, ptr @test_count, align 4, !tbaa !5
  %1514 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1515 = load i32, ptr %1514, align 4, !tbaa !5
  %1516 = call ptr @s2n_strerror(i32 noundef %1515, ptr noundef @.str.4)
  %1517 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1518 = load i32, ptr %1517, align 4, !tbaa !5
  %1519 = call ptr @s2n_strerror_debug(i32 noundef %1518, ptr noundef @.str.4)
  %1520 = call ptr @__errno_location() #11
  %1521 = load i32, ptr %1520, align 4, !tbaa !5
  %1522 = call ptr @strerror(i32 noundef %1521) #10
  %1523 = call ptr @__errno_location() #11
  %1524 = load i32, ptr %1523, align 4, !tbaa !5
  %1525 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1512, ptr noundef @.str.5, i32 noundef %1513, ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 140, ptr noundef %1516, ptr noundef %1519, ptr noundef %1522, i32 noundef %1524) #10
  br label %1526

1526:                                             ; preds = %1509, %1492
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %1527

1527:                                             ; preds = %1526
  br label %1528

1528:                                             ; preds = %1527
  call void @exit(i32 noundef 1) #12
  unreachable

1529:                                             ; No predecessors!
  br label %1530

1530:                                             ; preds = %1529
  br label %1531

1531:                                             ; preds = %1530, %1475
  br label %1532

1532:                                             ; preds = %1531
  br label %1533

1533:                                             ; preds = %1532
  br label %1534

1534:                                             ; preds = %1533
  br label %1535

1535:                                             ; preds = %1534
  %1536 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %1537 = icmp eq i32 %1536, -1
  br i1 %1537, label %1538, label %1591

1538:                                             ; preds = %1535
  br label %1539

1539:                                             ; preds = %1538
  br label %1540

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

1547:                                             ; preds = %1540
  %1548 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1549 = call i32 @fileno(ptr noundef %1548) #10
  %1550 = call i32 @isatty(i32 noundef %1549) #10
  %1551 = icmp ne i32 %1550, 0
  br i1 %1551, label %1552, label %1569

1552:                                             ; preds = %1547
  %1553 = load i32, ptr %49, align 4, !tbaa !5
  %1554 = call ptr @__errno_location() #11
  store i32 %1553, ptr %1554, align 4, !tbaa !5
  %1555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1556 = load i32, ptr @test_count, align 4, !tbaa !5
  %1557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1558 = load i32, ptr %1557, align 4, !tbaa !5
  %1559 = call ptr @s2n_strerror(i32 noundef %1558, ptr noundef @.str.4)
  %1560 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1561 = load i32, ptr %1560, align 4, !tbaa !5
  %1562 = call ptr @s2n_strerror_debug(i32 noundef %1561, ptr noundef @.str.4)
  %1563 = call ptr @__errno_location() #11
  %1564 = load i32, ptr %1563, align 4, !tbaa !5
  %1565 = call ptr @strerror(i32 noundef %1564) #10
  %1566 = call ptr @__errno_location() #11
  %1567 = load i32, ptr %1566, align 4, !tbaa !5
  %1568 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1555, ptr noundef @.str.2, i32 noundef %1556, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 140, ptr noundef %1559, ptr noundef %1562, ptr noundef %1565, i32 noundef %1567) #10
  br label %1586

1569:                                             ; preds = %1547, %1540
  %1570 = load i32, ptr %49, align 4, !tbaa !5
  %1571 = call ptr @__errno_location() #11
  store i32 %1570, ptr %1571, align 4, !tbaa !5
  %1572 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1573 = load i32, ptr @test_count, align 4, !tbaa !5
  %1574 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1575 = load i32, ptr %1574, align 4, !tbaa !5
  %1576 = call ptr @s2n_strerror(i32 noundef %1575, ptr noundef @.str.4)
  %1577 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1578 = load i32, ptr %1577, align 4, !tbaa !5
  %1579 = call ptr @s2n_strerror_debug(i32 noundef %1578, ptr noundef @.str.4)
  %1580 = call ptr @__errno_location() #11
  %1581 = load i32, ptr %1580, align 4, !tbaa !5
  %1582 = call ptr @strerror(i32 noundef %1581) #10
  %1583 = call ptr @__errno_location() #11
  %1584 = load i32, ptr %1583, align 4, !tbaa !5
  %1585 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1572, ptr noundef @.str.5, i32 noundef %1573, ptr noundef @.str.9, ptr noundef @.str.1, i32 noundef 140, ptr noundef %1576, ptr noundef %1579, ptr noundef %1582, i32 noundef %1584) #10
  br label %1586

1586:                                             ; preds = %1569, %1552
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %1587

1587:                                             ; preds = %1586
  br label %1588

1588:                                             ; preds = %1587
  call void @exit(i32 noundef 1) #12
  unreachable

1589:                                             ; No predecessors!
  br label %1590

1590:                                             ; preds = %1589
  br label %1591

1591:                                             ; preds = %1590, %1535
  br label %1592

1592:                                             ; preds = %1591
  br label %1593

1593:                                             ; preds = %1592
  %1594 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1595 = trunc i8 %1594 to i1
  br i1 %1595, label %1596, label %1612

1596:                                             ; preds = %1593
  %1597 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1598 = call i32 @fileno(ptr noundef %1597) #10
  %1599 = call i32 @isatty(i32 noundef %1598) #10
  %1600 = icmp ne i32 %1599, 0
  br i1 %1600, label %1601, label %1612

1601:                                             ; preds = %1596
  %1602 = load i32, ptr @test_count, align 4, !tbaa !5
  %1603 = icmp ne i32 %1602, 0
  br i1 %1603, label %1604, label %1608

1604:                                             ; preds = %1601
  %1605 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1606 = load i32, ptr @test_count, align 4, !tbaa !5
  %1607 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1605, ptr noundef @.str.10, i32 noundef %1606) #10
  br label %1611

1608:                                             ; preds = %1601
  %1609 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1609, ptr noundef @.str.11) #10
  br label %1611

1611:                                             ; preds = %1608, %1604
  br label %1623

1612:                                             ; preds = %1596, %1593
  %1613 = load i32, ptr @test_count, align 4, !tbaa !5
  %1614 = icmp ne i32 %1613, 0
  br i1 %1614, label %1615, label %1619

1615:                                             ; preds = %1612
  %1616 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1617 = load i32, ptr @test_count, align 4, !tbaa !5
  %1618 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1616, ptr noundef @.str.12, i32 noundef %1617) #10
  br label %1622

1619:                                             ; preds = %1612
  %1620 = load ptr, ptr @stdout, align 8, !tbaa !9
  %1621 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1620, ptr noundef @.str.13) #10
  br label %1622

1622:                                             ; preds = %1619, %1615
  br label %1623

1623:                                             ; preds = %1622, %1611
  store i32 0, ptr %3, align 4
  store i32 1, ptr %14, align 4
  br label %1628

1624:                                             ; No predecessors!
  br label %1625

1625:                                             ; preds = %1624
  br label %1626

1626:                                             ; preds = %1625
  br label %1627

1627:                                             ; preds = %1626
  store i32 0, ptr %14, align 4
  br label %1628

1628:                                             ; preds = %1627, %1623
  call void @llvm.lifetime.end.p0(i64 96, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  %1629 = load i32, ptr %14, align 4
  switch i32 %1629, label %1632 [
    i32 0, label %1630
    i32 1, label %1630
  ]

1630:                                             ; preds = %1628, %1628, %375
  %1631 = load i32, ptr %3, align 4
  ret i32 %1631

1632:                                             ; preds = %1628
  unreachable
}

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

declare i32 @fflush(ptr noundef) #2

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #2

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #2

declare i32 @s2n_init() #2

declare zeroext i1 @s2n_is_rsa_pss_certs_supported(...) #2

declare zeroext i1 @s2n_is_tls13_fully_supported(...) #2

declare i32 @s2n_cleanup() #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) #7

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) #2

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_test_load_certificate(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare ptr @s2n_config_new() #2

declare i32 @s2n_config_ptr_free(ptr noundef) #2

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

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

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

; Function Attrs: nounwind uwtable
declare hidden zeroext i8 @s2n_noop_verify_host_fn(ptr noundef, i64 noundef, ptr noundef) #0

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

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

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_connections_set_io_pair(ptr noundef, ptr noundef, ptr noundef) #2

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


; 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.anon = type { ptr, ptr, 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 [90 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 [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [25 x i8], align 1
@__const.main.test_versions = external hidden unnamed_addr constant [4 x i8], align 1
@__const.main.test_certs = external hidden unnamed_addr constant [4 x %struct.anon], align 16
@.str.22 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [23 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 ptr, align 8
  %4 = alloca [12000 x i8], align 16
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %struct.s2n_test_io_pair, align 8
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %9 = load ptr, ptr @stdout, align 8, !tbaa !9
  %10 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %9, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1) #10
  %11 = load ptr, ptr @stdout, align 8, !tbaa !9
  %12 = tail call i32 @fflush(ptr noundef %11)
  %13 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext true) #10
  %14 = icmp eq i32 %13, -1
  br i1 %14, label %15, label %39

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

22:                                               ; preds = %15
  %23 = load ptr, ptr @stderr, align 8, !tbaa !9
  %24 = tail call i32 @fileno(ptr noundef %23) #10
  %25 = tail call i32 @isatty(i32 noundef %24) #10
  %.not111 = icmp eq i32 %25, 0
  br i1 %.not111, label %26, label %27

26:                                               ; preds = %22, %15
  br label %27

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

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

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

51:                                               ; preds = %44
  %52 = load ptr, ptr @stderr, align 8, !tbaa !9
  %53 = tail call i32 @fileno(ptr noundef %52) #10
  %54 = tail call i32 @isatty(i32 noundef %53) #10
  %.not110 = icmp eq i32 %54, 0
  br i1 %.not110, label %55, label %56

55:                                               ; preds = %51, %44
  br label %56

56:                                               ; preds = %51, %55
  %.str.5.sink250 = phi ptr [ @.str.5, %55 ], [ @.str.2, %51 ]
  store i32 %46, ptr %45, align 4, !tbaa !5
  %57 = load ptr, ptr @stderr, align 8, !tbaa !9
  %58 = load i32, ptr @test_count, align 4, !tbaa !5
  %59 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %60 = load i32, ptr %59, align 4, !tbaa !5
  %61 = tail call ptr @s2n_strerror(i32 noundef %60, ptr noundef nonnull @.str.4) #10
  %62 = load i32, ptr %59, align 4, !tbaa !5
  %63 = tail call ptr @s2n_strerror_debug(i32 noundef %62, ptr noundef nonnull @.str.4) #10
  %64 = load i32, ptr %45, align 4, !tbaa !5
  %65 = tail call ptr @strerror(i32 noundef %64) #10
  %66 = load i32, ptr %45, align 4, !tbaa !5
  %67 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %57, ptr noundef nonnull %.str.5.sink250, i32 noundef %58, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 44, ptr noundef %61, ptr noundef %63, ptr noundef %65, i32 noundef %66) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

68:                                               ; preds = %39
  %69 = tail call i32 @s2n_init() #10
  %70 = icmp eq i32 %69, -1
  br i1 %70, label %71, label %95

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

78:                                               ; preds = %71
  %79 = load ptr, ptr @stderr, align 8, !tbaa !9
  %80 = tail call i32 @fileno(ptr noundef %79) #10
  %81 = tail call i32 @isatty(i32 noundef %80) #10
  %.not109 = icmp eq i32 %81, 0
  br i1 %.not109, label %82, label %83

82:                                               ; preds = %78, %71
  br label %83

83:                                               ; preds = %78, %82
  %.str.5.sink261 = phi ptr [ @.str.5, %82 ], [ @.str.2, %78 ]
  store i32 %73, ptr %72, align 4, !tbaa !5
  %84 = load ptr, ptr @stderr, align 8, !tbaa !9
  %85 = load i32, ptr @test_count, align 4, !tbaa !5
  %86 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %88 = tail call ptr @s2n_strerror(i32 noundef %87, ptr noundef nonnull @.str.4) #10
  %89 = load i32, ptr %86, align 4, !tbaa !5
  %90 = tail call ptr @s2n_strerror_debug(i32 noundef %89, ptr noundef nonnull @.str.4) #10
  %91 = load i32, ptr %72, align 4, !tbaa !5
  %92 = tail call ptr @strerror(i32 noundef %91) #10
  %93 = load i32, ptr %72, align 4, !tbaa !5
  %94 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %84, ptr noundef nonnull %.str.5.sink261, i32 noundef %85, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, i32 noundef 44, ptr noundef %88, ptr noundef %90, ptr noundef %92, i32 noundef %93) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

95:                                               ; preds = %68
  %96 = tail call zeroext i1 (...) @s2n_is_rsa_pss_certs_supported() #10
  br i1 %96, label %97, label %99

97:                                               ; preds = %95
  %98 = tail call zeroext i1 (...) @s2n_is_tls13_fully_supported() #10
  br i1 %98, label %.preheader112, label %99

99:                                               ; preds = %97, %95
  %100 = tail call i32 @s2n_cleanup() #10
  %101 = icmp eq i32 %100, -1
  br i1 %101, label %102, label %126

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

109:                                              ; preds = %102
  %110 = load ptr, ptr @stderr, align 8, !tbaa !9
  %111 = tail call i32 @fileno(ptr noundef %110) #10
  %112 = tail call i32 @isatty(i32 noundef %111) #10
  %.not85 = icmp eq i32 %112, 0
  br i1 %.not85, label %113, label %114

113:                                              ; preds = %109, %102
  br label %114

114:                                              ; preds = %109, %113
  %.str.5.sink272 = phi ptr [ @.str.5, %113 ], [ @.str.2, %109 ]
  store i32 %104, ptr %103, align 4, !tbaa !5
  %115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %116 = load i32, ptr @test_count, align 4, !tbaa !5
  %117 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %118 = load i32, ptr %117, align 4, !tbaa !5
  %119 = tail call ptr @s2n_strerror(i32 noundef %118, ptr noundef nonnull @.str.4) #10
  %120 = load i32, ptr %117, align 4, !tbaa !5
  %121 = tail call ptr @s2n_strerror_debug(i32 noundef %120, ptr noundef nonnull @.str.4) #10
  %122 = load i32, ptr %103, align 4, !tbaa !5
  %123 = tail call ptr @strerror(i32 noundef %122) #10
  %124 = load i32, ptr %103, align 4, !tbaa !5
  %125 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %115, ptr noundef nonnull %.str.5.sink272, i32 noundef %116, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %119, ptr noundef %121, ptr noundef %123, i32 noundef %124) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

126:                                              ; preds = %99
  %127 = tail call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %128 = icmp eq i32 %127, -1
  br i1 %128, label %129, label %153

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

136:                                              ; preds = %129
  %137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %138 = tail call i32 @fileno(ptr noundef %137) #10
  %139 = tail call i32 @isatty(i32 noundef %138) #10
  %.not84 = icmp eq i32 %139, 0
  br i1 %.not84, label %140, label %141

140:                                              ; preds = %136, %129
  br label %141

141:                                              ; preds = %136, %140
  %.str.5.sink283 = phi ptr [ @.str.5, %140 ], [ @.str.2, %136 ]
  store i32 %131, ptr %130, align 4, !tbaa !5
  %142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %143 = load i32, ptr @test_count, align 4, !tbaa !5
  %144 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %145 = load i32, ptr %144, align 4, !tbaa !5
  %146 = tail call ptr @s2n_strerror(i32 noundef %145, ptr noundef nonnull @.str.4) #10
  %147 = load i32, ptr %144, align 4, !tbaa !5
  %148 = tail call ptr @s2n_strerror_debug(i32 noundef %147, ptr noundef nonnull @.str.4) #10
  %149 = load i32, ptr %130, align 4, !tbaa !5
  %150 = tail call ptr @strerror(i32 noundef %149) #10
  %151 = load i32, ptr %130, align 4, !tbaa !5
  %152 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %142, ptr noundef nonnull %.str.5.sink283, i32 noundef %143, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 47, ptr noundef %146, ptr noundef %148, ptr noundef %150, i32 noundef %151) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

153:                                              ; preds = %126
  %154 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %155 = trunc nuw i8 %154 to i1
  br i1 %155, label %156, label %167

156:                                              ; preds = %153
  %157 = load ptr, ptr @stdout, align 8, !tbaa !9
  %158 = tail call i32 @fileno(ptr noundef %157) #10
  %159 = tail call i32 @isatty(i32 noundef %158) #10
  %.not = icmp eq i32 %159, 0
  br i1 %.not, label %167, label %160

160:                                              ; preds = %156
  %161 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not83 = icmp eq i32 %161, 0
  %162 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not83, label %165, label %163

163:                                              ; preds = %160
  %164 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %162, ptr noundef nonnull @.str.10, i32 noundef %161) #10
  br label %749

165:                                              ; preds = %160
  %166 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %162, ptr noundef nonnull @.str.11) #10
  br label %749

167:                                              ; preds = %156, %153
  %168 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not82 = icmp eq i32 %168, 0
  %169 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not82, label %172, label %170

170:                                              ; preds = %167
  %171 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %169, ptr noundef nonnull @.str.12, i32 noundef %168) #10
  br label %749

172:                                              ; preds = %167
  %173 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %169, ptr noundef nonnull @.str.13) #10
  br label %749

174:                                              ; preds = %211
  %175 = call i32 @s2n_cleanup() #10
  %176 = icmp eq i32 %175, -1
  br i1 %176, label %677, label %701

.preheader112:                                    ; preds = %97, %211
  %.075144 = phi i64 [ %213, %211 ], [ 0, %97 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  store ptr null, ptr %3, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12000, ptr nonnull %4) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(12000) %4, i8 0, i64 12000, i1 false)
  %177 = load i32, ptr @test_count, align 4, !tbaa !5
  %178 = add nsw i32 %177, 1
  store i32 %178, ptr @test_count, align 4, !tbaa !5
  %179 = getelementptr inbounds [4 x %struct.anon], ptr @__const.main.test_certs, i64 0, i64 %.075144
  %180 = load ptr, ptr %179, align 8, !tbaa !15
  %181 = getelementptr inbounds i8, ptr %179, i64 8
  %182 = load ptr, ptr %181, align 8, !tbaa !17
  %183 = call i32 @s2n_test_load_certificate(ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %180, ptr noundef %182)
  %184 = call zeroext i1 @s2n_result_is_ok(i32 %183)
  br i1 %184, label %.preheader, label %187

.preheader:                                       ; preds = %.preheader112
  %185 = getelementptr inbounds i8, ptr %179, i64 16
  %186 = load i8, ptr %185, align 8, !tbaa !18
  br label %214

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

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

198:                                              ; preds = %194, %187
  br label %199

199:                                              ; preds = %194, %198
  %.str.5.sink294 = phi ptr [ @.str.5, %198 ], [ @.str.2, %194 ]
  store i32 %189, ptr %188, 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 nonnull @.str.4) #10
  %205 = load i32, ptr %202, align 4, !tbaa !5
  %206 = call ptr @s2n_strerror_debug(i32 noundef %205, ptr noundef nonnull @.str.4) #10
  %207 = load i32, ptr %188, align 4, !tbaa !5
  %208 = call ptr @strerror(i32 noundef %207) #10
  %209 = load i32, ptr %188, align 4, !tbaa !5
  %210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %200, ptr noundef nonnull %.str.5.sink294, i32 noundef %201, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.1, i32 noundef 80, ptr noundef %204, ptr noundef %206, ptr noundef %208, i32 noundef %209) #12
  call void @exit(i32 noundef 1) #13
  unreachable

211:                                              ; preds = %671
  call void @llvm.lifetime.end.p0(i64 12000, ptr nonnull %4) #10
  %212 = call i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef nonnull %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  %213 = add nuw nsw i64 %.075144, 1
  %exitcond192.not = icmp eq i64 %213, 4
  br i1 %exitcond192.not, label %174, label %.preheader112, !llvm.loop !19

214:                                              ; preds = %.preheader, %671
  %.076143 = phi i64 [ 0, %.preheader ], [ %676, %671 ]
  %215 = getelementptr inbounds [4 x i8], ptr @__const.main.test_versions, i64 0, i64 %.076143
  %216 = load i8, ptr %215, align 1, !tbaa !21
  %217 = icmp uge i8 %216, %186
  %218 = icmp ugt i8 %216, 33
  %.not92 = icmp eq i8 %216, 33
  %spec.select = select i1 %.not92, ptr @.str.23, ptr @.str.25
  %.077 = select i1 %218, ptr @.str.24, ptr %spec.select
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %219 = call ptr @s2n_config_new() #10
  store ptr %219, ptr %5, align 8, !tbaa !9
  %220 = load i32, ptr @test_count, align 4, !tbaa !5
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr @test_count, align 4, !tbaa !5
  %222 = icmp eq ptr %219, null
  br i1 %222, label %223, label %247

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

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

234:                                              ; preds = %230, %223
  br label %235

235:                                              ; preds = %230, %234
  %.str.5.sink305 = phi ptr [ @.str.5, %234 ], [ @.str.2, %230 ]
  store i32 %225, ptr %224, align 4, !tbaa !5
  %236 = load ptr, ptr @stderr, align 8, !tbaa !9
  %237 = load i32, ptr @test_count, align 4, !tbaa !5
  %238 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = call ptr @s2n_strerror(i32 noundef %239, ptr noundef nonnull @.str.4) #10
  %241 = load i32, ptr %238, align 4, !tbaa !5
  %242 = call ptr @s2n_strerror_debug(i32 noundef %241, ptr noundef nonnull @.str.4) #10
  %243 = load i32, ptr %224, align 4, !tbaa !5
  %244 = call ptr @strerror(i32 noundef %243) #10
  %245 = load i32, ptr %224, align 4, !tbaa !5
  %246 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %236, ptr noundef nonnull %.str.5.sink305, i32 noundef %237, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 98, ptr noundef %240, ptr noundef %242, ptr noundef %244, i32 noundef %245) #12
  call void @exit(i32 noundef 1) #13
  unreachable

247:                                              ; preds = %214
  %248 = add nsw i32 %220, 2
  store i32 %248, ptr @test_count, align 4, !tbaa !5
  %249 = load ptr, ptr %3, align 8, !tbaa !9
  %250 = call i32 @s2n_config_add_cert_chain_and_key_to_store(ptr noundef nonnull %219, ptr noundef %249) #10
  %251 = icmp eq i32 %250, -1
  br i1 %251, label %252, label %276

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

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

263:                                              ; preds = %259, %252
  br label %264

264:                                              ; preds = %259, %263
  %.str.5.sink316 = phi ptr [ @.str.5, %263 ], [ @.str.2, %259 ]
  store i32 %254, ptr %253, align 4, !tbaa !5
  %265 = load ptr, ptr @stderr, align 8, !tbaa !9
  %266 = load i32, ptr @test_count, align 4, !tbaa !5
  %267 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %268 = load i32, ptr %267, align 4, !tbaa !5
  %269 = call ptr @s2n_strerror(i32 noundef %268, ptr noundef nonnull @.str.4) #10
  %270 = load i32, ptr %267, align 4, !tbaa !5
  %271 = call ptr @s2n_strerror_debug(i32 noundef %270, ptr noundef nonnull @.str.4) #10
  %272 = load i32, ptr %253, align 4, !tbaa !5
  %273 = call ptr @strerror(i32 noundef %272) #10
  %274 = load i32, ptr %253, align 4, !tbaa !5
  %275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %265, ptr noundef nonnull %.str.5.sink316, i32 noundef %266, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 99, ptr noundef %269, ptr noundef %271, ptr noundef %273, i32 noundef %274) #12
  call void @exit(i32 noundef 1) #13
  unreachable

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

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

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

293:                                              ; preds = %289, %282
  br label %294

294:                                              ; preds = %289, %293
  %.str.5.sink327 = phi ptr [ @.str.5, %293 ], [ @.str.2, %289 ]
  store i32 %284, ptr %283, align 4, !tbaa !5
  %295 = load ptr, ptr @stderr, align 8, !tbaa !9
  %296 = load i32, ptr @test_count, align 4, !tbaa !5
  %297 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %298 = load i32, ptr %297, align 4, !tbaa !5
  %299 = call ptr @s2n_strerror(i32 noundef %298, ptr noundef nonnull @.str.4) #10
  %300 = load i32, ptr %297, align 4, !tbaa !5
  %301 = call ptr @s2n_strerror_debug(i32 noundef %300, ptr noundef nonnull @.str.4) #10
  %302 = load i32, ptr %283, align 4, !tbaa !5
  %303 = call ptr @strerror(i32 noundef %302) #10
  %304 = load i32, ptr %283, align 4, !tbaa !5
  %305 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %295, ptr noundef nonnull %.str.5.sink327, i32 noundef %296, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 100, ptr noundef %299, ptr noundef %301, ptr noundef %303, i32 noundef %304) #12
  call void @exit(i32 noundef 1) #13
  unreachable

306:                                              ; preds = %276
  %307 = load i32, ptr @test_count, align 4, !tbaa !5
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr @test_count, align 4, !tbaa !5
  %309 = load ptr, ptr %5, align 8, !tbaa !9
  %310 = call i32 @s2n_config_set_verify_host_callback(ptr noundef %309, ptr noundef nonnull @s2n_noop_verify_host_fn, ptr noundef null) #10
  %311 = icmp eq i32 %310, -1
  br i1 %311, label %312, label %336

312:                                              ; preds = %306
  %313 = tail call ptr @__errno_location() #11
  %314 = load i32, ptr %313, align 4, !tbaa !5
  %315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %316 = call i32 @s2n_print_stacktrace(ptr noundef %315) #10
  %317 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %318 = trunc nuw i8 %317 to i1
  br i1 %318, label %319, label %323

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

323:                                              ; preds = %319, %312
  br label %324

324:                                              ; preds = %319, %323
  %.str.5.sink338 = phi ptr [ @.str.5, %323 ], [ @.str.2, %319 ]
  store i32 %314, ptr %313, align 4, !tbaa !5
  %325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %326 = load i32, ptr @test_count, align 4, !tbaa !5
  %327 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %328 = load i32, ptr %327, align 4, !tbaa !5
  %329 = call ptr @s2n_strerror(i32 noundef %328, ptr noundef nonnull @.str.4) #10
  %330 = load i32, ptr %327, align 4, !tbaa !5
  %331 = call ptr @s2n_strerror_debug(i32 noundef %330, ptr noundef nonnull @.str.4) #10
  %332 = load i32, ptr %313, align 4, !tbaa !5
  %333 = call ptr @strerror(i32 noundef %332) #10
  %334 = load i32, ptr %313, align 4, !tbaa !5
  %335 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %325, ptr noundef nonnull %.str.5.sink338, i32 noundef %326, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.1, i32 noundef 101, ptr noundef %329, ptr noundef %331, ptr noundef %333, i32 noundef %334) #12
  call void @exit(i32 noundef 1) #13
  unreachable

336:                                              ; preds = %306
  %337 = load i32, ptr @test_count, align 4, !tbaa !5
  %338 = add nsw i32 %337, 1
  store i32 %338, ptr @test_count, align 4, !tbaa !5
  %339 = load ptr, ptr %5, align 8, !tbaa !9
  %340 = call i32 @s2n_config_set_max_blinding_delay(ptr noundef %339, i32 noundef 0) #10
  %341 = icmp eq i32 %340, -1
  br i1 %341, label %342, label %366

342:                                              ; preds = %336
  %343 = tail call ptr @__errno_location() #11
  %344 = load i32, ptr %343, align 4, !tbaa !5
  %345 = load ptr, ptr @stderr, align 8, !tbaa !9
  %346 = call i32 @s2n_print_stacktrace(ptr noundef %345) #10
  %347 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %348 = trunc nuw i8 %347 to i1
  br i1 %348, label %349, label %353

349:                                              ; preds = %342
  %350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %351 = call i32 @fileno(ptr noundef %350) #10
  %352 = call i32 @isatty(i32 noundef %351) #10
  %.not104 = icmp eq i32 %352, 0
  br i1 %.not104, label %353, label %354

353:                                              ; preds = %349, %342
  br label %354

354:                                              ; preds = %349, %353
  %.str.5.sink349 = phi ptr [ @.str.5, %353 ], [ @.str.2, %349 ]
  store i32 %344, ptr %343, align 4, !tbaa !5
  %355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %356 = load i32, ptr @test_count, align 4, !tbaa !5
  %357 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %358 = load i32, ptr %357, align 4, !tbaa !5
  %359 = call ptr @s2n_strerror(i32 noundef %358, ptr noundef nonnull @.str.4) #10
  %360 = load i32, ptr %357, align 4, !tbaa !5
  %361 = call ptr @s2n_strerror_debug(i32 noundef %360, ptr noundef nonnull @.str.4) #10
  %362 = load i32, ptr %343, align 4, !tbaa !5
  %363 = call ptr @strerror(i32 noundef %362) #10
  %364 = load i32, ptr %343, align 4, !tbaa !5
  %365 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %355, ptr noundef nonnull %.str.5.sink349, i32 noundef %356, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 102, ptr noundef %359, ptr noundef %361, ptr noundef %363, i32 noundef %364) #12
  call void @exit(i32 noundef 1) #13
  unreachable

366:                                              ; preds = %336
  %367 = load i32, ptr @test_count, align 4, !tbaa !5
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr @test_count, align 4, !tbaa !5
  %369 = load ptr, ptr %5, align 8, !tbaa !9
  %370 = call i32 @s2n_config_set_cipher_preferences(ptr noundef %369, ptr noundef nonnull %.077) #10
  %371 = icmp eq i32 %370, -1
  br i1 %371, label %372, label %396

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

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

383:                                              ; preds = %379, %372
  br label %384

384:                                              ; preds = %379, %383
  %.str.5.sink360 = phi ptr [ @.str.5, %383 ], [ @.str.2, %379 ]
  store i32 %374, ptr %373, align 4, !tbaa !5
  %385 = load ptr, ptr @stderr, align 8, !tbaa !9
  %386 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %388, ptr noundef nonnull @.str.4) #10
  %390 = load i32, ptr %387, align 4, !tbaa !5
  %391 = call ptr @s2n_strerror_debug(i32 noundef %390, ptr noundef nonnull @.str.4) #10
  %392 = load i32, ptr %373, align 4, !tbaa !5
  %393 = call ptr @strerror(i32 noundef %392) #10
  %394 = load i32, ptr %373, align 4, !tbaa !5
  %395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %385, ptr noundef nonnull %.str.5.sink360, i32 noundef %386, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 103, ptr noundef %389, ptr noundef %391, ptr noundef %393, i32 noundef %394) #12
  call void @exit(i32 noundef 1) #13
  unreachable

396:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %397 = call ptr @s2n_connection_new(i32 noundef 0) #10
  store ptr %397, ptr %6, align 8, !tbaa !9
  %398 = load i32, ptr @test_count, align 4, !tbaa !5
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr @test_count, align 4, !tbaa !5
  %400 = icmp eq ptr %397, null
  br i1 %400, label %401, label %425

401:                                              ; preds = %396
  %402 = tail call ptr @__errno_location() #11
  %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) #10
  %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) #10
  %411 = call i32 @isatty(i32 noundef %410) #10
  %.not102 = icmp eq i32 %411, 0
  br i1 %.not102, label %412, label %413

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

413:                                              ; preds = %408, %412
  %.str.5.sink371 = 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) #10
  %419 = load i32, ptr %416, align 4, !tbaa !5
  %420 = call ptr @s2n_strerror_debug(i32 noundef %419, ptr noundef nonnull @.str.4) #10
  %421 = load i32, ptr %402, align 4, !tbaa !5
  %422 = call ptr @strerror(i32 noundef %421) #10
  %423 = load i32, ptr %402, align 4, !tbaa !5
  %424 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %414, ptr noundef nonnull %.str.5.sink371, i32 noundef %415, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 107, ptr noundef %418, ptr noundef %420, ptr noundef %422, i32 noundef %423) #12
  call void @exit(i32 noundef 1) #13
  unreachable

425:                                              ; preds = %396
  %426 = add nsw i32 %398, 2
  store i32 %426, ptr @test_count, align 4, !tbaa !5
  %427 = load ptr, ptr %5, align 8, !tbaa !9
  %428 = call i32 @s2n_connection_set_config(ptr noundef nonnull %397, ptr noundef %427) #10
  %429 = icmp eq i32 %428, -1
  br i1 %429, label %430, label %454

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

437:                                              ; preds = %430
  %438 = load ptr, ptr @stderr, align 8, !tbaa !9
  %439 = call i32 @fileno(ptr noundef %438) #10
  %440 = call i32 @isatty(i32 noundef %439) #10
  %.not101 = icmp eq i32 %440, 0
  br i1 %.not101, label %441, label %442

441:                                              ; preds = %437, %430
  br label %442

442:                                              ; preds = %437, %441
  %.str.5.sink382 = phi ptr [ @.str.5, %441 ], [ @.str.2, %437 ]
  store i32 %432, ptr %431, align 4, !tbaa !5
  %443 = load ptr, ptr @stderr, align 8, !tbaa !9
  %444 = load i32, ptr @test_count, align 4, !tbaa !5
  %445 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = call ptr @s2n_strerror(i32 noundef %446, ptr noundef nonnull @.str.4) #10
  %448 = load i32, ptr %445, align 4, !tbaa !5
  %449 = call ptr @s2n_strerror_debug(i32 noundef %448, ptr noundef nonnull @.str.4) #10
  %450 = load i32, ptr %431, align 4, !tbaa !5
  %451 = call ptr @strerror(i32 noundef %450) #10
  %452 = load i32, ptr %431, align 4, !tbaa !5
  %453 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %443, ptr noundef nonnull %.str.5.sink382, i32 noundef %444, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.1, i32 noundef 108, ptr noundef %447, ptr noundef %449, ptr noundef %451, i32 noundef %452) #12
  call void @exit(i32 noundef 1) #13
  unreachable

454:                                              ; preds = %425
  %455 = load ptr, ptr %6, align 8, !tbaa !9
  %456 = getelementptr inbounds i8, ptr %455, i64 219
  store i8 %216, ptr %456, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  %457 = call ptr @s2n_connection_new(i32 noundef 1) #10
  store ptr %457, ptr %7, align 8, !tbaa !9
  %458 = load i32, ptr @test_count, align 4, !tbaa !5
  %459 = add nsw i32 %458, 1
  store i32 %459, ptr @test_count, align 4, !tbaa !5
  %460 = icmp eq ptr %457, null
  br i1 %460, label %461, label %485

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

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

472:                                              ; preds = %468, %461
  br label %473

473:                                              ; preds = %468, %472
  %.str.5.sink393 = phi ptr [ @.str.5, %472 ], [ @.str.2, %468 ]
  store i32 %463, ptr %462, align 4, !tbaa !5
  %474 = load ptr, ptr @stderr, align 8, !tbaa !9
  %475 = load i32, ptr @test_count, align 4, !tbaa !5
  %476 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %477 = load i32, ptr %476, align 4, !tbaa !5
  %478 = call ptr @s2n_strerror(i32 noundef %477, ptr noundef nonnull @.str.4) #10
  %479 = load i32, ptr %476, align 4, !tbaa !5
  %480 = call ptr @s2n_strerror_debug(i32 noundef %479, ptr noundef nonnull @.str.4) #10
  %481 = load i32, ptr %462, align 4, !tbaa !5
  %482 = call ptr @strerror(i32 noundef %481) #10
  %483 = load i32, ptr %462, align 4, !tbaa !5
  %484 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %474, ptr noundef nonnull %.str.5.sink393, i32 noundef %475, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.1, i32 noundef 113, ptr noundef %478, ptr noundef %480, ptr noundef %482, i32 noundef %483) #12
  call void @exit(i32 noundef 1) #13
  unreachable

485:                                              ; preds = %454
  %486 = add nsw i32 %458, 2
  store i32 %486, ptr @test_count, align 4, !tbaa !5
  %487 = load ptr, ptr %5, align 8, !tbaa !9
  %488 = call i32 @s2n_connection_set_config(ptr noundef nonnull %457, ptr noundef %487) #10
  %489 = icmp eq i32 %488, -1
  br i1 %489, label %490, label %514

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

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

501:                                              ; preds = %497, %490
  br label %502

502:                                              ; preds = %497, %501
  %.str.5.sink404 = phi ptr [ @.str.5, %501 ], [ @.str.2, %497 ]
  store i32 %492, ptr %491, align 4, !tbaa !5
  %503 = load ptr, ptr @stderr, align 8, !tbaa !9
  %504 = load i32, ptr @test_count, align 4, !tbaa !5
  %505 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %506 = load i32, ptr %505, align 4, !tbaa !5
  %507 = call ptr @s2n_strerror(i32 noundef %506, ptr noundef nonnull @.str.4) #10
  %508 = load i32, ptr %505, align 4, !tbaa !5
  %509 = call ptr @s2n_strerror_debug(i32 noundef %508, ptr noundef nonnull @.str.4) #10
  %510 = load i32, ptr %491, align 4, !tbaa !5
  %511 = call ptr @strerror(i32 noundef %510) #10
  %512 = load i32, ptr %491, align 4, !tbaa !5
  %513 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %503, ptr noundef nonnull %.str.5.sink404, i32 noundef %504, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.1, i32 noundef 114, ptr noundef %507, ptr noundef %509, ptr noundef %511, i32 noundef %512) #12
  call void @exit(i32 noundef 1) #13
  unreachable

514:                                              ; preds = %485
  %515 = load ptr, ptr %7, align 8, !tbaa !9
  %516 = getelementptr inbounds i8, ptr %515, i64 218
  store i8 %216, ptr %516, align 2, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  store i64 0, ptr %8, align 8
  %517 = load i32, ptr @test_count, align 4, !tbaa !5
  %518 = add nsw i32 %517, 1
  store i32 %518, ptr @test_count, align 4, !tbaa !5
  %519 = call i32 @s2n_io_pair_init_non_blocking(ptr noundef nonnull %8) #10
  %520 = icmp eq i32 %519, -1
  br i1 %520, label %521, label %545

521:                                              ; preds = %514
  %522 = tail call ptr @__errno_location() #11
  %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) #10
  %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) #10
  %531 = call i32 @isatty(i32 noundef %530) #10
  %.not98 = icmp eq i32 %531, 0
  br i1 %.not98, label %532, label %533

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

533:                                              ; preds = %528, %532
  %.str.5.sink415 = 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) #10
  %539 = load i32, ptr %536, align 4, !tbaa !5
  %540 = call ptr @s2n_strerror_debug(i32 noundef %539, ptr noundef nonnull @.str.4) #10
  %541 = load i32, ptr %522, align 4, !tbaa !5
  %542 = call ptr @strerror(i32 noundef %541) #10
  %543 = load i32, ptr %522, align 4, !tbaa !5
  %544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %534, ptr noundef nonnull %.str.5.sink415, i32 noundef %535, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.1, i32 noundef 118, ptr noundef %538, ptr noundef %540, ptr noundef %542, i32 noundef %543) #12
  call void @exit(i32 noundef 1) #13
  unreachable

545:                                              ; preds = %514
  %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 %7, align 8, !tbaa !9
  %549 = load ptr, ptr %6, align 8, !tbaa !9
  %550 = call i32 @s2n_connections_set_io_pair(ptr noundef %548, ptr noundef %549, ptr noundef nonnull %8) #10
  %551 = icmp eq i32 %550, -1
  br i1 %551, label %552, label %576

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

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

563:                                              ; preds = %559, %552
  br label %564

564:                                              ; preds = %559, %563
  %.str.5.sink426 = phi ptr [ @.str.5, %563 ], [ @.str.2, %559 ]
  store i32 %554, ptr %553, align 4, !tbaa !5
  %565 = load ptr, ptr @stderr, align 8, !tbaa !9
  %566 = load i32, ptr @test_count, align 4, !tbaa !5
  %567 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %568 = load i32, ptr %567, align 4, !tbaa !5
  %569 = call ptr @s2n_strerror(i32 noundef %568, ptr noundef nonnull @.str.4) #10
  %570 = load i32, ptr %567, align 4, !tbaa !5
  %571 = call ptr @s2n_strerror_debug(i32 noundef %570, ptr noundef nonnull @.str.4) #10
  %572 = load i32, ptr %553, align 4, !tbaa !5
  %573 = call ptr @strerror(i32 noundef %572) #10
  %574 = load i32, ptr %553, align 4, !tbaa !5
  %575 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %565, ptr noundef nonnull %.str.5.sink426, i32 noundef %566, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.1, i32 noundef 119, ptr noundef %569, ptr noundef %571, ptr noundef %573, i32 noundef %574) #12
  call void @exit(i32 noundef 1) #13
  unreachable

576:                                              ; preds = %545
  %577 = load ptr, ptr %6, align 8, !tbaa !9
  %578 = load ptr, ptr %7, align 8, !tbaa !9
  %579 = call i32 @s2n_negotiate_test_server_and_client(ptr noundef %577, ptr noundef %578) #10
  %580 = icmp eq i32 %579, 0
  br i1 %580, label %581, label %642

581:                                              ; preds = %576
  %582 = load i32, ptr @test_count, align 4, !tbaa !5
  %583 = add nsw i32 %582, 1
  store i32 %583, ptr @test_count, align 4, !tbaa !5
  %584 = load ptr, ptr %6, align 8, !tbaa !9
  %585 = getelementptr inbounds i8, ptr %584, i64 220
  %586 = load i8, ptr %585, align 4, !tbaa !50
  %587 = icmp eq i8 %586, %216
  br i1 %587, label %612, label %588

588:                                              ; preds = %581
  %589 = tail call ptr @__errno_location() #11
  %590 = load i32, ptr %589, align 4, !tbaa !5
  %591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %592 = call i32 @s2n_print_stacktrace(ptr noundef %591) #10
  %593 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %594 = trunc nuw i8 %593 to i1
  br i1 %594, label %595, label %599

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

599:                                              ; preds = %595, %588
  br label %600

600:                                              ; preds = %595, %599
  %.str.5.sink437 = phi ptr [ @.str.5, %599 ], [ @.str.2, %595 ]
  store i32 %590, ptr %589, align 4, !tbaa !5
  %601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %602 = load i32, ptr @test_count, align 4, !tbaa !5
  %603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %604 = load i32, ptr %603, align 4, !tbaa !5
  %605 = call ptr @s2n_strerror(i32 noundef %604, ptr noundef nonnull @.str.4) #10
  %606 = load i32, ptr %603, align 4, !tbaa !5
  %607 = call ptr @s2n_strerror_debug(i32 noundef %606, ptr noundef nonnull @.str.4) #10
  %608 = load i32, ptr %589, align 4, !tbaa !5
  %609 = call ptr @strerror(i32 noundef %608) #10
  %610 = load i32, ptr %589, align 4, !tbaa !5
  %611 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %601, ptr noundef nonnull %.str.5.sink437, i32 noundef %602, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.1, i32 noundef 124, ptr noundef %605, ptr noundef %607, ptr noundef %609, i32 noundef %610) #12
  call void @exit(i32 noundef 1) #13
  unreachable

612:                                              ; preds = %581
  %613 = add nsw i32 %582, 2
  store i32 %613, ptr @test_count, align 4, !tbaa !5
  %614 = load ptr, ptr %7, align 8, !tbaa !9
  %615 = getelementptr inbounds i8, ptr %614, i64 220
  %616 = load i8, ptr %615, align 4, !tbaa !50
  %617 = icmp eq i8 %616, %216
  br i1 %617, label %642, label %618

618:                                              ; preds = %612
  %619 = tail call ptr @__errno_location() #11
  %620 = load i32, ptr %619, align 4, !tbaa !5
  %621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %622 = call i32 @s2n_print_stacktrace(ptr noundef %621) #10
  %623 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %624 = trunc nuw i8 %623 to i1
  br i1 %624, label %625, label %629

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

629:                                              ; preds = %625, %618
  br label %630

630:                                              ; preds = %625, %629
  %.str.5.sink448 = phi ptr [ @.str.5, %629 ], [ @.str.2, %625 ]
  store i32 %620, ptr %619, align 4, !tbaa !5
  %631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %632 = load i32, ptr @test_count, align 4, !tbaa !5
  %633 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %634 = load i32, ptr %633, align 4, !tbaa !5
  %635 = call ptr @s2n_strerror(i32 noundef %634, ptr noundef nonnull @.str.4) #10
  %636 = load i32, ptr %633, align 4, !tbaa !5
  %637 = call ptr @s2n_strerror_debug(i32 noundef %636, ptr noundef nonnull @.str.4) #10
  %638 = load i32, ptr %619, align 4, !tbaa !5
  %639 = call ptr @strerror(i32 noundef %638) #10
  %640 = load i32, ptr %619, align 4, !tbaa !5
  %641 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %631, ptr noundef nonnull %.str.5.sink448, i32 noundef %632, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.1, i32 noundef 125, ptr noundef %635, ptr noundef %637, ptr noundef %639, i32 noundef %640) #12
  call void @exit(i32 noundef 1) #13
  unreachable

642:                                              ; preds = %612, %576
  %643 = xor i1 %217, %580
  br i1 %643, label %644, label %671

644:                                              ; preds = %642
  %645 = zext i8 %216 to i32
  %spec.store.select.le = select i1 %217, ptr @.str.40, ptr @.str.41
  %646 = load ptr, ptr @stderr, align 8, !tbaa !9
  %647 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %646, ptr noundef nonnull @.str.42, ptr noundef nonnull %spec.store.select.le, i32 noundef %645, ptr noundef %180) #12
  %648 = tail call ptr @__errno_location() #11
  %649 = load i32, ptr %648, align 4, !tbaa !5
  %650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %651 = call i32 @s2n_print_stacktrace(ptr noundef %650) #10
  %652 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %653 = trunc nuw i8 %652 to i1
  br i1 %653, label %654, label %658

654:                                              ; preds = %644
  %655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %656 = call i32 @fileno(ptr noundef %655) #10
  %657 = call i32 @isatty(i32 noundef %656) #10
  %.not96 = icmp eq i32 %657, 0
  br i1 %.not96, label %658, label %659

658:                                              ; preds = %654, %644
  br label %659

659:                                              ; preds = %654, %658
  %.str.5.sink459 = phi ptr [ @.str.5, %658 ], [ @.str.2, %654 ]
  store i32 %649, ptr %648, align 4, !tbaa !5
  %660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %661 = load i32, ptr @test_count, align 4, !tbaa !5
  %662 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %663 = load i32, ptr %662, align 4, !tbaa !5
  %664 = call ptr @s2n_strerror(i32 noundef %663, ptr noundef nonnull @.str.4) #10
  %665 = load i32, ptr %662, align 4, !tbaa !5
  %666 = call ptr @s2n_strerror_debug(i32 noundef %665, ptr noundef nonnull @.str.4) #10
  %667 = load i32, ptr %648, align 4, !tbaa !5
  %668 = call ptr @strerror(i32 noundef %667) #10
  %669 = load i32, ptr %648, align 4, !tbaa !5
  %670 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %660, ptr noundef nonnull %.str.5.sink459, i32 noundef %661, ptr noundef nonnull %spec.store.select.le, ptr noundef nonnull @.str.1, i32 noundef 135, ptr noundef %664, ptr noundef %666, ptr noundef %668, i32 noundef %669) #12
  call void @exit(i32 noundef 1) #13
  unreachable

671:                                              ; preds = %642
  %672 = call i32 @s2n_io_pair_close(ptr noundef nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  %673 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  %674 = call i32 @s2n_connection_ptr_free(ptr noundef nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  %675 = call i32 @s2n_config_ptr_free(ptr noundef nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  %676 = add nuw nsw i64 %.076143, 1
  %exitcond.not = icmp eq i64 %676, 4
  br i1 %exitcond.not, label %211, label %214, !llvm.loop !51

677:                                              ; preds = %174
  %678 = tail call ptr @__errno_location() #11
  %679 = load i32, ptr %678, align 4, !tbaa !5
  %680 = load ptr, ptr @stderr, align 8, !tbaa !9
  %681 = call i32 @s2n_print_stacktrace(ptr noundef %680) #10
  %682 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %683 = trunc nuw i8 %682 to i1
  br i1 %683, label %684, label %688

684:                                              ; preds = %677
  %685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %686 = call i32 @fileno(ptr noundef %685) #10
  %687 = call i32 @isatty(i32 noundef %686) #10
  %.not90 = icmp eq i32 %687, 0
  br i1 %.not90, label %688, label %689

688:                                              ; preds = %684, %677
  br label %689

689:                                              ; preds = %684, %688
  %.str.5.sink470 = phi ptr [ @.str.5, %688 ], [ @.str.2, %684 ]
  store i32 %679, ptr %678, align 4, !tbaa !5
  %690 = load ptr, ptr @stderr, align 8, !tbaa !9
  %691 = load i32, ptr @test_count, align 4, !tbaa !5
  %692 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %693 = load i32, ptr %692, align 4, !tbaa !5
  %694 = call ptr @s2n_strerror(i32 noundef %693, ptr noundef nonnull @.str.4) #10
  %695 = load i32, ptr %692, align 4, !tbaa !5
  %696 = call ptr @s2n_strerror_debug(i32 noundef %695, ptr noundef nonnull @.str.4) #10
  %697 = load i32, ptr %678, align 4, !tbaa !5
  %698 = call ptr @strerror(i32 noundef %697) #10
  %699 = load i32, ptr %678, align 4, !tbaa !5
  %700 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %690, ptr noundef nonnull %.str.5.sink470, i32 noundef %691, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 140, ptr noundef %694, ptr noundef %696, ptr noundef %698, i32 noundef %699) #12
  call void @exit(i32 noundef 1) #13
  unreachable

701:                                              ; preds = %174
  %702 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %703 = icmp eq i32 %702, -1
  br i1 %703, label %704, label %728

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

711:                                              ; preds = %704
  %712 = load ptr, ptr @stderr, align 8, !tbaa !9
  %713 = call i32 @fileno(ptr noundef %712) #10
  %714 = call i32 @isatty(i32 noundef %713) #10
  %.not89 = icmp eq i32 %714, 0
  br i1 %.not89, label %715, label %716

715:                                              ; preds = %711, %704
  br label %716

716:                                              ; preds = %711, %715
  %.str.5.sink481 = phi ptr [ @.str.5, %715 ], [ @.str.2, %711 ]
  store i32 %706, ptr %705, align 4, !tbaa !5
  %717 = load ptr, ptr @stderr, align 8, !tbaa !9
  %718 = load i32, ptr @test_count, align 4, !tbaa !5
  %719 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %720 = load i32, ptr %719, align 4, !tbaa !5
  %721 = call ptr @s2n_strerror(i32 noundef %720, ptr noundef nonnull @.str.4) #10
  %722 = load i32, ptr %719, align 4, !tbaa !5
  %723 = call ptr @s2n_strerror_debug(i32 noundef %722, ptr noundef nonnull @.str.4) #10
  %724 = load i32, ptr %705, align 4, !tbaa !5
  %725 = call ptr @strerror(i32 noundef %724) #10
  %726 = load i32, ptr %705, align 4, !tbaa !5
  %727 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %717, ptr noundef nonnull %.str.5.sink481, i32 noundef %718, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.1, i32 noundef 140, ptr noundef %721, ptr noundef %723, ptr noundef %725, i32 noundef %726) #12
  call void @exit(i32 noundef 1) #13
  unreachable

728:                                              ; preds = %701
  %729 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %730 = trunc nuw i8 %729 to i1
  br i1 %730, label %731, label %742

731:                                              ; preds = %728
  %732 = load ptr, ptr @stdout, align 8, !tbaa !9
  %733 = call i32 @fileno(ptr noundef %732) #10
  %734 = call i32 @isatty(i32 noundef %733) #10
  %.not86 = icmp eq i32 %734, 0
  br i1 %.not86, label %742, label %735

735:                                              ; preds = %731
  %736 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not88 = icmp eq i32 %736, 0
  %737 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not88, label %740, label %738

738:                                              ; preds = %735
  %739 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %737, ptr noundef nonnull @.str.10, i32 noundef %736) #10
  br label %749

740:                                              ; preds = %735
  %741 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %737, ptr noundef nonnull @.str.11) #10
  br label %749

742:                                              ; preds = %731, %728
  %743 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not87 = icmp eq i32 %743, 0
  %744 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not87, label %747, label %745

745:                                              ; preds = %742
  %746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %744, ptr noundef nonnull @.str.12, i32 noundef %743) #10
  br label %749

747:                                              ; preds = %742
  %748 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %744, ptr noundef nonnull @.str.13) #10
  br label %749

749:                                              ; preds = %740, %738, %747, %745, %165, %163, %172, %170
  ret i32 0
}

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

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #2

declare i32 @s2n_init() local_unnamed_addr #2

declare zeroext i1 @s2n_is_rsa_pss_certs_supported(...) local_unnamed_addr #2

declare zeroext i1 @s2n_is_tls13_fully_supported(...) local_unnamed_addr #2

declare i32 @s2n_cleanup() local_unnamed_addr #2

declare i32 @s2n_cert_chain_and_key_ptr_free(ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_test_load_certificate(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare ptr @s2n_config_new() local_unnamed_addr #2

declare i32 @s2n_config_ptr_free(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_pem_to_trust_store(ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
declare hidden zeroext i8 @s2n_noop_verify_host_fn(ptr noundef, i64 noundef, ptr noundef) #0

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

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

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_connections_set_io_pair(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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


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