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

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

%struct.s2n_kem_preferences = type { i8, ptr, i8, ptr, i8 }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_signature_preferences = type { i8, ptr }
%struct.s2n_ecc_preferences = type { i8, ptr }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }
%struct.s2n_result = type { i32 }
%struct.s2n_connection = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [22 x i8], [22 x i8], [22 x i8], i32, i32, %struct.s2n_timer, i64, i64, [32 x i8], i8, i8, i8, i8, i8, i8, i8, ptr, ptr, %struct.s2n_secrets, ptr, ptr, %struct.s2n_kex_parameters, %struct.s2n_handshake_parameters, %struct.s2n_psk_parameters, ptr, i8, i32, [5 x i8], %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, %struct.s2n_stuffer, i32, i64, [2 x i8], %struct.s2n_stuffer, i8, i8, i8, i8, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, %struct.s2n_handshake, i16, i32, i16, i64, i8, i64, i64, i64, %struct.s2n_atomic_flag, %struct.s2n_atomic_flag, [256 x i8], [256 x i8], i32, %struct.s2n_blob, i32, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_client_hello, %struct.s2n_x509_validator, ptr, ptr, i8, i32, %struct.s2n_blob, i32, %struct.s2n_ticket_fields, [138 x i8], %struct.s2n_stuffer, %struct.s2n_blob, %struct.s2n_blob, i8, i8, i8, i16, i16, i32, i32, %struct.s2n_blob, i32, %struct.s2n_post_handshake, %struct.s2n_atomic_flag, i8, i8 }
%struct.s2n_timer = type { i64 }
%struct.s2n_secrets = type { %union.anon, i32 }
%union.anon = type { %struct.s2n_tls13_secrets }
%struct.s2n_tls13_secrets = type { [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], [48 x i8], i32 }
%struct.s2n_kex_parameters = type { %struct.s2n_dh_params, %struct.s2n_ecc_evp_params, [4 x ptr], %struct.s2n_ecc_evp_params, %struct.s2n_kem_group_params, %struct.s2n_kem_group_params, [8 x ptr], %struct.s2n_kem_params, %struct.s2n_blob, %struct.s2n_blob }
%struct.s2n_dh_params = type { ptr }
%struct.s2n_ecc_evp_params = type { ptr, ptr }
%struct.s2n_kem_group_params = type { ptr, %struct.s2n_kem_params, %struct.s2n_ecc_evp_params }
%struct.s2n_kem_params = type { ptr, %struct.s2n_blob, %struct.s2n_blob, %struct.s2n_blob, i8 }
%struct.s2n_handshake_parameters = type { %struct.s2n_pkey, %struct.s2n_pkey, %struct.s2n_blob, i32, %struct.s2n_sig_scheme_list, ptr, ptr, ptr, [4 x ptr], [4 x ptr], i8, i8, [32 x i8], [32 x i8] }
%struct.s2n_pkey = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.s2n_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 }
%struct.s2n_kem_group = type { ptr, i16, ptr, ptr, i8 }

@s2n_use_color_in_output = external dso_local global i8, align 1
@s2n_errno = external thread_local global i32, align 4
@test_count = external dso_local global i32, align 4
@stdout = external global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@stderr = external global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [43 x i8], align 1
@kem_preferences_null = external constant %struct.s2n_kem_preferences, align 8
@.str.18 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [107 x i8], align 1
@kem_preferences_all = external constant %struct.s2n_kem_preferences, align 8
@cipher_preferences_test_all_tls13 = external constant %struct.s2n_cipher_preferences, align 8
@s2n_signature_preferences_20200207 = external constant %struct.s2n_signature_preferences, align 8
@s2n_ecc_preferences_20200310 = external constant %struct.s2n_ecc_preferences, align 8
@.str.29 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #2 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %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 ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i64, align 8
  %43 = alloca i32, align 4
  %44 = alloca i64, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca %struct.s2n_kem_preferences, align 8
  %71 = alloca %struct.s2n_security_policy, align 8
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca ptr, align 8
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca ptr, align 8
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca i32, align 4
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca ptr, align 8
  %95 = alloca i32, align 4
  %96 = alloca ptr, align 8
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca ptr, align 8
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i64, align 8
  %108 = alloca i64, align 8
  %109 = alloca i32, align 4
  %110 = alloca ptr, align 8
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca i32, align 4
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca %struct.s2n_result, align 4
  %120 = alloca i32, align 4
  %121 = alloca ptr, align 8
  %122 = alloca i32, align 4
  %123 = alloca ptr, align 8
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca ptr, align 8
  %127 = alloca i32, align 4
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca i32, align 4
  %132 = alloca i32, align 4
  %133 = alloca i32, align 4
  %134 = alloca i64, align 8
  %135 = alloca i64, align 8
  %136 = alloca i32, align 4
  %137 = alloca ptr, align 8
  %138 = alloca i32, align 4
  %139 = alloca i32, align 4
  %140 = alloca i32, align 4
  %141 = alloca i32, align 4
  %142 = alloca i32, align 4
  %143 = alloca i32, align 4
  %144 = alloca i32, align 4
  %145 = alloca ptr, align 8
  %146 = alloca i32, align 4
  %147 = alloca ptr, align 8
  %148 = alloca i32, align 4
  %149 = alloca i32, align 4
  %150 = alloca ptr, align 8
  %151 = alloca i32, align 4
  %152 = alloca i32, align 4
  %153 = alloca i32, align 4
  %154 = alloca i64, align 8
  %155 = alloca i32, align 4
  %156 = alloca i64, align 8
  %157 = alloca i32, align 4
  %158 = alloca i32, align 4
  %159 = alloca i32, align 4
  %160 = alloca i32, align 4
  %161 = alloca i32, align 4
  %162 = alloca i32, align 4
  %163 = alloca i32, align 4
  %164 = alloca i32, align 4
  %165 = alloca i32, align 4
  %166 = alloca i32, align 4
  %167 = alloca i32, align 4
  %168 = alloca i32, align 4
  %169 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  br label %170

170:                                              ; preds = %0
  br label %171

171:                                              ; preds = %170
  store i32 0, ptr @test_count, align 4, !tbaa !5
  %172 = load ptr, ptr @stdout, align 8, !tbaa !9
  %173 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %172, ptr noundef @.str.4, ptr noundef @.str.5) #9
  %174 = load ptr, ptr @stdout, align 8, !tbaa !9
  %175 = call i32 @fflush(ptr noundef %174)
  br label %176

176:                                              ; preds = %171
  %177 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext true)
  %178 = icmp eq i32 %177, -1
  br i1 %178, label %179, label %230

179:                                              ; preds = %176
  br label %180

180:                                              ; preds = %179
  br label %181

181:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #9
  %182 = call ptr @__errno_location() #10
  %183 = load i32, ptr %182, align 4, !tbaa !5
  store i32 %183, ptr %2, align 4, !tbaa !5
  %184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %185 = call i32 @s2n_print_stacktrace(ptr noundef %184)
  %186 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %187 = trunc i8 %186 to i1
  br i1 %187, label %188, label %210

188:                                              ; preds = %181
  %189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %190 = call i32 @fileno(ptr noundef %189) #9
  %191 = call i32 @isatty(i32 noundef %190) #9
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %193, label %210

193:                                              ; preds = %188
  %194 = load i32, ptr %2, align 4, !tbaa !5
  %195 = call ptr @__errno_location() #10
  store i32 %194, ptr %195, align 4, !tbaa !5
  %196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %197 = load i32, ptr @test_count, align 4, !tbaa !5
  %198 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %199 = load i32, ptr %198, align 4, !tbaa !5
  %200 = call ptr @s2n_strerror(i32 noundef %199, ptr noundef @.str.8)
  %201 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %202 = load i32, ptr %201, align 4, !tbaa !5
  %203 = call ptr @s2n_strerror_debug(i32 noundef %202, ptr noundef @.str.8)
  %204 = call ptr @__errno_location() #10
  %205 = load i32, ptr %204, align 4, !tbaa !5
  %206 = call ptr @strerror(i32 noundef %205) #9
  %207 = call ptr @__errno_location() #10
  %208 = load i32, ptr %207, align 4, !tbaa !5
  %209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %196, ptr noundef @.str.6, i32 noundef %197, ptr noundef @.str.7, ptr noundef @.str.5, i32 noundef 30, ptr noundef %200, ptr noundef %203, ptr noundef %206, i32 noundef %208) #9
  br label %227

210:                                              ; preds = %188, %181
  %211 = load i32, ptr %2, align 4, !tbaa !5
  %212 = call ptr @__errno_location() #10
  store i32 %211, ptr %212, align 4, !tbaa !5
  %213 = load ptr, ptr @stderr, align 8, !tbaa !9
  %214 = load i32, ptr @test_count, align 4, !tbaa !5
  %215 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %216 = load i32, ptr %215, align 4, !tbaa !5
  %217 = call ptr @s2n_strerror(i32 noundef %216, ptr noundef @.str.8)
  %218 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %219 = load i32, ptr %218, align 4, !tbaa !5
  %220 = call ptr @s2n_strerror_debug(i32 noundef %219, ptr noundef @.str.8)
  %221 = call ptr @__errno_location() #10
  %222 = load i32, ptr %221, align 4, !tbaa !5
  %223 = call ptr @strerror(i32 noundef %222) #9
  %224 = call ptr @__errno_location() #10
  %225 = load i32, ptr %224, align 4, !tbaa !5
  %226 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %213, ptr noundef @.str.9, i32 noundef %214, ptr noundef @.str.7, ptr noundef @.str.5, i32 noundef 30, ptr noundef %217, ptr noundef %220, ptr noundef %223, i32 noundef %225) #9
  br label %227

227:                                              ; preds = %210, %193
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #9
  br label %228

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

229:                                              ; No predecessors!
  br label %230

230:                                              ; preds = %229, %176
  br label %231

231:                                              ; preds = %230
  br label %232

232:                                              ; preds = %231
  %233 = load i32, ptr @test_count, align 4, !tbaa !5
  %234 = add nsw i32 %233, 1
  store i32 %234, ptr @test_count, align 4, !tbaa !5
  %235 = call i32 @s2n_enable_atexit()
  %236 = icmp eq i32 %235, -1
  br i1 %236, label %237, label %288

237:                                              ; preds = %232
  br label %238

238:                                              ; preds = %237
  br label %239

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

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

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

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

285:                                              ; preds = %268, %251
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #9
  br label %286

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

287:                                              ; No predecessors!
  br label %288

288:                                              ; preds = %287, %232
  br label %289

289:                                              ; preds = %288
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290
  %292 = call i32 @s2n_init()
  %293 = icmp eq i32 %292, -1
  br i1 %293, label %294, label %345

294:                                              ; preds = %291
  br label %295

295:                                              ; preds = %294
  br label %296

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

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

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

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

342:                                              ; preds = %325, %308
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #9
  br label %343

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

344:                                              ; No predecessors!
  br label %345

345:                                              ; preds = %344, %291
  br label %346

346:                                              ; preds = %345
  br label %347

347:                                              ; preds = %346
  br label %348

348:                                              ; preds = %347
  %349 = load i32, ptr @test_count, align 4, !tbaa !5
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr @test_count, align 4, !tbaa !5
  %351 = call i32 (...) @s2n_disable_tls13_in_test()
  %352 = icmp eq i32 %351, -1
  br i1 %352, label %353, label %404

353:                                              ; preds = %348
  br label %354

354:                                              ; preds = %353
  br label %355

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

362:                                              ; preds = %355
  %363 = load ptr, ptr @stderr, align 8, !tbaa !9
  %364 = call i32 @fileno(ptr noundef %363) #9
  %365 = call i32 @isatty(i32 noundef %364) #9
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %384

367:                                              ; preds = %362
  %368 = load i32, ptr %5, align 4, !tbaa !5
  %369 = call ptr @__errno_location() #10
  store i32 %368, ptr %369, align 4, !tbaa !5
  %370 = load ptr, ptr @stderr, align 8, !tbaa !9
  %371 = load i32, ptr @test_count, align 4, !tbaa !5
  %372 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %373 = load i32, ptr %372, align 4, !tbaa !5
  %374 = call ptr @s2n_strerror(i32 noundef %373, ptr noundef @.str.8)
  %375 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %376 = load i32, ptr %375, align 4, !tbaa !5
  %377 = call ptr @s2n_strerror_debug(i32 noundef %376, ptr noundef @.str.8)
  %378 = call ptr @__errno_location() #10
  %379 = load i32, ptr %378, align 4, !tbaa !5
  %380 = call ptr @strerror(i32 noundef %379) #9
  %381 = call ptr @__errno_location() #10
  %382 = load i32, ptr %381, align 4, !tbaa !5
  %383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %370, ptr noundef @.str.6, i32 noundef %371, ptr noundef @.str.12, ptr noundef @.str.5, i32 noundef 31, ptr noundef %374, ptr noundef %377, ptr noundef %380, i32 noundef %382) #9
  br label %401

384:                                              ; preds = %362, %355
  %385 = load i32, ptr %5, align 4, !tbaa !5
  %386 = call ptr @__errno_location() #10
  store i32 %385, ptr %386, align 4, !tbaa !5
  %387 = load ptr, ptr @stderr, align 8, !tbaa !9
  %388 = load i32, ptr @test_count, align 4, !tbaa !5
  %389 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %391 = call ptr @s2n_strerror(i32 noundef %390, ptr noundef @.str.8)
  %392 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %393 = load i32, ptr %392, align 4, !tbaa !5
  %394 = call ptr @s2n_strerror_debug(i32 noundef %393, ptr noundef @.str.8)
  %395 = call ptr @__errno_location() #10
  %396 = load i32, ptr %395, align 4, !tbaa !5
  %397 = call ptr @strerror(i32 noundef %396) #9
  %398 = call ptr @__errno_location() #10
  %399 = load i32, ptr %398, align 4, !tbaa !5
  %400 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %387, ptr noundef @.str.9, i32 noundef %388, ptr noundef @.str.12, ptr noundef @.str.5, i32 noundef 31, ptr noundef %391, ptr noundef %394, ptr noundef %397, i32 noundef %399) #9
  br label %401

401:                                              ; preds = %384, %367
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #9
  br label %402

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

403:                                              ; No predecessors!
  br label %404

404:                                              ; preds = %403, %348
  br label %405

405:                                              ; preds = %404
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #9
  store ptr null, ptr %6, align 8, !tbaa !9
  br label %406

406:                                              ; preds = %405
  %407 = load i32, ptr @test_count, align 4, !tbaa !5
  %408 = add nsw i32 %407, 1
  store i32 %408, ptr @test_count, align 4, !tbaa !5
  %409 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %409, ptr %6, align 8, !tbaa !9
  %410 = icmp eq ptr %409, null
  br i1 %410, label %411, label %464

411:                                              ; preds = %406
  br label %412

412:                                              ; preds = %411
  br label %413

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

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

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

442:                                              ; preds = %420, %413
  %443 = load i32, ptr %7, align 4, !tbaa !5
  %444 = call ptr @__errno_location() #10
  store i32 %443, ptr %444, align 4, !tbaa !5
  %445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %446 = load i32, ptr @test_count, align 4, !tbaa !5
  %447 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %448 = load i32, ptr %447, align 4, !tbaa !5
  %449 = call ptr @s2n_strerror(i32 noundef %448, ptr noundef @.str.8)
  %450 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %451 = load i32, ptr %450, align 4, !tbaa !5
  %452 = call ptr @s2n_strerror_debug(i32 noundef %451, ptr noundef @.str.8)
  %453 = call ptr @__errno_location() #10
  %454 = load i32, ptr %453, align 4, !tbaa !5
  %455 = call ptr @strerror(i32 noundef %454) #9
  %456 = call ptr @__errno_location() #10
  %457 = load i32, ptr %456, align 4, !tbaa !5
  %458 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %445, ptr noundef @.str.9, i32 noundef %446, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 38, ptr noundef %449, ptr noundef %452, ptr noundef %455, i32 noundef %457) #9
  br label %459

459:                                              ; preds = %442, %425
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %460

460:                                              ; preds = %459
  br label %461

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

462:                                              ; No predecessors!
  br label %463

463:                                              ; preds = %462
  br label %464

464:                                              ; preds = %463, %406
  br label %465

465:                                              ; preds = %464
  br label %466

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

467:                                              ; preds = %466
  %468 = load i32, ptr @test_count, align 4, !tbaa !5
  %469 = add nsw i32 %468, 1
  store i32 %469, ptr @test_count, align 4, !tbaa !5
  %470 = load ptr, ptr %6, align 8, !tbaa !9
  %471 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %470, ptr noundef %8)
  %472 = icmp eq i32 %471, -1
  br i1 %472, label %473, label %526

473:                                              ; preds = %467
  br label %474

474:                                              ; preds = %473
  br label %475

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

482:                                              ; preds = %475
  %483 = load ptr, ptr @stderr, align 8, !tbaa !9
  %484 = call i32 @fileno(ptr noundef %483) #9
  %485 = call i32 @isatty(i32 noundef %484) #9
  %486 = icmp ne i32 %485, 0
  br i1 %486, label %487, label %504

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

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

521:                                              ; preds = %504, %487
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  br label %522

522:                                              ; preds = %521
  br label %523

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

524:                                              ; No predecessors!
  br label %525

525:                                              ; preds = %524
  br label %526

526:                                              ; preds = %525, %467
  br label %527

527:                                              ; preds = %526
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  %530 = load i32, ptr @test_count, align 4, !tbaa !5
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr @test_count, align 4, !tbaa !5
  %532 = load ptr, ptr %8, align 8, !tbaa !9
  %533 = icmp eq ptr %532, null
  br i1 %533, label %534, label %587

534:                                              ; preds = %529
  br label %535

535:                                              ; preds = %534
  br label %536

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

543:                                              ; preds = %536
  %544 = load ptr, ptr @stderr, align 8, !tbaa !9
  %545 = call i32 @fileno(ptr noundef %544) #9
  %546 = call i32 @isatty(i32 noundef %545) #9
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %548, label %565

548:                                              ; preds = %543
  %549 = load i32, ptr %10, align 4, !tbaa !5
  %550 = call ptr @__errno_location() #10
  store i32 %549, ptr %550, align 4, !tbaa !5
  %551 = load ptr, ptr @stderr, align 8, !tbaa !9
  %552 = load i32, ptr @test_count, align 4, !tbaa !5
  %553 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %554 = load i32, ptr %553, align 4, !tbaa !5
  %555 = call ptr @s2n_strerror(i32 noundef %554, ptr noundef @.str.8)
  %556 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %557 = load i32, ptr %556, align 4, !tbaa !5
  %558 = call ptr @s2n_strerror_debug(i32 noundef %557, ptr noundef @.str.8)
  %559 = call ptr @__errno_location() #10
  %560 = load i32, ptr %559, align 4, !tbaa !5
  %561 = call ptr @strerror(i32 noundef %560) #9
  %562 = call ptr @__errno_location() #10
  %563 = load i32, ptr %562, align 4, !tbaa !5
  %564 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %551, ptr noundef @.str.6, i32 noundef %552, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 42, ptr noundef %555, ptr noundef %558, ptr noundef %561, i32 noundef %563) #9
  br label %582

565:                                              ; preds = %543, %536
  %566 = load i32, ptr %10, align 4, !tbaa !5
  %567 = call ptr @__errno_location() #10
  store i32 %566, ptr %567, align 4, !tbaa !5
  %568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %569 = load i32, ptr @test_count, align 4, !tbaa !5
  %570 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %571 = load i32, ptr %570, align 4, !tbaa !5
  %572 = call ptr @s2n_strerror(i32 noundef %571, ptr noundef @.str.8)
  %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_debug(i32 noundef %574, ptr noundef @.str.8)
  %576 = call ptr @__errno_location() #10
  %577 = load i32, ptr %576, align 4, !tbaa !5
  %578 = call ptr @strerror(i32 noundef %577) #9
  %579 = call ptr @__errno_location() #10
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %568, ptr noundef @.str.9, i32 noundef %569, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 42, ptr noundef %572, ptr noundef %575, ptr noundef %578, i32 noundef %580) #9
  br label %582

582:                                              ; preds = %565, %548
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  br label %583

583:                                              ; preds = %582
  br label %584

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

585:                                              ; No predecessors!
  br label %586

586:                                              ; preds = %585
  br label %587

587:                                              ; preds = %586, %529
  br label %588

588:                                              ; preds = %587
  br label %589

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

590:                                              ; preds = %589
  %591 = load i32, ptr @test_count, align 4, !tbaa !5
  %592 = add nsw i32 %591, 1
  store i32 %592, ptr @test_count, align 4, !tbaa !5
  %593 = load ptr, ptr %6, align 8, !tbaa !9
  %594 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %593, ptr noundef %11)
  %595 = icmp eq i32 %594, -1
  br i1 %595, label %596, label %649

596:                                              ; preds = %590
  br label %597

597:                                              ; preds = %596
  br label %598

598:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %599 = call ptr @__errno_location() #10
  %600 = load i32, ptr %599, align 4, !tbaa !5
  store i32 %600, ptr %12, align 4, !tbaa !5
  %601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %602 = call i32 @s2n_print_stacktrace(ptr noundef %601)
  %603 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %604 = trunc i8 %603 to i1
  br i1 %604, label %605, label %627

605:                                              ; preds = %598
  %606 = load ptr, ptr @stderr, align 8, !tbaa !9
  %607 = call i32 @fileno(ptr noundef %606) #9
  %608 = call i32 @isatty(i32 noundef %607) #9
  %609 = icmp ne i32 %608, 0
  br i1 %609, label %610, label %627

610:                                              ; preds = %605
  %611 = load i32, ptr %12, align 4, !tbaa !5
  %612 = call ptr @__errno_location() #10
  store i32 %611, ptr %612, align 4, !tbaa !5
  %613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %614 = load i32, ptr @test_count, align 4, !tbaa !5
  %615 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %616 = load i32, ptr %615, align 4, !tbaa !5
  %617 = call ptr @s2n_strerror(i32 noundef %616, ptr noundef @.str.8)
  %618 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %619 = load i32, ptr %618, align 4, !tbaa !5
  %620 = call ptr @s2n_strerror_debug(i32 noundef %619, ptr noundef @.str.8)
  %621 = call ptr @__errno_location() #10
  %622 = load i32, ptr %621, align 4, !tbaa !5
  %623 = call ptr @strerror(i32 noundef %622) #9
  %624 = call ptr @__errno_location() #10
  %625 = load i32, ptr %624, align 4, !tbaa !5
  %626 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %613, ptr noundef @.str.6, i32 noundef %614, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 45, ptr noundef %617, ptr noundef %620, ptr noundef %623, i32 noundef %625) #9
  br label %644

627:                                              ; preds = %605, %598
  %628 = load i32, ptr %12, align 4, !tbaa !5
  %629 = call ptr @__errno_location() #10
  store i32 %628, ptr %629, align 4, !tbaa !5
  %630 = load ptr, ptr @stderr, align 8, !tbaa !9
  %631 = load i32, ptr @test_count, align 4, !tbaa !5
  %632 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %633 = load i32, ptr %632, align 4, !tbaa !5
  %634 = call ptr @s2n_strerror(i32 noundef %633, ptr noundef @.str.8)
  %635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %636 = load i32, ptr %635, align 4, !tbaa !5
  %637 = call ptr @s2n_strerror_debug(i32 noundef %636, ptr noundef @.str.8)
  %638 = call ptr @__errno_location() #10
  %639 = load i32, ptr %638, align 4, !tbaa !5
  %640 = call ptr @strerror(i32 noundef %639) #9
  %641 = call ptr @__errno_location() #10
  %642 = load i32, ptr %641, align 4, !tbaa !5
  %643 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %630, ptr noundef @.str.9, i32 noundef %631, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 45, ptr noundef %634, ptr noundef %637, ptr noundef %640, i32 noundef %642) #9
  br label %644

644:                                              ; preds = %627, %610
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %645

645:                                              ; preds = %644
  br label %646

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

647:                                              ; No predecessors!
  br label %648

648:                                              ; preds = %647
  br label %649

649:                                              ; preds = %648, %590
  br label %650

650:                                              ; preds = %649
  br label %651

651:                                              ; preds = %650
  br label %652

652:                                              ; preds = %651
  %653 = load i32, ptr @test_count, align 4, !tbaa !5
  %654 = add nsw i32 %653, 1
  store i32 %654, ptr @test_count, align 4, !tbaa !5
  %655 = load ptr, ptr %11, align 8, !tbaa !9
  %656 = icmp eq ptr %655, null
  br i1 %656, label %657, label %710

657:                                              ; preds = %652
  br label %658

658:                                              ; preds = %657
  br label %659

659:                                              ; preds = %658
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %660 = call ptr @__errno_location() #10
  %661 = load i32, ptr %660, align 4, !tbaa !5
  store i32 %661, ptr %13, align 4, !tbaa !5
  %662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %663 = call i32 @s2n_print_stacktrace(ptr noundef %662)
  %664 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %665 = trunc i8 %664 to i1
  br i1 %665, label %666, label %688

666:                                              ; preds = %659
  %667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %668 = call i32 @fileno(ptr noundef %667) #9
  %669 = call i32 @isatty(i32 noundef %668) #9
  %670 = icmp ne i32 %669, 0
  br i1 %670, label %671, label %688

671:                                              ; preds = %666
  %672 = load i32, ptr %13, align 4, !tbaa !5
  %673 = call ptr @__errno_location() #10
  store i32 %672, ptr %673, align 4, !tbaa !5
  %674 = load ptr, ptr @stderr, align 8, !tbaa !9
  %675 = load i32, ptr @test_count, align 4, !tbaa !5
  %676 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %677 = load i32, ptr %676, align 4, !tbaa !5
  %678 = call ptr @s2n_strerror(i32 noundef %677, ptr noundef @.str.8)
  %679 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %680 = load i32, ptr %679, align 4, !tbaa !5
  %681 = call ptr @s2n_strerror_debug(i32 noundef %680, ptr noundef @.str.8)
  %682 = call ptr @__errno_location() #10
  %683 = load i32, ptr %682, align 4, !tbaa !5
  %684 = call ptr @strerror(i32 noundef %683) #9
  %685 = call ptr @__errno_location() #10
  %686 = load i32, ptr %685, align 4, !tbaa !5
  %687 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %674, ptr noundef @.str.6, i32 noundef %675, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 46, ptr noundef %678, ptr noundef %681, ptr noundef %684, i32 noundef %686) #9
  br label %705

688:                                              ; preds = %666, %659
  %689 = load i32, ptr %13, align 4, !tbaa !5
  %690 = call ptr @__errno_location() #10
  store i32 %689, ptr %690, align 4, !tbaa !5
  %691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %692 = load i32, ptr @test_count, align 4, !tbaa !5
  %693 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %694 = load i32, ptr %693, align 4, !tbaa !5
  %695 = call ptr @s2n_strerror(i32 noundef %694, ptr noundef @.str.8)
  %696 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %697 = load i32, ptr %696, align 4, !tbaa !5
  %698 = call ptr @s2n_strerror_debug(i32 noundef %697, ptr noundef @.str.8)
  %699 = call ptr @__errno_location() #10
  %700 = load i32, ptr %699, align 4, !tbaa !5
  %701 = call ptr @strerror(i32 noundef %700) #9
  %702 = call ptr @__errno_location() #10
  %703 = load i32, ptr %702, align 4, !tbaa !5
  %704 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %691, ptr noundef @.str.9, i32 noundef %692, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 46, ptr noundef %695, ptr noundef %698, ptr noundef %701, i32 noundef %703) #9
  br label %705

705:                                              ; preds = %688, %671
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %706

706:                                              ; preds = %705
  br label %707

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

708:                                              ; No predecessors!
  br label %709

709:                                              ; preds = %708
  br label %710

710:                                              ; preds = %709, %652
  br label %711

711:                                              ; preds = %710
  br label %712

712:                                              ; preds = %711
  br label %713

713:                                              ; preds = %712
  %714 = load i32, ptr @test_count, align 4, !tbaa !5
  %715 = add nsw i32 %714, 1
  store i32 %715, ptr @test_count, align 4, !tbaa !5
  %716 = load ptr, ptr %11, align 8, !tbaa !9
  %717 = icmp eq ptr %716, @kem_preferences_null
  br i1 %717, label %771, label %718

718:                                              ; preds = %713
  br label %719

719:                                              ; preds = %718
  br label %720

720:                                              ; preds = %719
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %721 = call ptr @__errno_location() #10
  %722 = load i32, ptr %721, align 4, !tbaa !5
  store i32 %722, ptr %14, align 4, !tbaa !5
  %723 = load ptr, ptr @stderr, align 8, !tbaa !9
  %724 = call i32 @s2n_print_stacktrace(ptr noundef %723)
  %725 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %726 = trunc i8 %725 to i1
  br i1 %726, label %727, label %749

727:                                              ; preds = %720
  %728 = load ptr, ptr @stderr, align 8, !tbaa !9
  %729 = call i32 @fileno(ptr noundef %728) #9
  %730 = call i32 @isatty(i32 noundef %729) #9
  %731 = icmp ne i32 %730, 0
  br i1 %731, label %732, label %749

732:                                              ; preds = %727
  %733 = load i32, ptr %14, align 4, !tbaa !5
  %734 = call ptr @__errno_location() #10
  store i32 %733, ptr %734, align 4, !tbaa !5
  %735 = load ptr, ptr @stderr, align 8, !tbaa !9
  %736 = load i32, ptr @test_count, align 4, !tbaa !5
  %737 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %738 = load i32, ptr %737, align 4, !tbaa !5
  %739 = call ptr @s2n_strerror(i32 noundef %738, ptr noundef @.str.8)
  %740 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %741 = load i32, ptr %740, align 4, !tbaa !5
  %742 = call ptr @s2n_strerror_debug(i32 noundef %741, ptr noundef @.str.8)
  %743 = call ptr @__errno_location() #10
  %744 = load i32, ptr %743, align 4, !tbaa !5
  %745 = call ptr @strerror(i32 noundef %744) #9
  %746 = call ptr @__errno_location() #10
  %747 = load i32, ptr %746, align 4, !tbaa !5
  %748 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %735, ptr noundef @.str.6, i32 noundef %736, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 47, ptr noundef %739, ptr noundef %742, ptr noundef %745, i32 noundef %747) #9
  br label %766

749:                                              ; preds = %727, %720
  %750 = load i32, ptr %14, align 4, !tbaa !5
  %751 = call ptr @__errno_location() #10
  store i32 %750, ptr %751, align 4, !tbaa !5
  %752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %753 = load i32, ptr @test_count, align 4, !tbaa !5
  %754 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %755 = load i32, ptr %754, align 4, !tbaa !5
  %756 = call ptr @s2n_strerror(i32 noundef %755, ptr noundef @.str.8)
  %757 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %758 = load i32, ptr %757, align 4, !tbaa !5
  %759 = call ptr @s2n_strerror_debug(i32 noundef %758, ptr noundef @.str.8)
  %760 = call ptr @__errno_location() #10
  %761 = load i32, ptr %760, align 4, !tbaa !5
  %762 = call ptr @strerror(i32 noundef %761) #9
  %763 = call ptr @__errno_location() #10
  %764 = load i32, ptr %763, align 4, !tbaa !5
  %765 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %752, ptr noundef @.str.9, i32 noundef %753, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 47, ptr noundef %756, ptr noundef %759, ptr noundef %762, i32 noundef %764) #9
  br label %766

766:                                              ; preds = %749, %732
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %767

767:                                              ; preds = %766
  br label %768

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

769:                                              ; No predecessors!
  br label %770

770:                                              ; preds = %769
  br label %771

771:                                              ; preds = %770, %713
  br label %772

772:                                              ; preds = %771
  br label %773

773:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  store i64 0, ptr %15, align 8, !tbaa !15
  br label %774

774:                                              ; preds = %849, %773
  %775 = load i64, ptr %15, align 8, !tbaa !15
  %776 = load ptr, ptr %8, align 8, !tbaa !9
  %777 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %776, i32 0, i32 0
  %778 = load i8, ptr %777, align 8, !tbaa !17
  %779 = zext i8 %778 to i64
  %780 = icmp ult i64 %775, %779
  br i1 %780, label %782, label %781

781:                                              ; preds = %774
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %852

782:                                              ; preds = %774
  br label %783

783:                                              ; preds = %782
  %784 = load i32, ptr @test_count, align 4, !tbaa !5
  %785 = add nsw i32 %784, 1
  store i32 %785, ptr @test_count, align 4, !tbaa !5
  %786 = load ptr, ptr %6, align 8, !tbaa !9
  %787 = getelementptr inbounds %struct.s2n_connection, ptr %786, i32 0, i32 31
  %788 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %787, i32 0, i32 2
  %789 = load i64, ptr %15, align 8, !tbaa !15
  %790 = getelementptr inbounds [4 x ptr], ptr %788, i64 0, i64 %789
  %791 = load ptr, ptr %790, align 8, !tbaa !9
  %792 = icmp eq ptr %791, null
  br i1 %792, label %846, label %793

793:                                              ; preds = %783
  br label %794

794:                                              ; preds = %793
  br label %795

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

802:                                              ; preds = %795
  %803 = load ptr, ptr @stderr, align 8, !tbaa !9
  %804 = call i32 @fileno(ptr noundef %803) #9
  %805 = call i32 @isatty(i32 noundef %804) #9
  %806 = icmp ne i32 %805, 0
  br i1 %806, label %807, label %824

807:                                              ; preds = %802
  %808 = load i32, ptr %16, align 4, !tbaa !5
  %809 = call ptr @__errno_location() #10
  store i32 %808, ptr %809, align 4, !tbaa !5
  %810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %811 = load i32, ptr @test_count, align 4, !tbaa !5
  %812 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %813 = load i32, ptr %812, align 4, !tbaa !5
  %814 = call ptr @s2n_strerror(i32 noundef %813, ptr noundef @.str.8)
  %815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %816 = load i32, ptr %815, align 4, !tbaa !5
  %817 = call ptr @s2n_strerror_debug(i32 noundef %816, ptr noundef @.str.8)
  %818 = call ptr @__errno_location() #10
  %819 = load i32, ptr %818, align 4, !tbaa !5
  %820 = call ptr @strerror(i32 noundef %819) #9
  %821 = call ptr @__errno_location() #10
  %822 = load i32, ptr %821, align 4, !tbaa !5
  %823 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %810, ptr noundef @.str.6, i32 noundef %811, ptr noundef @.str.19, ptr noundef @.str.5, i32 noundef 50, ptr noundef %814, ptr noundef %817, ptr noundef %820, i32 noundef %822) #9
  br label %841

824:                                              ; preds = %802, %795
  %825 = load i32, ptr %16, align 4, !tbaa !5
  %826 = call ptr @__errno_location() #10
  store i32 %825, ptr %826, align 4, !tbaa !5
  %827 = load ptr, ptr @stderr, align 8, !tbaa !9
  %828 = load i32, ptr @test_count, align 4, !tbaa !5
  %829 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %830 = load i32, ptr %829, align 4, !tbaa !5
  %831 = call ptr @s2n_strerror(i32 noundef %830, ptr noundef @.str.8)
  %832 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %833 = load i32, ptr %832, align 4, !tbaa !5
  %834 = call ptr @s2n_strerror_debug(i32 noundef %833, ptr noundef @.str.8)
  %835 = call ptr @__errno_location() #10
  %836 = load i32, ptr %835, align 4, !tbaa !5
  %837 = call ptr @strerror(i32 noundef %836) #9
  %838 = call ptr @__errno_location() #10
  %839 = load i32, ptr %838, align 4, !tbaa !5
  %840 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %827, ptr noundef @.str.9, i32 noundef %828, ptr noundef @.str.19, ptr noundef @.str.5, i32 noundef 50, ptr noundef %831, ptr noundef %834, ptr noundef %837, i32 noundef %839) #9
  br label %841

841:                                              ; preds = %824, %807
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %842

842:                                              ; preds = %841
  br label %843

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

844:                                              ; No predecessors!
  br label %845

845:                                              ; preds = %844
  br label %846

846:                                              ; preds = %845, %783
  br label %847

847:                                              ; preds = %846
  br label %848

848:                                              ; preds = %847
  br label %849

849:                                              ; preds = %848
  %850 = load i64, ptr %15, align 8, !tbaa !15
  %851 = add i64 %850, 1
  store i64 %851, ptr %15, align 8, !tbaa !15
  br label %774, !llvm.loop !19

852:                                              ; preds = %781
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  store i64 0, ptr %17, align 8, !tbaa !15
  br label %853

853:                                              ; preds = %928, %852
  %854 = load i64, ptr %17, align 8, !tbaa !15
  %855 = load ptr, ptr %11, align 8, !tbaa !9
  %856 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %855, i32 0, i32 2
  %857 = load i8, ptr %856, align 8, !tbaa !21
  %858 = zext i8 %857 to i64
  %859 = icmp ult i64 %854, %858
  br i1 %859, label %861, label %860

860:                                              ; preds = %853
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  br label %931

861:                                              ; preds = %853
  br label %862

862:                                              ; preds = %861
  %863 = load i32, ptr @test_count, align 4, !tbaa !5
  %864 = add nsw i32 %863, 1
  store i32 %864, ptr @test_count, align 4, !tbaa !5
  %865 = load ptr, ptr %6, align 8, !tbaa !9
  %866 = getelementptr inbounds %struct.s2n_connection, ptr %865, i32 0, i32 31
  %867 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %866, i32 0, i32 6
  %868 = load i64, ptr %17, align 8, !tbaa !15
  %869 = getelementptr inbounds [8 x ptr], ptr %867, i64 0, i64 %868
  %870 = load ptr, ptr %869, align 8, !tbaa !9
  %871 = icmp eq ptr %870, null
  br i1 %871, label %925, label %872

872:                                              ; preds = %862
  br label %873

873:                                              ; preds = %872
  br label %874

874:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %875 = call ptr @__errno_location() #10
  %876 = load i32, ptr %875, align 4, !tbaa !5
  store i32 %876, ptr %18, align 4, !tbaa !5
  %877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %878 = call i32 @s2n_print_stacktrace(ptr noundef %877)
  %879 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %880 = trunc i8 %879 to i1
  br i1 %880, label %881, label %903

881:                                              ; preds = %874
  %882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %883 = call i32 @fileno(ptr noundef %882) #9
  %884 = call i32 @isatty(i32 noundef %883) #9
  %885 = icmp ne i32 %884, 0
  br i1 %885, label %886, label %903

886:                                              ; preds = %881
  %887 = load i32, ptr %18, align 4, !tbaa !5
  %888 = call ptr @__errno_location() #10
  store i32 %887, ptr %888, align 4, !tbaa !5
  %889 = load ptr, ptr @stderr, align 8, !tbaa !9
  %890 = load i32, ptr @test_count, align 4, !tbaa !5
  %891 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %892 = load i32, ptr %891, align 4, !tbaa !5
  %893 = call ptr @s2n_strerror(i32 noundef %892, ptr noundef @.str.8)
  %894 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %895 = load i32, ptr %894, align 4, !tbaa !5
  %896 = call ptr @s2n_strerror_debug(i32 noundef %895, ptr noundef @.str.8)
  %897 = call ptr @__errno_location() #10
  %898 = load i32, ptr %897, align 4, !tbaa !5
  %899 = call ptr @strerror(i32 noundef %898) #9
  %900 = call ptr @__errno_location() #10
  %901 = load i32, ptr %900, align 4, !tbaa !5
  %902 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %889, ptr noundef @.str.6, i32 noundef %890, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 54, ptr noundef %893, ptr noundef %896, ptr noundef %899, i32 noundef %901) #9
  br label %920

903:                                              ; preds = %881, %874
  %904 = load i32, ptr %18, align 4, !tbaa !5
  %905 = call ptr @__errno_location() #10
  store i32 %904, ptr %905, align 4, !tbaa !5
  %906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %907 = load i32, ptr @test_count, align 4, !tbaa !5
  %908 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %909 = load i32, ptr %908, align 4, !tbaa !5
  %910 = call ptr @s2n_strerror(i32 noundef %909, ptr noundef @.str.8)
  %911 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %912 = load i32, ptr %911, align 4, !tbaa !5
  %913 = call ptr @s2n_strerror_debug(i32 noundef %912, ptr noundef @.str.8)
  %914 = call ptr @__errno_location() #10
  %915 = load i32, ptr %914, align 4, !tbaa !5
  %916 = call ptr @strerror(i32 noundef %915) #9
  %917 = call ptr @__errno_location() #10
  %918 = load i32, ptr %917, align 4, !tbaa !5
  %919 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %906, ptr noundef @.str.9, i32 noundef %907, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 54, ptr noundef %910, ptr noundef %913, ptr noundef %916, i32 noundef %918) #9
  br label %920

920:                                              ; preds = %903, %886
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %921

921:                                              ; preds = %920
  br label %922

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

923:                                              ; No predecessors!
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924, %862
  br label %926

926:                                              ; preds = %925
  br label %927

927:                                              ; preds = %926
  br label %928

928:                                              ; preds = %927
  %929 = load i64, ptr %17, align 8, !tbaa !15
  %930 = add i64 %929, 1
  store i64 %930, ptr %17, align 8, !tbaa !15
  br label %853, !llvm.loop !23

931:                                              ; preds = %860
  br label %932

932:                                              ; preds = %931
  %933 = load i32, ptr @test_count, align 4, !tbaa !5
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr @test_count, align 4, !tbaa !5
  %935 = load ptr, ptr %6, align 8, !tbaa !9
  %936 = getelementptr inbounds %struct.s2n_connection, ptr %935, i32 0, i32 31
  %937 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %936, i32 0, i32 4
  %938 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %937, i32 0, i32 0
  %939 = load ptr, ptr %938, align 8, !tbaa !24
  %940 = icmp eq ptr %939, null
  br i1 %940, label %994, label %941

941:                                              ; preds = %932
  br label %942

942:                                              ; preds = %941
  br label %943

943:                                              ; preds = %942
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %944 = call ptr @__errno_location() #10
  %945 = load i32, ptr %944, align 4, !tbaa !5
  store i32 %945, ptr %19, align 4, !tbaa !5
  %946 = load ptr, ptr @stderr, align 8, !tbaa !9
  %947 = call i32 @s2n_print_stacktrace(ptr noundef %946)
  %948 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %949 = trunc i8 %948 to i1
  br i1 %949, label %950, label %972

950:                                              ; preds = %943
  %951 = load ptr, ptr @stderr, align 8, !tbaa !9
  %952 = call i32 @fileno(ptr noundef %951) #9
  %953 = call i32 @isatty(i32 noundef %952) #9
  %954 = icmp ne i32 %953, 0
  br i1 %954, label %955, label %972

955:                                              ; preds = %950
  %956 = load i32, ptr %19, align 4, !tbaa !5
  %957 = call ptr @__errno_location() #10
  store i32 %956, ptr %957, align 4, !tbaa !5
  %958 = load ptr, ptr @stderr, align 8, !tbaa !9
  %959 = load i32, ptr @test_count, align 4, !tbaa !5
  %960 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %961 = load i32, ptr %960, align 4, !tbaa !5
  %962 = call ptr @s2n_strerror(i32 noundef %961, ptr noundef @.str.8)
  %963 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %964 = load i32, ptr %963, align 4, !tbaa !5
  %965 = call ptr @s2n_strerror_debug(i32 noundef %964, ptr noundef @.str.8)
  %966 = call ptr @__errno_location() #10
  %967 = load i32, ptr %966, align 4, !tbaa !5
  %968 = call ptr @strerror(i32 noundef %967) #9
  %969 = call ptr @__errno_location() #10
  %970 = load i32, ptr %969, align 4, !tbaa !5
  %971 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %958, ptr noundef @.str.6, i32 noundef %959, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 57, ptr noundef %962, ptr noundef %965, ptr noundef %968, i32 noundef %970) #9
  br label %989

972:                                              ; preds = %950, %943
  %973 = load i32, ptr %19, align 4, !tbaa !5
  %974 = call ptr @__errno_location() #10
  store i32 %973, ptr %974, align 4, !tbaa !5
  %975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %976 = load i32, ptr @test_count, align 4, !tbaa !5
  %977 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %978 = load i32, ptr %977, align 4, !tbaa !5
  %979 = call ptr @s2n_strerror(i32 noundef %978, ptr noundef @.str.8)
  %980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %981 = load i32, ptr %980, align 4, !tbaa !5
  %982 = call ptr @s2n_strerror_debug(i32 noundef %981, ptr noundef @.str.8)
  %983 = call ptr @__errno_location() #10
  %984 = load i32, ptr %983, align 4, !tbaa !5
  %985 = call ptr @strerror(i32 noundef %984) #9
  %986 = call ptr @__errno_location() #10
  %987 = load i32, ptr %986, align 4, !tbaa !5
  %988 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %975, ptr noundef @.str.9, i32 noundef %976, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 57, ptr noundef %979, ptr noundef %982, ptr noundef %985, i32 noundef %987) #9
  br label %989

989:                                              ; preds = %972, %955
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %990

990:                                              ; preds = %989
  br label %991

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

992:                                              ; No predecessors!
  br label %993

993:                                              ; preds = %992
  br label %994

994:                                              ; preds = %993, %932
  br label %995

995:                                              ; preds = %994
  br label %996

996:                                              ; preds = %995
  br label %997

997:                                              ; preds = %996
  %998 = load i32, ptr @test_count, align 4, !tbaa !5
  %999 = add nsw i32 %998, 1
  store i32 %999, ptr @test_count, align 4, !tbaa !5
  %1000 = load ptr, ptr %6, align 8, !tbaa !9
  %1001 = getelementptr inbounds %struct.s2n_connection, ptr %1000, i32 0, i32 31
  %1002 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1001, i32 0, i32 4
  %1003 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1002, i32 0, i32 2
  %1004 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1003, i32 0, i32 0
  %1005 = load ptr, ptr %1004, align 8, !tbaa !50
  %1006 = icmp eq ptr %1005, null
  br i1 %1006, label %1060, label %1007

1007:                                             ; preds = %997
  br label %1008

1008:                                             ; preds = %1007
  br label %1009

1009:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  %1010 = call ptr @__errno_location() #10
  %1011 = load i32, ptr %1010, align 4, !tbaa !5
  store i32 %1011, ptr %20, align 4, !tbaa !5
  %1012 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1013 = call i32 @s2n_print_stacktrace(ptr noundef %1012)
  %1014 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1015 = trunc i8 %1014 to i1
  br i1 %1015, label %1016, label %1038

1016:                                             ; preds = %1009
  %1017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1018 = call i32 @fileno(ptr noundef %1017) #9
  %1019 = call i32 @isatty(i32 noundef %1018) #9
  %1020 = icmp ne i32 %1019, 0
  br i1 %1020, label %1021, label %1038

1021:                                             ; preds = %1016
  %1022 = load i32, ptr %20, align 4, !tbaa !5
  %1023 = call ptr @__errno_location() #10
  store i32 %1022, ptr %1023, align 4, !tbaa !5
  %1024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1025 = load i32, ptr @test_count, align 4, !tbaa !5
  %1026 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1027 = load i32, ptr %1026, align 4, !tbaa !5
  %1028 = call ptr @s2n_strerror(i32 noundef %1027, ptr noundef @.str.8)
  %1029 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1030 = load i32, ptr %1029, align 4, !tbaa !5
  %1031 = call ptr @s2n_strerror_debug(i32 noundef %1030, ptr noundef @.str.8)
  %1032 = call ptr @__errno_location() #10
  %1033 = load i32, ptr %1032, align 4, !tbaa !5
  %1034 = call ptr @strerror(i32 noundef %1033) #9
  %1035 = call ptr @__errno_location() #10
  %1036 = load i32, ptr %1035, align 4, !tbaa !5
  %1037 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1024, ptr noundef @.str.6, i32 noundef %1025, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 58, ptr noundef %1028, ptr noundef %1031, ptr noundef %1034, i32 noundef %1036) #9
  br label %1055

1038:                                             ; preds = %1016, %1009
  %1039 = load i32, ptr %20, align 4, !tbaa !5
  %1040 = call ptr @__errno_location() #10
  store i32 %1039, ptr %1040, align 4, !tbaa !5
  %1041 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1042 = load i32, ptr @test_count, align 4, !tbaa !5
  %1043 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1044 = load i32, ptr %1043, align 4, !tbaa !5
  %1045 = call ptr @s2n_strerror(i32 noundef %1044, ptr noundef @.str.8)
  %1046 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1047 = load i32, ptr %1046, align 4, !tbaa !5
  %1048 = call ptr @s2n_strerror_debug(i32 noundef %1047, ptr noundef @.str.8)
  %1049 = call ptr @__errno_location() #10
  %1050 = load i32, ptr %1049, align 4, !tbaa !5
  %1051 = call ptr @strerror(i32 noundef %1050) #9
  %1052 = call ptr @__errno_location() #10
  %1053 = load i32, ptr %1052, align 4, !tbaa !5
  %1054 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1041, ptr noundef @.str.9, i32 noundef %1042, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 58, ptr noundef %1045, ptr noundef %1048, ptr noundef %1051, i32 noundef %1053) #9
  br label %1055

1055:                                             ; preds = %1038, %1021
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %1056

1056:                                             ; preds = %1055
  br label %1057

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

1058:                                             ; No predecessors!
  br label %1059

1059:                                             ; preds = %1058
  br label %1060

1060:                                             ; preds = %1059, %997
  br label %1061

1061:                                             ; preds = %1060
  br label %1062

1062:                                             ; preds = %1061
  br label %1063

1063:                                             ; preds = %1062
  %1064 = load i32, ptr @test_count, align 4, !tbaa !5
  %1065 = add nsw i32 %1064, 1
  store i32 %1065, ptr @test_count, align 4, !tbaa !5
  %1066 = load ptr, ptr %6, align 8, !tbaa !9
  %1067 = getelementptr inbounds %struct.s2n_connection, ptr %1066, i32 0, i32 31
  %1068 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1067, i32 0, i32 4
  %1069 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1068, i32 0, i32 1
  %1070 = getelementptr inbounds %struct.s2n_kem_params, ptr %1069, i32 0, i32 0
  %1071 = load ptr, ptr %1070, align 8, !tbaa !51
  %1072 = icmp eq ptr %1071, null
  br i1 %1072, label %1126, label %1073

1073:                                             ; preds = %1063
  br label %1074

1074:                                             ; preds = %1073
  br label %1075

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

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

1087:                                             ; preds = %1082
  %1088 = load i32, ptr %21, align 4, !tbaa !5
  %1089 = call ptr @__errno_location() #10
  store i32 %1088, ptr %1089, align 4, !tbaa !5
  %1090 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1091 = load i32, ptr @test_count, align 4, !tbaa !5
  %1092 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1093 = load i32, ptr %1092, align 4, !tbaa !5
  %1094 = call ptr @s2n_strerror(i32 noundef %1093, ptr noundef @.str.8)
  %1095 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1096 = load i32, ptr %1095, align 4, !tbaa !5
  %1097 = call ptr @s2n_strerror_debug(i32 noundef %1096, ptr noundef @.str.8)
  %1098 = call ptr @__errno_location() #10
  %1099 = load i32, ptr %1098, align 4, !tbaa !5
  %1100 = call ptr @strerror(i32 noundef %1099) #9
  %1101 = call ptr @__errno_location() #10
  %1102 = load i32, ptr %1101, align 4, !tbaa !5
  %1103 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1090, ptr noundef @.str.6, i32 noundef %1091, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 59, ptr noundef %1094, ptr noundef %1097, ptr noundef %1100, i32 noundef %1102) #9
  br label %1121

1104:                                             ; preds = %1082, %1075
  %1105 = load i32, ptr %21, align 4, !tbaa !5
  %1106 = call ptr @__errno_location() #10
  store i32 %1105, ptr %1106, align 4, !tbaa !5
  %1107 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1108 = load i32, ptr @test_count, align 4, !tbaa !5
  %1109 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1110 = load i32, ptr %1109, align 4, !tbaa !5
  %1111 = call ptr @s2n_strerror(i32 noundef %1110, ptr noundef @.str.8)
  %1112 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1113 = load i32, ptr %1112, align 4, !tbaa !5
  %1114 = call ptr @s2n_strerror_debug(i32 noundef %1113, ptr noundef @.str.8)
  %1115 = call ptr @__errno_location() #10
  %1116 = load i32, ptr %1115, align 4, !tbaa !5
  %1117 = call ptr @strerror(i32 noundef %1116) #9
  %1118 = call ptr @__errno_location() #10
  %1119 = load i32, ptr %1118, align 4, !tbaa !5
  %1120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1107, ptr noundef @.str.9, i32 noundef %1108, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 59, ptr noundef %1111, ptr noundef %1114, ptr noundef %1117, i32 noundef %1119) #9
  br label %1121

1121:                                             ; preds = %1104, %1087
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %1122

1122:                                             ; preds = %1121
  br label %1123

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

1124:                                             ; No predecessors!
  br label %1125

1125:                                             ; preds = %1124
  br label %1126

1126:                                             ; preds = %1125, %1063
  br label %1127

1127:                                             ; preds = %1126
  br label %1128

1128:                                             ; preds = %1127
  br label %1129

1129:                                             ; preds = %1128
  %1130 = load i32, ptr @test_count, align 4, !tbaa !5
  %1131 = add nsw i32 %1130, 1
  store i32 %1131, ptr @test_count, align 4, !tbaa !5
  %1132 = load ptr, ptr %6, align 8, !tbaa !9
  %1133 = getelementptr inbounds %struct.s2n_connection, ptr %1132, i32 0, i32 31
  %1134 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1133, i32 0, i32 1
  %1135 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1134, i32 0, i32 0
  %1136 = load ptr, ptr %1135, align 8, !tbaa !52
  %1137 = icmp eq ptr %1136, null
  br i1 %1137, label %1191, label %1138

1138:                                             ; preds = %1129
  br label %1139

1139:                                             ; preds = %1138
  br label %1140

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

1147:                                             ; preds = %1140
  %1148 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1149 = call i32 @fileno(ptr noundef %1148) #9
  %1150 = call i32 @isatty(i32 noundef %1149) #9
  %1151 = icmp ne i32 %1150, 0
  br i1 %1151, label %1152, label %1169

1152:                                             ; preds = %1147
  %1153 = load i32, ptr %22, align 4, !tbaa !5
  %1154 = call ptr @__errno_location() #10
  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.8)
  %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.8)
  %1163 = call ptr @__errno_location() #10
  %1164 = load i32, ptr %1163, align 4, !tbaa !5
  %1165 = call ptr @strerror(i32 noundef %1164) #9
  %1166 = call ptr @__errno_location() #10
  %1167 = load i32, ptr %1166, align 4, !tbaa !5
  %1168 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1155, ptr noundef @.str.6, i32 noundef %1156, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 60, ptr noundef %1159, ptr noundef %1162, ptr noundef %1165, i32 noundef %1167) #9
  br label %1186

1169:                                             ; preds = %1147, %1140
  %1170 = load i32, ptr %22, align 4, !tbaa !5
  %1171 = call ptr @__errno_location() #10
  store i32 %1170, ptr %1171, align 4, !tbaa !5
  %1172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1173 = load i32, ptr @test_count, align 4, !tbaa !5
  %1174 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1175 = load i32, ptr %1174, align 4, !tbaa !5
  %1176 = call ptr @s2n_strerror(i32 noundef %1175, ptr noundef @.str.8)
  %1177 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1178 = load i32, ptr %1177, align 4, !tbaa !5
  %1179 = call ptr @s2n_strerror_debug(i32 noundef %1178, ptr noundef @.str.8)
  %1180 = call ptr @__errno_location() #10
  %1181 = load i32, ptr %1180, align 4, !tbaa !5
  %1182 = call ptr @strerror(i32 noundef %1181) #9
  %1183 = call ptr @__errno_location() #10
  %1184 = load i32, ptr %1183, align 4, !tbaa !5
  %1185 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1172, ptr noundef @.str.9, i32 noundef %1173, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 60, ptr noundef %1176, ptr noundef %1179, ptr noundef %1182, i32 noundef %1184) #9
  br label %1186

1186:                                             ; preds = %1169, %1152
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %1187

1187:                                             ; preds = %1186
  br label %1188

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

1189:                                             ; No predecessors!
  br label %1190

1190:                                             ; preds = %1189
  br label %1191

1191:                                             ; preds = %1190, %1129
  br label %1192

1192:                                             ; preds = %1191
  br label %1193

1193:                                             ; preds = %1192
  br label %1194

1194:                                             ; preds = %1193
  %1195 = load i32, ptr @test_count, align 4, !tbaa !5
  %1196 = add nsw i32 %1195, 1
  store i32 %1196, ptr @test_count, align 4, !tbaa !5
  %1197 = load ptr, ptr %6, align 8, !tbaa !9
  %1198 = call i32 @s2n_choose_supported_group(ptr noundef %1197)
  %1199 = icmp eq i32 %1198, -1
  br i1 %1199, label %1200, label %1253

1200:                                             ; preds = %1194
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %1203 = call ptr @__errno_location() #10
  %1204 = load i32, ptr %1203, align 4, !tbaa !5
  store i32 %1204, ptr %23, align 4, !tbaa !5
  %1205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1206 = call i32 @s2n_print_stacktrace(ptr noundef %1205)
  %1207 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1208 = trunc i8 %1207 to i1
  br i1 %1208, label %1209, label %1231

1209:                                             ; preds = %1202
  %1210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1211 = call i32 @fileno(ptr noundef %1210) #9
  %1212 = call i32 @isatty(i32 noundef %1211) #9
  %1213 = icmp ne i32 %1212, 0
  br i1 %1213, label %1214, label %1231

1214:                                             ; preds = %1209
  %1215 = load i32, ptr %23, align 4, !tbaa !5
  %1216 = call ptr @__errno_location() #10
  store i32 %1215, ptr %1216, align 4, !tbaa !5
  %1217 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1218 = load i32, ptr @test_count, align 4, !tbaa !5
  %1219 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1220 = load i32, ptr %1219, align 4, !tbaa !5
  %1221 = call ptr @s2n_strerror(i32 noundef %1220, ptr noundef @.str.8)
  %1222 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1223 = load i32, ptr %1222, align 4, !tbaa !5
  %1224 = call ptr @s2n_strerror_debug(i32 noundef %1223, ptr noundef @.str.8)
  %1225 = call ptr @__errno_location() #10
  %1226 = load i32, ptr %1225, align 4, !tbaa !5
  %1227 = call ptr @strerror(i32 noundef %1226) #9
  %1228 = call ptr @__errno_location() #10
  %1229 = load i32, ptr %1228, align 4, !tbaa !5
  %1230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1217, ptr noundef @.str.6, i32 noundef %1218, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 62, ptr noundef %1221, ptr noundef %1224, ptr noundef %1227, i32 noundef %1229) #9
  br label %1248

1231:                                             ; preds = %1209, %1202
  %1232 = load i32, ptr %23, align 4, !tbaa !5
  %1233 = call ptr @__errno_location() #10
  store i32 %1232, ptr %1233, align 4, !tbaa !5
  %1234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1235 = load i32, ptr @test_count, align 4, !tbaa !5
  %1236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1237 = load i32, ptr %1236, align 4, !tbaa !5
  %1238 = call ptr @s2n_strerror(i32 noundef %1237, ptr noundef @.str.8)
  %1239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1240 = load i32, ptr %1239, align 4, !tbaa !5
  %1241 = call ptr @s2n_strerror_debug(i32 noundef %1240, ptr noundef @.str.8)
  %1242 = call ptr @__errno_location() #10
  %1243 = load i32, ptr %1242, align 4, !tbaa !5
  %1244 = call ptr @strerror(i32 noundef %1243) #9
  %1245 = call ptr @__errno_location() #10
  %1246 = load i32, ptr %1245, align 4, !tbaa !5
  %1247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1234, ptr noundef @.str.9, i32 noundef %1235, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 62, ptr noundef %1238, ptr noundef %1241, ptr noundef %1244, i32 noundef %1246) #9
  br label %1248

1248:                                             ; preds = %1231, %1214
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %1249

1249:                                             ; preds = %1248
  br label %1250

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

1251:                                             ; No predecessors!
  br label %1252

1252:                                             ; preds = %1251
  br label %1253

1253:                                             ; preds = %1252, %1194
  br label %1254

1254:                                             ; preds = %1253
  br label %1255

1255:                                             ; preds = %1254
  br label %1256

1256:                                             ; preds = %1255
  %1257 = load i32, ptr @test_count, align 4, !tbaa !5
  %1258 = add nsw i32 %1257, 1
  store i32 %1258, ptr @test_count, align 4, !tbaa !5
  %1259 = load ptr, ptr %6, align 8, !tbaa !9
  %1260 = getelementptr inbounds %struct.s2n_connection, ptr %1259, i32 0, i32 31
  %1261 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1260, i32 0, i32 4
  %1262 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1261, i32 0, i32 0
  %1263 = load ptr, ptr %1262, align 8, !tbaa !24
  %1264 = icmp eq ptr %1263, null
  br i1 %1264, label %1318, label %1265

1265:                                             ; preds = %1256
  br label %1266

1266:                                             ; preds = %1265
  br label %1267

1267:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %1268 = call ptr @__errno_location() #10
  %1269 = load i32, ptr %1268, align 4, !tbaa !5
  store i32 %1269, ptr %24, align 4, !tbaa !5
  %1270 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1271 = call i32 @s2n_print_stacktrace(ptr noundef %1270)
  %1272 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1273 = trunc i8 %1272 to i1
  br i1 %1273, label %1274, label %1296

1274:                                             ; preds = %1267
  %1275 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1276 = call i32 @fileno(ptr noundef %1275) #9
  %1277 = call i32 @isatty(i32 noundef %1276) #9
  %1278 = icmp ne i32 %1277, 0
  br i1 %1278, label %1279, label %1296

1279:                                             ; preds = %1274
  %1280 = load i32, ptr %24, align 4, !tbaa !5
  %1281 = call ptr @__errno_location() #10
  store i32 %1280, ptr %1281, align 4, !tbaa !5
  %1282 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1283 = load i32, ptr @test_count, align 4, !tbaa !5
  %1284 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1285 = load i32, ptr %1284, align 4, !tbaa !5
  %1286 = call ptr @s2n_strerror(i32 noundef %1285, ptr noundef @.str.8)
  %1287 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1288 = load i32, ptr %1287, align 4, !tbaa !5
  %1289 = call ptr @s2n_strerror_debug(i32 noundef %1288, ptr noundef @.str.8)
  %1290 = call ptr @__errno_location() #10
  %1291 = load i32, ptr %1290, align 4, !tbaa !5
  %1292 = call ptr @strerror(i32 noundef %1291) #9
  %1293 = call ptr @__errno_location() #10
  %1294 = load i32, ptr %1293, align 4, !tbaa !5
  %1295 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1282, ptr noundef @.str.6, i32 noundef %1283, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 64, ptr noundef %1286, ptr noundef %1289, ptr noundef %1292, i32 noundef %1294) #9
  br label %1313

1296:                                             ; preds = %1274, %1267
  %1297 = load i32, ptr %24, align 4, !tbaa !5
  %1298 = call ptr @__errno_location() #10
  store i32 %1297, ptr %1298, align 4, !tbaa !5
  %1299 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1300 = load i32, ptr @test_count, align 4, !tbaa !5
  %1301 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1302 = load i32, ptr %1301, align 4, !tbaa !5
  %1303 = call ptr @s2n_strerror(i32 noundef %1302, ptr noundef @.str.8)
  %1304 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1305 = load i32, ptr %1304, align 4, !tbaa !5
  %1306 = call ptr @s2n_strerror_debug(i32 noundef %1305, ptr noundef @.str.8)
  %1307 = call ptr @__errno_location() #10
  %1308 = load i32, ptr %1307, align 4, !tbaa !5
  %1309 = call ptr @strerror(i32 noundef %1308) #9
  %1310 = call ptr @__errno_location() #10
  %1311 = load i32, ptr %1310, align 4, !tbaa !5
  %1312 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1299, ptr noundef @.str.9, i32 noundef %1300, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 64, ptr noundef %1303, ptr noundef %1306, ptr noundef %1309, i32 noundef %1311) #9
  br label %1313

1313:                                             ; preds = %1296, %1279
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %1314

1314:                                             ; preds = %1313
  br label %1315

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

1316:                                             ; No predecessors!
  br label %1317

1317:                                             ; preds = %1316
  br label %1318

1318:                                             ; preds = %1317, %1256
  br label %1319

1319:                                             ; preds = %1318
  br label %1320

1320:                                             ; preds = %1319
  br label %1321

1321:                                             ; preds = %1320
  %1322 = load i32, ptr @test_count, align 4, !tbaa !5
  %1323 = add nsw i32 %1322, 1
  store i32 %1323, ptr @test_count, align 4, !tbaa !5
  %1324 = load ptr, ptr %6, align 8, !tbaa !9
  %1325 = getelementptr inbounds %struct.s2n_connection, ptr %1324, i32 0, i32 31
  %1326 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1325, i32 0, i32 4
  %1327 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1326, i32 0, i32 2
  %1328 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1327, i32 0, i32 0
  %1329 = load ptr, ptr %1328, align 8, !tbaa !50
  %1330 = icmp eq ptr %1329, null
  br i1 %1330, label %1384, label %1331

1331:                                             ; preds = %1321
  br label %1332

1332:                                             ; preds = %1331
  br label %1333

1333:                                             ; preds = %1332
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %1334 = call ptr @__errno_location() #10
  %1335 = load i32, ptr %1334, align 4, !tbaa !5
  store i32 %1335, ptr %25, align 4, !tbaa !5
  %1336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1337 = call i32 @s2n_print_stacktrace(ptr noundef %1336)
  %1338 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1339 = trunc i8 %1338 to i1
  br i1 %1339, label %1340, label %1362

1340:                                             ; preds = %1333
  %1341 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1342 = call i32 @fileno(ptr noundef %1341) #9
  %1343 = call i32 @isatty(i32 noundef %1342) #9
  %1344 = icmp ne i32 %1343, 0
  br i1 %1344, label %1345, label %1362

1345:                                             ; preds = %1340
  %1346 = load i32, ptr %25, align 4, !tbaa !5
  %1347 = call ptr @__errno_location() #10
  store i32 %1346, ptr %1347, align 4, !tbaa !5
  %1348 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1349 = load i32, ptr @test_count, align 4, !tbaa !5
  %1350 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1351 = load i32, ptr %1350, align 4, !tbaa !5
  %1352 = call ptr @s2n_strerror(i32 noundef %1351, ptr noundef @.str.8)
  %1353 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1354 = load i32, ptr %1353, align 4, !tbaa !5
  %1355 = call ptr @s2n_strerror_debug(i32 noundef %1354, ptr noundef @.str.8)
  %1356 = call ptr @__errno_location() #10
  %1357 = load i32, ptr %1356, align 4, !tbaa !5
  %1358 = call ptr @strerror(i32 noundef %1357) #9
  %1359 = call ptr @__errno_location() #10
  %1360 = load i32, ptr %1359, align 4, !tbaa !5
  %1361 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1348, ptr noundef @.str.6, i32 noundef %1349, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 65, ptr noundef %1352, ptr noundef %1355, ptr noundef %1358, i32 noundef %1360) #9
  br label %1379

1362:                                             ; preds = %1340, %1333
  %1363 = load i32, ptr %25, align 4, !tbaa !5
  %1364 = call ptr @__errno_location() #10
  store i32 %1363, ptr %1364, align 4, !tbaa !5
  %1365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1366 = load i32, ptr @test_count, align 4, !tbaa !5
  %1367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1368 = load i32, ptr %1367, align 4, !tbaa !5
  %1369 = call ptr @s2n_strerror(i32 noundef %1368, ptr noundef @.str.8)
  %1370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1371 = load i32, ptr %1370, align 4, !tbaa !5
  %1372 = call ptr @s2n_strerror_debug(i32 noundef %1371, ptr noundef @.str.8)
  %1373 = call ptr @__errno_location() #10
  %1374 = load i32, ptr %1373, align 4, !tbaa !5
  %1375 = call ptr @strerror(i32 noundef %1374) #9
  %1376 = call ptr @__errno_location() #10
  %1377 = load i32, ptr %1376, align 4, !tbaa !5
  %1378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1365, ptr noundef @.str.9, i32 noundef %1366, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 65, ptr noundef %1369, ptr noundef %1372, ptr noundef %1375, i32 noundef %1377) #9
  br label %1379

1379:                                             ; preds = %1362, %1345
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %1380

1380:                                             ; preds = %1379
  br label %1381

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

1382:                                             ; No predecessors!
  br label %1383

1383:                                             ; preds = %1382
  br label %1384

1384:                                             ; preds = %1383, %1321
  br label %1385

1385:                                             ; preds = %1384
  br label %1386

1386:                                             ; preds = %1385
  br label %1387

1387:                                             ; preds = %1386
  %1388 = load i32, ptr @test_count, align 4, !tbaa !5
  %1389 = add nsw i32 %1388, 1
  store i32 %1389, ptr @test_count, align 4, !tbaa !5
  %1390 = load ptr, ptr %6, align 8, !tbaa !9
  %1391 = getelementptr inbounds %struct.s2n_connection, ptr %1390, i32 0, i32 31
  %1392 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1391, i32 0, i32 4
  %1393 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1392, i32 0, i32 1
  %1394 = getelementptr inbounds %struct.s2n_kem_params, ptr %1393, i32 0, i32 0
  %1395 = load ptr, ptr %1394, align 8, !tbaa !51
  %1396 = icmp eq ptr %1395, null
  br i1 %1396, label %1450, label %1397

1397:                                             ; preds = %1387
  br label %1398

1398:                                             ; preds = %1397
  br label %1399

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

1406:                                             ; preds = %1399
  %1407 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1408 = call i32 @fileno(ptr noundef %1407) #9
  %1409 = call i32 @isatty(i32 noundef %1408) #9
  %1410 = icmp ne i32 %1409, 0
  br i1 %1410, label %1411, label %1428

1411:                                             ; preds = %1406
  %1412 = load i32, ptr %26, align 4, !tbaa !5
  %1413 = call ptr @__errno_location() #10
  store i32 %1412, ptr %1413, align 4, !tbaa !5
  %1414 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1415 = load i32, ptr @test_count, align 4, !tbaa !5
  %1416 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1417 = load i32, ptr %1416, align 4, !tbaa !5
  %1418 = call ptr @s2n_strerror(i32 noundef %1417, ptr noundef @.str.8)
  %1419 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1420 = load i32, ptr %1419, align 4, !tbaa !5
  %1421 = call ptr @s2n_strerror_debug(i32 noundef %1420, ptr noundef @.str.8)
  %1422 = call ptr @__errno_location() #10
  %1423 = load i32, ptr %1422, align 4, !tbaa !5
  %1424 = call ptr @strerror(i32 noundef %1423) #9
  %1425 = call ptr @__errno_location() #10
  %1426 = load i32, ptr %1425, align 4, !tbaa !5
  %1427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1414, ptr noundef @.str.6, i32 noundef %1415, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 66, ptr noundef %1418, ptr noundef %1421, ptr noundef %1424, i32 noundef %1426) #9
  br label %1445

1428:                                             ; preds = %1406, %1399
  %1429 = load i32, ptr %26, align 4, !tbaa !5
  %1430 = call ptr @__errno_location() #10
  store i32 %1429, ptr %1430, align 4, !tbaa !5
  %1431 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1432 = load i32, ptr @test_count, align 4, !tbaa !5
  %1433 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1434 = load i32, ptr %1433, align 4, !tbaa !5
  %1435 = call ptr @s2n_strerror(i32 noundef %1434, ptr noundef @.str.8)
  %1436 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1437 = load i32, ptr %1436, align 4, !tbaa !5
  %1438 = call ptr @s2n_strerror_debug(i32 noundef %1437, ptr noundef @.str.8)
  %1439 = call ptr @__errno_location() #10
  %1440 = load i32, ptr %1439, align 4, !tbaa !5
  %1441 = call ptr @strerror(i32 noundef %1440) #9
  %1442 = call ptr @__errno_location() #10
  %1443 = load i32, ptr %1442, align 4, !tbaa !5
  %1444 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1431, ptr noundef @.str.9, i32 noundef %1432, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 66, ptr noundef %1435, ptr noundef %1438, ptr noundef %1441, i32 noundef %1443) #9
  br label %1445

1445:                                             ; preds = %1428, %1411
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %1446

1446:                                             ; preds = %1445
  br label %1447

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

1448:                                             ; No predecessors!
  br label %1449

1449:                                             ; preds = %1448
  br label %1450

1450:                                             ; preds = %1449, %1387
  br label %1451

1451:                                             ; preds = %1450
  br label %1452

1452:                                             ; preds = %1451
  br label %1453

1453:                                             ; preds = %1452
  %1454 = load i32, ptr @test_count, align 4, !tbaa !5
  %1455 = add nsw i32 %1454, 1
  store i32 %1455, ptr @test_count, align 4, !tbaa !5
  %1456 = load ptr, ptr %6, align 8, !tbaa !9
  %1457 = getelementptr inbounds %struct.s2n_connection, ptr %1456, i32 0, i32 31
  %1458 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1457, i32 0, i32 1
  %1459 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %1458, i32 0, i32 0
  %1460 = load ptr, ptr %1459, align 8, !tbaa !52
  %1461 = icmp eq ptr %1460, null
  br i1 %1461, label %1515, label %1462

1462:                                             ; preds = %1453
  br label %1463

1463:                                             ; preds = %1462
  br label %1464

1464:                                             ; preds = %1463
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %1465 = call ptr @__errno_location() #10
  %1466 = load i32, ptr %1465, align 4, !tbaa !5
  store i32 %1466, ptr %27, align 4, !tbaa !5
  %1467 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1468 = call i32 @s2n_print_stacktrace(ptr noundef %1467)
  %1469 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1470 = trunc i8 %1469 to i1
  br i1 %1470, label %1471, label %1493

1471:                                             ; preds = %1464
  %1472 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1473 = call i32 @fileno(ptr noundef %1472) #9
  %1474 = call i32 @isatty(i32 noundef %1473) #9
  %1475 = icmp ne i32 %1474, 0
  br i1 %1475, label %1476, label %1493

1476:                                             ; preds = %1471
  %1477 = load i32, ptr %27, align 4, !tbaa !5
  %1478 = call ptr @__errno_location() #10
  store i32 %1477, ptr %1478, align 4, !tbaa !5
  %1479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1480 = load i32, ptr @test_count, align 4, !tbaa !5
  %1481 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1482 = load i32, ptr %1481, align 4, !tbaa !5
  %1483 = call ptr @s2n_strerror(i32 noundef %1482, ptr noundef @.str.8)
  %1484 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1485 = load i32, ptr %1484, align 4, !tbaa !5
  %1486 = call ptr @s2n_strerror_debug(i32 noundef %1485, ptr noundef @.str.8)
  %1487 = call ptr @__errno_location() #10
  %1488 = load i32, ptr %1487, align 4, !tbaa !5
  %1489 = call ptr @strerror(i32 noundef %1488) #9
  %1490 = call ptr @__errno_location() #10
  %1491 = load i32, ptr %1490, align 4, !tbaa !5
  %1492 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1479, ptr noundef @.str.6, i32 noundef %1480, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 67, ptr noundef %1483, ptr noundef %1486, ptr noundef %1489, i32 noundef %1491) #9
  br label %1510

1493:                                             ; preds = %1471, %1464
  %1494 = load i32, ptr %27, align 4, !tbaa !5
  %1495 = call ptr @__errno_location() #10
  store i32 %1494, ptr %1495, align 4, !tbaa !5
  %1496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1497 = load i32, ptr @test_count, align 4, !tbaa !5
  %1498 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1499 = load i32, ptr %1498, align 4, !tbaa !5
  %1500 = call ptr @s2n_strerror(i32 noundef %1499, ptr noundef @.str.8)
  %1501 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1502 = load i32, ptr %1501, align 4, !tbaa !5
  %1503 = call ptr @s2n_strerror_debug(i32 noundef %1502, ptr noundef @.str.8)
  %1504 = call ptr @__errno_location() #10
  %1505 = load i32, ptr %1504, align 4, !tbaa !5
  %1506 = call ptr @strerror(i32 noundef %1505) #9
  %1507 = call ptr @__errno_location() #10
  %1508 = load i32, ptr %1507, align 4, !tbaa !5
  %1509 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1496, ptr noundef @.str.9, i32 noundef %1497, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 67, ptr noundef %1500, ptr noundef %1503, ptr noundef %1506, i32 noundef %1508) #9
  br label %1510

1510:                                             ; preds = %1493, %1476
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %1511

1511:                                             ; preds = %1510
  br label %1512

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

1513:                                             ; No predecessors!
  br label %1514

1514:                                             ; preds = %1513
  br label %1515

1515:                                             ; preds = %1514, %1453
  br label %1516

1516:                                             ; preds = %1515
  br label %1517

1517:                                             ; preds = %1516
  br label %1518

1518:                                             ; preds = %1517
  %1519 = load i32, ptr @test_count, align 4, !tbaa !5
  %1520 = add nsw i32 %1519, 1
  store i32 %1520, ptr @test_count, align 4, !tbaa !5
  %1521 = load ptr, ptr %6, align 8, !tbaa !9
  %1522 = call i32 @s2n_connection_free(ptr noundef %1521)
  %1523 = icmp eq i32 %1522, -1
  br i1 %1523, label %1524, label %1577

1524:                                             ; preds = %1518
  br label %1525

1525:                                             ; preds = %1524
  br label %1526

1526:                                             ; preds = %1525
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  %1527 = call ptr @__errno_location() #10
  %1528 = load i32, ptr %1527, align 4, !tbaa !5
  store i32 %1528, ptr %28, align 4, !tbaa !5
  %1529 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1530 = call i32 @s2n_print_stacktrace(ptr noundef %1529)
  %1531 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1532 = trunc i8 %1531 to i1
  br i1 %1532, label %1533, label %1555

1533:                                             ; preds = %1526
  %1534 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1535 = call i32 @fileno(ptr noundef %1534) #9
  %1536 = call i32 @isatty(i32 noundef %1535) #9
  %1537 = icmp ne i32 %1536, 0
  br i1 %1537, label %1538, label %1555

1538:                                             ; preds = %1533
  %1539 = load i32, ptr %28, align 4, !tbaa !5
  %1540 = call ptr @__errno_location() #10
  store i32 %1539, ptr %1540, align 4, !tbaa !5
  %1541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1542 = load i32, ptr @test_count, align 4, !tbaa !5
  %1543 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1544 = load i32, ptr %1543, align 4, !tbaa !5
  %1545 = call ptr @s2n_strerror(i32 noundef %1544, ptr noundef @.str.8)
  %1546 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1547 = load i32, ptr %1546, align 4, !tbaa !5
  %1548 = call ptr @s2n_strerror_debug(i32 noundef %1547, ptr noundef @.str.8)
  %1549 = call ptr @__errno_location() #10
  %1550 = load i32, ptr %1549, align 4, !tbaa !5
  %1551 = call ptr @strerror(i32 noundef %1550) #9
  %1552 = call ptr @__errno_location() #10
  %1553 = load i32, ptr %1552, align 4, !tbaa !5
  %1554 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1541, ptr noundef @.str.6, i32 noundef %1542, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 68, ptr noundef %1545, ptr noundef %1548, ptr noundef %1551, i32 noundef %1553) #9
  br label %1572

1555:                                             ; preds = %1533, %1526
  %1556 = load i32, ptr %28, align 4, !tbaa !5
  %1557 = call ptr @__errno_location() #10
  store i32 %1556, ptr %1557, align 4, !tbaa !5
  %1558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1559 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1561, ptr noundef @.str.8)
  %1563 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1564 = load i32, ptr %1563, align 4, !tbaa !5
  %1565 = call ptr @s2n_strerror_debug(i32 noundef %1564, ptr noundef @.str.8)
  %1566 = call ptr @__errno_location() #10
  %1567 = load i32, ptr %1566, align 4, !tbaa !5
  %1568 = call ptr @strerror(i32 noundef %1567) #9
  %1569 = call ptr @__errno_location() #10
  %1570 = load i32, ptr %1569, align 4, !tbaa !5
  %1571 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1558, ptr noundef @.str.9, i32 noundef %1559, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 68, ptr noundef %1562, ptr noundef %1565, ptr noundef %1568, i32 noundef %1570) #9
  br label %1572

1572:                                             ; preds = %1555, %1538
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  br label %1573

1573:                                             ; preds = %1572
  br label %1574

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

1575:                                             ; No predecessors!
  br label %1576

1576:                                             ; preds = %1575
  br label %1577

1577:                                             ; preds = %1576, %1518
  br label %1578

1578:                                             ; preds = %1577
  br label %1579

1579:                                             ; preds = %1578
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  store ptr null, ptr %29, align 8, !tbaa !9
  br label %1580

1580:                                             ; preds = %1579
  %1581 = load i32, ptr @test_count, align 4, !tbaa !5
  %1582 = add nsw i32 %1581, 1
  store i32 %1582, ptr @test_count, align 4, !tbaa !5
  %1583 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %1583, ptr %29, align 8, !tbaa !9
  %1584 = icmp eq ptr %1583, null
  br i1 %1584, label %1585, label %1638

1585:                                             ; preds = %1580
  br label %1586

1586:                                             ; preds = %1585
  br label %1587

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

1594:                                             ; preds = %1587
  %1595 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1596 = call i32 @fileno(ptr noundef %1595) #9
  %1597 = call i32 @isatty(i32 noundef %1596) #9
  %1598 = icmp ne i32 %1597, 0
  br i1 %1598, label %1599, label %1616

1599:                                             ; preds = %1594
  %1600 = load i32, ptr %30, align 4, !tbaa !5
  %1601 = call ptr @__errno_location() #10
  store i32 %1600, ptr %1601, align 4, !tbaa !5
  %1602 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1603 = load i32, ptr @test_count, align 4, !tbaa !5
  %1604 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1605 = load i32, ptr %1604, align 4, !tbaa !5
  %1606 = call ptr @s2n_strerror(i32 noundef %1605, ptr noundef @.str.8)
  %1607 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1608 = load i32, ptr %1607, align 4, !tbaa !5
  %1609 = call ptr @s2n_strerror_debug(i32 noundef %1608, ptr noundef @.str.8)
  %1610 = call ptr @__errno_location() #10
  %1611 = load i32, ptr %1610, align 4, !tbaa !5
  %1612 = call ptr @strerror(i32 noundef %1611) #9
  %1613 = call ptr @__errno_location() #10
  %1614 = load i32, ptr %1613, align 4, !tbaa !5
  %1615 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1602, ptr noundef @.str.6, i32 noundef %1603, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 75, ptr noundef %1606, ptr noundef %1609, ptr noundef %1612, i32 noundef %1614) #9
  br label %1633

1616:                                             ; preds = %1594, %1587
  %1617 = load i32, ptr %30, align 4, !tbaa !5
  %1618 = call ptr @__errno_location() #10
  store i32 %1617, ptr %1618, align 4, !tbaa !5
  %1619 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1620 = load i32, ptr @test_count, align 4, !tbaa !5
  %1621 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1622 = load i32, ptr %1621, align 4, !tbaa !5
  %1623 = call ptr @s2n_strerror(i32 noundef %1622, ptr noundef @.str.8)
  %1624 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1625 = load i32, ptr %1624, align 4, !tbaa !5
  %1626 = call ptr @s2n_strerror_debug(i32 noundef %1625, ptr noundef @.str.8)
  %1627 = call ptr @__errno_location() #10
  %1628 = load i32, ptr %1627, align 4, !tbaa !5
  %1629 = call ptr @strerror(i32 noundef %1628) #9
  %1630 = call ptr @__errno_location() #10
  %1631 = load i32, ptr %1630, align 4, !tbaa !5
  %1632 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1619, ptr noundef @.str.9, i32 noundef %1620, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 75, ptr noundef %1623, ptr noundef %1626, ptr noundef %1629, i32 noundef %1631) #9
  br label %1633

1633:                                             ; preds = %1616, %1599
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  br label %1634

1634:                                             ; preds = %1633
  br label %1635

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

1636:                                             ; No predecessors!
  br label %1637

1637:                                             ; preds = %1636
  br label %1638

1638:                                             ; preds = %1637, %1580
  br label %1639

1639:                                             ; preds = %1638
  br label %1640

1640:                                             ; preds = %1639
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  store ptr null, ptr %31, align 8, !tbaa !9
  br label %1641

1641:                                             ; preds = %1640
  %1642 = load i32, ptr @test_count, align 4, !tbaa !5
  %1643 = add nsw i32 %1642, 1
  store i32 %1643, ptr @test_count, align 4, !tbaa !5
  %1644 = load ptr, ptr %29, align 8, !tbaa !9
  %1645 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %1644, ptr noundef %31)
  %1646 = icmp eq i32 %1645, -1
  br i1 %1646, label %1647, label %1700

1647:                                             ; preds = %1641
  br label %1648

1648:                                             ; preds = %1647
  br label %1649

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

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

1661:                                             ; preds = %1656
  %1662 = load i32, ptr %32, align 4, !tbaa !5
  %1663 = call ptr @__errno_location() #10
  store i32 %1662, ptr %1663, align 4, !tbaa !5
  %1664 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1665 = load i32, ptr @test_count, align 4, !tbaa !5
  %1666 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1667 = load i32, ptr %1666, align 4, !tbaa !5
  %1668 = call ptr @s2n_strerror(i32 noundef %1667, ptr noundef @.str.8)
  %1669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1670 = load i32, ptr %1669, align 4, !tbaa !5
  %1671 = call ptr @s2n_strerror_debug(i32 noundef %1670, ptr noundef @.str.8)
  %1672 = call ptr @__errno_location() #10
  %1673 = load i32, ptr %1672, align 4, !tbaa !5
  %1674 = call ptr @strerror(i32 noundef %1673) #9
  %1675 = call ptr @__errno_location() #10
  %1676 = load i32, ptr %1675, align 4, !tbaa !5
  %1677 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1664, ptr noundef @.str.6, i32 noundef %1665, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 78, ptr noundef %1668, ptr noundef %1671, ptr noundef %1674, i32 noundef %1676) #9
  br label %1695

1678:                                             ; preds = %1656, %1649
  %1679 = load i32, ptr %32, align 4, !tbaa !5
  %1680 = call ptr @__errno_location() #10
  store i32 %1679, ptr %1680, align 4, !tbaa !5
  %1681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1682 = load i32, ptr @test_count, align 4, !tbaa !5
  %1683 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1684 = load i32, ptr %1683, align 4, !tbaa !5
  %1685 = call ptr @s2n_strerror(i32 noundef %1684, ptr noundef @.str.8)
  %1686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1687 = load i32, ptr %1686, align 4, !tbaa !5
  %1688 = call ptr @s2n_strerror_debug(i32 noundef %1687, ptr noundef @.str.8)
  %1689 = call ptr @__errno_location() #10
  %1690 = load i32, ptr %1689, align 4, !tbaa !5
  %1691 = call ptr @strerror(i32 noundef %1690) #9
  %1692 = call ptr @__errno_location() #10
  %1693 = load i32, ptr %1692, align 4, !tbaa !5
  %1694 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1681, ptr noundef @.str.9, i32 noundef %1682, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 78, ptr noundef %1685, ptr noundef %1688, ptr noundef %1691, i32 noundef %1693) #9
  br label %1695

1695:                                             ; preds = %1678, %1661
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %1696

1696:                                             ; preds = %1695
  br label %1697

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

1698:                                             ; No predecessors!
  br label %1699

1699:                                             ; preds = %1698
  br label %1700

1700:                                             ; preds = %1699, %1641
  br label %1701

1701:                                             ; preds = %1700
  br label %1702

1702:                                             ; preds = %1701
  br label %1703

1703:                                             ; preds = %1702
  %1704 = load i32, ptr @test_count, align 4, !tbaa !5
  %1705 = add nsw i32 %1704, 1
  store i32 %1705, ptr @test_count, align 4, !tbaa !5
  %1706 = load ptr, ptr %31, align 8, !tbaa !9
  %1707 = icmp eq ptr %1706, null
  br i1 %1707, label %1708, label %1761

1708:                                             ; preds = %1703
  br label %1709

1709:                                             ; preds = %1708
  br label %1710

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

1717:                                             ; preds = %1710
  %1718 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1719 = call i32 @fileno(ptr noundef %1718) #9
  %1720 = call i32 @isatty(i32 noundef %1719) #9
  %1721 = icmp ne i32 %1720, 0
  br i1 %1721, label %1722, label %1739

1722:                                             ; preds = %1717
  %1723 = load i32, ptr %33, align 4, !tbaa !5
  %1724 = call ptr @__errno_location() #10
  store i32 %1723, ptr %1724, align 4, !tbaa !5
  %1725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1726 = load i32, ptr @test_count, align 4, !tbaa !5
  %1727 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1728 = load i32, ptr %1727, align 4, !tbaa !5
  %1729 = call ptr @s2n_strerror(i32 noundef %1728, ptr noundef @.str.8)
  %1730 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1731 = load i32, ptr %1730, align 4, !tbaa !5
  %1732 = call ptr @s2n_strerror_debug(i32 noundef %1731, ptr noundef @.str.8)
  %1733 = call ptr @__errno_location() #10
  %1734 = load i32, ptr %1733, align 4, !tbaa !5
  %1735 = call ptr @strerror(i32 noundef %1734) #9
  %1736 = call ptr @__errno_location() #10
  %1737 = load i32, ptr %1736, align 4, !tbaa !5
  %1738 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1725, ptr noundef @.str.6, i32 noundef %1726, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 79, ptr noundef %1729, ptr noundef %1732, ptr noundef %1735, i32 noundef %1737) #9
  br label %1756

1739:                                             ; preds = %1717, %1710
  %1740 = load i32, ptr %33, align 4, !tbaa !5
  %1741 = call ptr @__errno_location() #10
  store i32 %1740, ptr %1741, align 4, !tbaa !5
  %1742 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1743 = load i32, ptr @test_count, align 4, !tbaa !5
  %1744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1745 = load i32, ptr %1744, align 4, !tbaa !5
  %1746 = call ptr @s2n_strerror(i32 noundef %1745, ptr noundef @.str.8)
  %1747 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1748 = load i32, ptr %1747, align 4, !tbaa !5
  %1749 = call ptr @s2n_strerror_debug(i32 noundef %1748, ptr noundef @.str.8)
  %1750 = call ptr @__errno_location() #10
  %1751 = load i32, ptr %1750, align 4, !tbaa !5
  %1752 = call ptr @strerror(i32 noundef %1751) #9
  %1753 = call ptr @__errno_location() #10
  %1754 = load i32, ptr %1753, align 4, !tbaa !5
  %1755 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1742, ptr noundef @.str.9, i32 noundef %1743, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 79, ptr noundef %1746, ptr noundef %1749, ptr noundef %1752, i32 noundef %1754) #9
  br label %1756

1756:                                             ; preds = %1739, %1722
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %1757

1757:                                             ; preds = %1756
  br label %1758

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

1759:                                             ; No predecessors!
  br label %1760

1760:                                             ; preds = %1759
  br label %1761

1761:                                             ; preds = %1760, %1703
  br label %1762

1762:                                             ; preds = %1761
  br label %1763

1763:                                             ; preds = %1762
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  store ptr null, ptr %34, align 8, !tbaa !9
  br label %1764

1764:                                             ; preds = %1763
  %1765 = load i32, ptr @test_count, align 4, !tbaa !5
  %1766 = add nsw i32 %1765, 1
  store i32 %1766, ptr @test_count, align 4, !tbaa !5
  %1767 = load ptr, ptr %29, align 8, !tbaa !9
  %1768 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %1767, ptr noundef %34)
  %1769 = icmp eq i32 %1768, -1
  br i1 %1769, label %1770, label %1823

1770:                                             ; preds = %1764
  br label %1771

1771:                                             ; preds = %1770
  br label %1772

1772:                                             ; preds = %1771
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  %1773 = call ptr @__errno_location() #10
  %1774 = load i32, ptr %1773, align 4, !tbaa !5
  store i32 %1774, ptr %35, align 4, !tbaa !5
  %1775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1776 = call i32 @s2n_print_stacktrace(ptr noundef %1775)
  %1777 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1778 = trunc i8 %1777 to i1
  br i1 %1778, label %1779, label %1801

1779:                                             ; preds = %1772
  %1780 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1781 = call i32 @fileno(ptr noundef %1780) #9
  %1782 = call i32 @isatty(i32 noundef %1781) #9
  %1783 = icmp ne i32 %1782, 0
  br i1 %1783, label %1784, label %1801

1784:                                             ; preds = %1779
  %1785 = load i32, ptr %35, align 4, !tbaa !5
  %1786 = call ptr @__errno_location() #10
  store i32 %1785, ptr %1786, align 4, !tbaa !5
  %1787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1788 = load i32, ptr @test_count, align 4, !tbaa !5
  %1789 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1790 = load i32, ptr %1789, align 4, !tbaa !5
  %1791 = call ptr @s2n_strerror(i32 noundef %1790, ptr noundef @.str.8)
  %1792 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1793 = load i32, ptr %1792, align 4, !tbaa !5
  %1794 = call ptr @s2n_strerror_debug(i32 noundef %1793, ptr noundef @.str.8)
  %1795 = call ptr @__errno_location() #10
  %1796 = load i32, ptr %1795, align 4, !tbaa !5
  %1797 = call ptr @strerror(i32 noundef %1796) #9
  %1798 = call ptr @__errno_location() #10
  %1799 = load i32, ptr %1798, align 4, !tbaa !5
  %1800 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1787, ptr noundef @.str.6, i32 noundef %1788, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 82, ptr noundef %1791, ptr noundef %1794, ptr noundef %1797, i32 noundef %1799) #9
  br label %1818

1801:                                             ; preds = %1779, %1772
  %1802 = load i32, ptr %35, align 4, !tbaa !5
  %1803 = call ptr @__errno_location() #10
  store i32 %1802, ptr %1803, align 4, !tbaa !5
  %1804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1805 = load i32, ptr @test_count, align 4, !tbaa !5
  %1806 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1807 = load i32, ptr %1806, align 4, !tbaa !5
  %1808 = call ptr @s2n_strerror(i32 noundef %1807, ptr noundef @.str.8)
  %1809 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1810 = load i32, ptr %1809, align 4, !tbaa !5
  %1811 = call ptr @s2n_strerror_debug(i32 noundef %1810, ptr noundef @.str.8)
  %1812 = call ptr @__errno_location() #10
  %1813 = load i32, ptr %1812, align 4, !tbaa !5
  %1814 = call ptr @strerror(i32 noundef %1813) #9
  %1815 = call ptr @__errno_location() #10
  %1816 = load i32, ptr %1815, align 4, !tbaa !5
  %1817 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1804, ptr noundef @.str.9, i32 noundef %1805, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 82, ptr noundef %1808, ptr noundef %1811, ptr noundef %1814, i32 noundef %1816) #9
  br label %1818

1818:                                             ; preds = %1801, %1784
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  br label %1819

1819:                                             ; preds = %1818
  br label %1820

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

1821:                                             ; No predecessors!
  br label %1822

1822:                                             ; preds = %1821
  br label %1823

1823:                                             ; preds = %1822, %1764
  br label %1824

1824:                                             ; preds = %1823
  br label %1825

1825:                                             ; preds = %1824
  br label %1826

1826:                                             ; preds = %1825
  %1827 = load i32, ptr @test_count, align 4, !tbaa !5
  %1828 = add nsw i32 %1827, 1
  store i32 %1828, ptr @test_count, align 4, !tbaa !5
  %1829 = load ptr, ptr %34, align 8, !tbaa !9
  %1830 = icmp eq ptr %1829, null
  br i1 %1830, label %1831, label %1884

1831:                                             ; preds = %1826
  br label %1832

1832:                                             ; preds = %1831
  br label %1833

1833:                                             ; preds = %1832
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  %1834 = call ptr @__errno_location() #10
  %1835 = load i32, ptr %1834, align 4, !tbaa !5
  store i32 %1835, ptr %36, align 4, !tbaa !5
  %1836 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1837 = call i32 @s2n_print_stacktrace(ptr noundef %1836)
  %1838 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1839 = trunc i8 %1838 to i1
  br i1 %1839, label %1840, label %1862

1840:                                             ; preds = %1833
  %1841 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1842 = call i32 @fileno(ptr noundef %1841) #9
  %1843 = call i32 @isatty(i32 noundef %1842) #9
  %1844 = icmp ne i32 %1843, 0
  br i1 %1844, label %1845, label %1862

1845:                                             ; preds = %1840
  %1846 = load i32, ptr %36, align 4, !tbaa !5
  %1847 = call ptr @__errno_location() #10
  store i32 %1846, ptr %1847, align 4, !tbaa !5
  %1848 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1849 = load i32, ptr @test_count, align 4, !tbaa !5
  %1850 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1851 = load i32, ptr %1850, align 4, !tbaa !5
  %1852 = call ptr @s2n_strerror(i32 noundef %1851, ptr noundef @.str.8)
  %1853 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1854 = load i32, ptr %1853, align 4, !tbaa !5
  %1855 = call ptr @s2n_strerror_debug(i32 noundef %1854, ptr noundef @.str.8)
  %1856 = call ptr @__errno_location() #10
  %1857 = load i32, ptr %1856, align 4, !tbaa !5
  %1858 = call ptr @strerror(i32 noundef %1857) #9
  %1859 = call ptr @__errno_location() #10
  %1860 = load i32, ptr %1859, align 4, !tbaa !5
  %1861 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1848, ptr noundef @.str.6, i32 noundef %1849, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 83, ptr noundef %1852, ptr noundef %1855, ptr noundef %1858, i32 noundef %1860) #9
  br label %1879

1862:                                             ; preds = %1840, %1833
  %1863 = load i32, ptr %36, align 4, !tbaa !5
  %1864 = call ptr @__errno_location() #10
  store i32 %1863, ptr %1864, align 4, !tbaa !5
  %1865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1866 = load i32, ptr @test_count, align 4, !tbaa !5
  %1867 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1868 = load i32, ptr %1867, align 4, !tbaa !5
  %1869 = call ptr @s2n_strerror(i32 noundef %1868, ptr noundef @.str.8)
  %1870 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1871 = load i32, ptr %1870, align 4, !tbaa !5
  %1872 = call ptr @s2n_strerror_debug(i32 noundef %1871, ptr noundef @.str.8)
  %1873 = call ptr @__errno_location() #10
  %1874 = load i32, ptr %1873, align 4, !tbaa !5
  %1875 = call ptr @strerror(i32 noundef %1874) #9
  %1876 = call ptr @__errno_location() #10
  %1877 = load i32, ptr %1876, align 4, !tbaa !5
  %1878 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1865, ptr noundef @.str.9, i32 noundef %1866, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 83, ptr noundef %1869, ptr noundef %1872, ptr noundef %1875, i32 noundef %1877) #9
  br label %1879

1879:                                             ; preds = %1862, %1845
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  br label %1880

1880:                                             ; preds = %1879
  br label %1881

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

1882:                                             ; No predecessors!
  br label %1883

1883:                                             ; preds = %1882
  br label %1884

1884:                                             ; preds = %1883, %1826
  br label %1885

1885:                                             ; preds = %1884
  br label %1886

1886:                                             ; preds = %1885
  br label %1887

1887:                                             ; preds = %1886
  %1888 = load i32, ptr @test_count, align 4, !tbaa !5
  %1889 = add nsw i32 %1888, 1
  store i32 %1889, ptr @test_count, align 4, !tbaa !5
  %1890 = load ptr, ptr %34, align 8, !tbaa !9
  %1891 = icmp eq ptr %1890, @kem_preferences_null
  br i1 %1891, label %1945, label %1892

1892:                                             ; preds = %1887
  br label %1893

1893:                                             ; preds = %1892
  br label %1894

1894:                                             ; preds = %1893
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  %1895 = call ptr @__errno_location() #10
  %1896 = load i32, ptr %1895, align 4, !tbaa !5
  store i32 %1896, ptr %37, align 4, !tbaa !5
  %1897 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1898 = call i32 @s2n_print_stacktrace(ptr noundef %1897)
  %1899 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1900 = trunc i8 %1899 to i1
  br i1 %1900, label %1901, label %1923

1901:                                             ; preds = %1894
  %1902 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1903 = call i32 @fileno(ptr noundef %1902) #9
  %1904 = call i32 @isatty(i32 noundef %1903) #9
  %1905 = icmp ne i32 %1904, 0
  br i1 %1905, label %1906, label %1923

1906:                                             ; preds = %1901
  %1907 = load i32, ptr %37, align 4, !tbaa !5
  %1908 = call ptr @__errno_location() #10
  store i32 %1907, ptr %1908, align 4, !tbaa !5
  %1909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1910 = load i32, ptr @test_count, align 4, !tbaa !5
  %1911 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1912 = load i32, ptr %1911, align 4, !tbaa !5
  %1913 = call ptr @s2n_strerror(i32 noundef %1912, ptr noundef @.str.8)
  %1914 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1915 = load i32, ptr %1914, align 4, !tbaa !5
  %1916 = call ptr @s2n_strerror_debug(i32 noundef %1915, ptr noundef @.str.8)
  %1917 = call ptr @__errno_location() #10
  %1918 = load i32, ptr %1917, align 4, !tbaa !5
  %1919 = call ptr @strerror(i32 noundef %1918) #9
  %1920 = call ptr @__errno_location() #10
  %1921 = load i32, ptr %1920, align 4, !tbaa !5
  %1922 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1909, ptr noundef @.str.6, i32 noundef %1910, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 84, ptr noundef %1913, ptr noundef %1916, ptr noundef %1919, i32 noundef %1921) #9
  br label %1940

1923:                                             ; preds = %1901, %1894
  %1924 = load i32, ptr %37, align 4, !tbaa !5
  %1925 = call ptr @__errno_location() #10
  store i32 %1924, ptr %1925, align 4, !tbaa !5
  %1926 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1927 = load i32, ptr @test_count, align 4, !tbaa !5
  %1928 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1929 = load i32, ptr %1928, align 4, !tbaa !5
  %1930 = call ptr @s2n_strerror(i32 noundef %1929, ptr noundef @.str.8)
  %1931 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1932 = load i32, ptr %1931, align 4, !tbaa !5
  %1933 = call ptr @s2n_strerror_debug(i32 noundef %1932, ptr noundef @.str.8)
  %1934 = call ptr @__errno_location() #10
  %1935 = load i32, ptr %1934, align 4, !tbaa !5
  %1936 = call ptr @strerror(i32 noundef %1935) #9
  %1937 = call ptr @__errno_location() #10
  %1938 = load i32, ptr %1937, align 4, !tbaa !5
  %1939 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1926, ptr noundef @.str.9, i32 noundef %1927, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 84, ptr noundef %1930, ptr noundef %1933, ptr noundef %1936, i32 noundef %1938) #9
  br label %1940

1940:                                             ; preds = %1923, %1906
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  br label %1941

1941:                                             ; preds = %1940
  br label %1942

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

1943:                                             ; No predecessors!
  br label %1944

1944:                                             ; preds = %1943
  br label %1945

1945:                                             ; preds = %1944, %1887
  br label %1946

1946:                                             ; preds = %1945
  br label %1947

1947:                                             ; preds = %1946
  br label %1948

1948:                                             ; preds = %1947
  %1949 = load i32, ptr @test_count, align 4, !tbaa !5
  %1950 = add nsw i32 %1949, 1
  store i32 %1950, ptr @test_count, align 4, !tbaa !5
  %1951 = load ptr, ptr %29, align 8, !tbaa !9
  %1952 = getelementptr inbounds %struct.s2n_connection, ptr %1951, i32 0, i32 31
  %1953 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %1952, i32 0, i32 4
  %1954 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %1953, i32 0, i32 0
  %1955 = load ptr, ptr %1954, align 8, !tbaa !24
  %1956 = icmp eq ptr %1955, null
  br i1 %1956, label %2010, label %1957

1957:                                             ; preds = %1948
  br label %1958

1958:                                             ; preds = %1957
  br label %1959

1959:                                             ; preds = %1958
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  %1960 = call ptr @__errno_location() #10
  %1961 = load i32, ptr %1960, align 4, !tbaa !5
  store i32 %1961, ptr %38, align 4, !tbaa !5
  %1962 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1963 = call i32 @s2n_print_stacktrace(ptr noundef %1962)
  %1964 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1965 = trunc i8 %1964 to i1
  br i1 %1965, label %1966, label %1988

1966:                                             ; preds = %1959
  %1967 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1968 = call i32 @fileno(ptr noundef %1967) #9
  %1969 = call i32 @isatty(i32 noundef %1968) #9
  %1970 = icmp ne i32 %1969, 0
  br i1 %1970, label %1971, label %1988

1971:                                             ; preds = %1966
  %1972 = load i32, ptr %38, align 4, !tbaa !5
  %1973 = call ptr @__errno_location() #10
  store i32 %1972, ptr %1973, align 4, !tbaa !5
  %1974 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1975 = load i32, ptr @test_count, align 4, !tbaa !5
  %1976 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1977 = load i32, ptr %1976, align 4, !tbaa !5
  %1978 = call ptr @s2n_strerror(i32 noundef %1977, ptr noundef @.str.8)
  %1979 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1980 = load i32, ptr %1979, align 4, !tbaa !5
  %1981 = call ptr @s2n_strerror_debug(i32 noundef %1980, ptr noundef @.str.8)
  %1982 = call ptr @__errno_location() #10
  %1983 = load i32, ptr %1982, align 4, !tbaa !5
  %1984 = call ptr @strerror(i32 noundef %1983) #9
  %1985 = call ptr @__errno_location() #10
  %1986 = load i32, ptr %1985, align 4, !tbaa !5
  %1987 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1974, ptr noundef @.str.6, i32 noundef %1975, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 86, ptr noundef %1978, ptr noundef %1981, ptr noundef %1984, i32 noundef %1986) #9
  br label %2005

1988:                                             ; preds = %1966, %1959
  %1989 = load i32, ptr %38, align 4, !tbaa !5
  %1990 = call ptr @__errno_location() #10
  store i32 %1989, ptr %1990, align 4, !tbaa !5
  %1991 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1992 = load i32, ptr @test_count, align 4, !tbaa !5
  %1993 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1994 = load i32, ptr %1993, align 4, !tbaa !5
  %1995 = call ptr @s2n_strerror(i32 noundef %1994, ptr noundef @.str.8)
  %1996 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1997 = load i32, ptr %1996, align 4, !tbaa !5
  %1998 = call ptr @s2n_strerror_debug(i32 noundef %1997, ptr noundef @.str.8)
  %1999 = call ptr @__errno_location() #10
  %2000 = load i32, ptr %1999, align 4, !tbaa !5
  %2001 = call ptr @strerror(i32 noundef %2000) #9
  %2002 = call ptr @__errno_location() #10
  %2003 = load i32, ptr %2002, align 4, !tbaa !5
  %2004 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1991, ptr noundef @.str.9, i32 noundef %1992, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 86, ptr noundef %1995, ptr noundef %1998, ptr noundef %2001, i32 noundef %2003) #9
  br label %2005

2005:                                             ; preds = %1988, %1971
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  br label %2006

2006:                                             ; preds = %2005
  br label %2007

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

2008:                                             ; No predecessors!
  br label %2009

2009:                                             ; preds = %2008
  br label %2010

2010:                                             ; preds = %2009, %1948
  br label %2011

2011:                                             ; preds = %2010
  br label %2012

2012:                                             ; preds = %2011
  br label %2013

2013:                                             ; preds = %2012
  %2014 = load i32, ptr @test_count, align 4, !tbaa !5
  %2015 = add nsw i32 %2014, 1
  store i32 %2015, ptr @test_count, align 4, !tbaa !5
  %2016 = load ptr, ptr %29, align 8, !tbaa !9
  %2017 = getelementptr inbounds %struct.s2n_connection, ptr %2016, i32 0, i32 31
  %2018 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2017, i32 0, i32 4
  %2019 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2018, i32 0, i32 2
  %2020 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2019, i32 0, i32 0
  %2021 = load ptr, ptr %2020, align 8, !tbaa !50
  %2022 = icmp eq ptr %2021, null
  br i1 %2022, label %2076, label %2023

2023:                                             ; preds = %2013
  br label %2024

2024:                                             ; preds = %2023
  br label %2025

2025:                                             ; preds = %2024
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  %2026 = call ptr @__errno_location() #10
  %2027 = load i32, ptr %2026, align 4, !tbaa !5
  store i32 %2027, ptr %39, align 4, !tbaa !5
  %2028 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2029 = call i32 @s2n_print_stacktrace(ptr noundef %2028)
  %2030 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2031 = trunc i8 %2030 to i1
  br i1 %2031, label %2032, label %2054

2032:                                             ; preds = %2025
  %2033 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2034 = call i32 @fileno(ptr noundef %2033) #9
  %2035 = call i32 @isatty(i32 noundef %2034) #9
  %2036 = icmp ne i32 %2035, 0
  br i1 %2036, label %2037, label %2054

2037:                                             ; preds = %2032
  %2038 = load i32, ptr %39, align 4, !tbaa !5
  %2039 = call ptr @__errno_location() #10
  store i32 %2038, ptr %2039, align 4, !tbaa !5
  %2040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2041 = load i32, ptr @test_count, align 4, !tbaa !5
  %2042 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2043 = load i32, ptr %2042, align 4, !tbaa !5
  %2044 = call ptr @s2n_strerror(i32 noundef %2043, ptr noundef @.str.8)
  %2045 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2046 = load i32, ptr %2045, align 4, !tbaa !5
  %2047 = call ptr @s2n_strerror_debug(i32 noundef %2046, ptr noundef @.str.8)
  %2048 = call ptr @__errno_location() #10
  %2049 = load i32, ptr %2048, align 4, !tbaa !5
  %2050 = call ptr @strerror(i32 noundef %2049) #9
  %2051 = call ptr @__errno_location() #10
  %2052 = load i32, ptr %2051, align 4, !tbaa !5
  %2053 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2040, ptr noundef @.str.6, i32 noundef %2041, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 87, ptr noundef %2044, ptr noundef %2047, ptr noundef %2050, i32 noundef %2052) #9
  br label %2071

2054:                                             ; preds = %2032, %2025
  %2055 = load i32, ptr %39, align 4, !tbaa !5
  %2056 = call ptr @__errno_location() #10
  store i32 %2055, ptr %2056, align 4, !tbaa !5
  %2057 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2058 = load i32, ptr @test_count, align 4, !tbaa !5
  %2059 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2060 = load i32, ptr %2059, align 4, !tbaa !5
  %2061 = call ptr @s2n_strerror(i32 noundef %2060, ptr noundef @.str.8)
  %2062 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2063 = load i32, ptr %2062, align 4, !tbaa !5
  %2064 = call ptr @s2n_strerror_debug(i32 noundef %2063, ptr noundef @.str.8)
  %2065 = call ptr @__errno_location() #10
  %2066 = load i32, ptr %2065, align 4, !tbaa !5
  %2067 = call ptr @strerror(i32 noundef %2066) #9
  %2068 = call ptr @__errno_location() #10
  %2069 = load i32, ptr %2068, align 4, !tbaa !5
  %2070 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2057, ptr noundef @.str.9, i32 noundef %2058, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 87, ptr noundef %2061, ptr noundef %2064, ptr noundef %2067, i32 noundef %2069) #9
  br label %2071

2071:                                             ; preds = %2054, %2037
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  br label %2072

2072:                                             ; preds = %2071
  br label %2073

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

2074:                                             ; No predecessors!
  br label %2075

2075:                                             ; preds = %2074
  br label %2076

2076:                                             ; preds = %2075, %2013
  br label %2077

2077:                                             ; preds = %2076
  br label %2078

2078:                                             ; preds = %2077
  br label %2079

2079:                                             ; preds = %2078
  %2080 = load i32, ptr @test_count, align 4, !tbaa !5
  %2081 = add nsw i32 %2080, 1
  store i32 %2081, ptr @test_count, align 4, !tbaa !5
  %2082 = load ptr, ptr %29, align 8, !tbaa !9
  %2083 = getelementptr inbounds %struct.s2n_connection, ptr %2082, i32 0, i32 31
  %2084 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2083, i32 0, i32 4
  %2085 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2084, i32 0, i32 1
  %2086 = getelementptr inbounds %struct.s2n_kem_params, ptr %2085, i32 0, i32 0
  %2087 = load ptr, ptr %2086, align 8, !tbaa !51
  %2088 = icmp eq ptr %2087, null
  br i1 %2088, label %2142, label %2089

2089:                                             ; preds = %2079
  br label %2090

2090:                                             ; preds = %2089
  br label %2091

2091:                                             ; preds = %2090
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  %2092 = call ptr @__errno_location() #10
  %2093 = load i32, ptr %2092, align 4, !tbaa !5
  store i32 %2093, ptr %40, align 4, !tbaa !5
  %2094 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2095 = call i32 @s2n_print_stacktrace(ptr noundef %2094)
  %2096 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2097 = trunc i8 %2096 to i1
  br i1 %2097, label %2098, label %2120

2098:                                             ; preds = %2091
  %2099 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2100 = call i32 @fileno(ptr noundef %2099) #9
  %2101 = call i32 @isatty(i32 noundef %2100) #9
  %2102 = icmp ne i32 %2101, 0
  br i1 %2102, label %2103, label %2120

2103:                                             ; preds = %2098
  %2104 = load i32, ptr %40, align 4, !tbaa !5
  %2105 = call ptr @__errno_location() #10
  store i32 %2104, ptr %2105, align 4, !tbaa !5
  %2106 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2107 = load i32, ptr @test_count, align 4, !tbaa !5
  %2108 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2109 = load i32, ptr %2108, align 4, !tbaa !5
  %2110 = call ptr @s2n_strerror(i32 noundef %2109, ptr noundef @.str.8)
  %2111 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2112 = load i32, ptr %2111, align 4, !tbaa !5
  %2113 = call ptr @s2n_strerror_debug(i32 noundef %2112, ptr noundef @.str.8)
  %2114 = call ptr @__errno_location() #10
  %2115 = load i32, ptr %2114, align 4, !tbaa !5
  %2116 = call ptr @strerror(i32 noundef %2115) #9
  %2117 = call ptr @__errno_location() #10
  %2118 = load i32, ptr %2117, align 4, !tbaa !5
  %2119 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2106, ptr noundef @.str.6, i32 noundef %2107, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 88, ptr noundef %2110, ptr noundef %2113, ptr noundef %2116, i32 noundef %2118) #9
  br label %2137

2120:                                             ; preds = %2098, %2091
  %2121 = load i32, ptr %40, align 4, !tbaa !5
  %2122 = call ptr @__errno_location() #10
  store i32 %2121, ptr %2122, align 4, !tbaa !5
  %2123 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2124 = load i32, ptr @test_count, align 4, !tbaa !5
  %2125 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2126 = load i32, ptr %2125, align 4, !tbaa !5
  %2127 = call ptr @s2n_strerror(i32 noundef %2126, ptr noundef @.str.8)
  %2128 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2129 = load i32, ptr %2128, align 4, !tbaa !5
  %2130 = call ptr @s2n_strerror_debug(i32 noundef %2129, ptr noundef @.str.8)
  %2131 = call ptr @__errno_location() #10
  %2132 = load i32, ptr %2131, align 4, !tbaa !5
  %2133 = call ptr @strerror(i32 noundef %2132) #9
  %2134 = call ptr @__errno_location() #10
  %2135 = load i32, ptr %2134, align 4, !tbaa !5
  %2136 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2123, ptr noundef @.str.9, i32 noundef %2124, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 88, ptr noundef %2127, ptr noundef %2130, ptr noundef %2133, i32 noundef %2135) #9
  br label %2137

2137:                                             ; preds = %2120, %2103
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  br label %2138

2138:                                             ; preds = %2137
  br label %2139

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

2140:                                             ; No predecessors!
  br label %2141

2141:                                             ; preds = %2140
  br label %2142

2142:                                             ; preds = %2141, %2079
  br label %2143

2143:                                             ; preds = %2142
  br label %2144

2144:                                             ; preds = %2143
  br label %2145

2145:                                             ; preds = %2144
  %2146 = load i32, ptr @test_count, align 4, !tbaa !5
  %2147 = add nsw i32 %2146, 1
  store i32 %2147, ptr @test_count, align 4, !tbaa !5
  %2148 = load ptr, ptr %29, align 8, !tbaa !9
  %2149 = getelementptr inbounds %struct.s2n_connection, ptr %2148, i32 0, i32 31
  %2150 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2149, i32 0, i32 1
  %2151 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2150, i32 0, i32 0
  %2152 = load ptr, ptr %2151, align 8, !tbaa !52
  %2153 = icmp eq ptr %2152, null
  br i1 %2153, label %2207, label %2154

2154:                                             ; preds = %2145
  br label %2155

2155:                                             ; preds = %2154
  br label %2156

2156:                                             ; preds = %2155
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #9
  %2157 = call ptr @__errno_location() #10
  %2158 = load i32, ptr %2157, align 4, !tbaa !5
  store i32 %2158, ptr %41, align 4, !tbaa !5
  %2159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2160 = call i32 @s2n_print_stacktrace(ptr noundef %2159)
  %2161 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2162 = trunc i8 %2161 to i1
  br i1 %2162, label %2163, label %2185

2163:                                             ; preds = %2156
  %2164 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2165 = call i32 @fileno(ptr noundef %2164) #9
  %2166 = call i32 @isatty(i32 noundef %2165) #9
  %2167 = icmp ne i32 %2166, 0
  br i1 %2167, label %2168, label %2185

2168:                                             ; preds = %2163
  %2169 = load i32, ptr %41, align 4, !tbaa !5
  %2170 = call ptr @__errno_location() #10
  store i32 %2169, ptr %2170, align 4, !tbaa !5
  %2171 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2172 = load i32, ptr @test_count, align 4, !tbaa !5
  %2173 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2174 = load i32, ptr %2173, align 4, !tbaa !5
  %2175 = call ptr @s2n_strerror(i32 noundef %2174, ptr noundef @.str.8)
  %2176 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2177 = load i32, ptr %2176, align 4, !tbaa !5
  %2178 = call ptr @s2n_strerror_debug(i32 noundef %2177, ptr noundef @.str.8)
  %2179 = call ptr @__errno_location() #10
  %2180 = load i32, ptr %2179, align 4, !tbaa !5
  %2181 = call ptr @strerror(i32 noundef %2180) #9
  %2182 = call ptr @__errno_location() #10
  %2183 = load i32, ptr %2182, align 4, !tbaa !5
  %2184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2171, ptr noundef @.str.6, i32 noundef %2172, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 89, ptr noundef %2175, ptr noundef %2178, ptr noundef %2181, i32 noundef %2183) #9
  br label %2202

2185:                                             ; preds = %2163, %2156
  %2186 = load i32, ptr %41, align 4, !tbaa !5
  %2187 = call ptr @__errno_location() #10
  store i32 %2186, ptr %2187, align 4, !tbaa !5
  %2188 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2189 = load i32, ptr @test_count, align 4, !tbaa !5
  %2190 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2191 = load i32, ptr %2190, align 4, !tbaa !5
  %2192 = call ptr @s2n_strerror(i32 noundef %2191, ptr noundef @.str.8)
  %2193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2194 = load i32, ptr %2193, align 4, !tbaa !5
  %2195 = call ptr @s2n_strerror_debug(i32 noundef %2194, ptr noundef @.str.8)
  %2196 = call ptr @__errno_location() #10
  %2197 = load i32, ptr %2196, align 4, !tbaa !5
  %2198 = call ptr @strerror(i32 noundef %2197) #9
  %2199 = call ptr @__errno_location() #10
  %2200 = load i32, ptr %2199, align 4, !tbaa !5
  %2201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2188, ptr noundef @.str.9, i32 noundef %2189, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 89, ptr noundef %2192, ptr noundef %2195, ptr noundef %2198, i32 noundef %2200) #9
  br label %2202

2202:                                             ; preds = %2185, %2168
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #9
  br label %2203

2203:                                             ; preds = %2202
  br label %2204

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

2205:                                             ; No predecessors!
  br label %2206

2206:                                             ; preds = %2205
  br label %2207

2207:                                             ; preds = %2206, %2145
  br label %2208

2208:                                             ; preds = %2207
  br label %2209

2209:                                             ; preds = %2208
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  store i64 0, ptr %42, align 8, !tbaa !15
  br label %2210

2210:                                             ; preds = %2285, %2209
  %2211 = load i64, ptr %42, align 8, !tbaa !15
  %2212 = load ptr, ptr %31, align 8, !tbaa !9
  %2213 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %2212, i32 0, i32 0
  %2214 = load i8, ptr %2213, align 8, !tbaa !17
  %2215 = zext i8 %2214 to i64
  %2216 = icmp ult i64 %2211, %2215
  br i1 %2216, label %2218, label %2217

2217:                                             ; preds = %2210
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  br label %2288

2218:                                             ; preds = %2210
  br label %2219

2219:                                             ; preds = %2218
  %2220 = load i32, ptr @test_count, align 4, !tbaa !5
  %2221 = add nsw i32 %2220, 1
  store i32 %2221, ptr @test_count, align 4, !tbaa !5
  %2222 = load ptr, ptr %29, align 8, !tbaa !9
  %2223 = getelementptr inbounds %struct.s2n_connection, ptr %2222, i32 0, i32 31
  %2224 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2223, i32 0, i32 2
  %2225 = load i64, ptr %42, align 8, !tbaa !15
  %2226 = getelementptr inbounds [4 x ptr], ptr %2224, i64 0, i64 %2225
  %2227 = load ptr, ptr %2226, align 8, !tbaa !9
  %2228 = icmp eq ptr %2227, null
  br i1 %2228, label %2282, label %2229

2229:                                             ; preds = %2219
  br label %2230

2230:                                             ; preds = %2229
  br label %2231

2231:                                             ; preds = %2230
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #9
  %2232 = call ptr @__errno_location() #10
  %2233 = load i32, ptr %2232, align 4, !tbaa !5
  store i32 %2233, ptr %43, align 4, !tbaa !5
  %2234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2235 = call i32 @s2n_print_stacktrace(ptr noundef %2234)
  %2236 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2237 = trunc i8 %2236 to i1
  br i1 %2237, label %2238, label %2260

2238:                                             ; preds = %2231
  %2239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2240 = call i32 @fileno(ptr noundef %2239) #9
  %2241 = call i32 @isatty(i32 noundef %2240) #9
  %2242 = icmp ne i32 %2241, 0
  br i1 %2242, label %2243, label %2260

2243:                                             ; preds = %2238
  %2244 = load i32, ptr %43, align 4, !tbaa !5
  %2245 = call ptr @__errno_location() #10
  store i32 %2244, ptr %2245, align 4, !tbaa !5
  %2246 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2247 = load i32, ptr @test_count, align 4, !tbaa !5
  %2248 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2249 = load i32, ptr %2248, align 4, !tbaa !5
  %2250 = call ptr @s2n_strerror(i32 noundef %2249, ptr noundef @.str.8)
  %2251 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2252 = load i32, ptr %2251, align 4, !tbaa !5
  %2253 = call ptr @s2n_strerror_debug(i32 noundef %2252, ptr noundef @.str.8)
  %2254 = call ptr @__errno_location() #10
  %2255 = load i32, ptr %2254, align 4, !tbaa !5
  %2256 = call ptr @strerror(i32 noundef %2255) #9
  %2257 = call ptr @__errno_location() #10
  %2258 = load i32, ptr %2257, align 4, !tbaa !5
  %2259 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2246, ptr noundef @.str.6, i32 noundef %2247, ptr noundef @.str.19, ptr noundef @.str.5, i32 noundef 92, ptr noundef %2250, ptr noundef %2253, ptr noundef %2256, i32 noundef %2258) #9
  br label %2277

2260:                                             ; preds = %2238, %2231
  %2261 = load i32, ptr %43, align 4, !tbaa !5
  %2262 = call ptr @__errno_location() #10
  store i32 %2261, ptr %2262, align 4, !tbaa !5
  %2263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2264 = load i32, ptr @test_count, align 4, !tbaa !5
  %2265 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2266 = load i32, ptr %2265, align 4, !tbaa !5
  %2267 = call ptr @s2n_strerror(i32 noundef %2266, ptr noundef @.str.8)
  %2268 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2269 = load i32, ptr %2268, align 4, !tbaa !5
  %2270 = call ptr @s2n_strerror_debug(i32 noundef %2269, ptr noundef @.str.8)
  %2271 = call ptr @__errno_location() #10
  %2272 = load i32, ptr %2271, align 4, !tbaa !5
  %2273 = call ptr @strerror(i32 noundef %2272) #9
  %2274 = call ptr @__errno_location() #10
  %2275 = load i32, ptr %2274, align 4, !tbaa !5
  %2276 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2263, ptr noundef @.str.9, i32 noundef %2264, ptr noundef @.str.19, ptr noundef @.str.5, i32 noundef 92, ptr noundef %2267, ptr noundef %2270, ptr noundef %2273, i32 noundef %2275) #9
  br label %2277

2277:                                             ; preds = %2260, %2243
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #9
  br label %2278

2278:                                             ; preds = %2277
  br label %2279

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

2280:                                             ; No predecessors!
  br label %2281

2281:                                             ; preds = %2280
  br label %2282

2282:                                             ; preds = %2281, %2219
  br label %2283

2283:                                             ; preds = %2282
  br label %2284

2284:                                             ; preds = %2283
  br label %2285

2285:                                             ; preds = %2284
  %2286 = load i64, ptr %42, align 8, !tbaa !15
  %2287 = add i64 %2286, 1
  store i64 %2287, ptr %42, align 8, !tbaa !15
  br label %2210, !llvm.loop !53

2288:                                             ; preds = %2217
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  store i64 0, ptr %44, align 8, !tbaa !15
  br label %2289

2289:                                             ; preds = %2364, %2288
  %2290 = load i64, ptr %44, align 8, !tbaa !15
  %2291 = load ptr, ptr %34, align 8, !tbaa !9
  %2292 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %2291, i32 0, i32 2
  %2293 = load i8, ptr %2292, align 8, !tbaa !21
  %2294 = zext i8 %2293 to i64
  %2295 = icmp ult i64 %2290, %2294
  br i1 %2295, label %2297, label %2296

2296:                                             ; preds = %2289
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %2367

2297:                                             ; preds = %2289
  br label %2298

2298:                                             ; preds = %2297
  %2299 = load i32, ptr @test_count, align 4, !tbaa !5
  %2300 = add nsw i32 %2299, 1
  store i32 %2300, ptr @test_count, align 4, !tbaa !5
  %2301 = load ptr, ptr %29, align 8, !tbaa !9
  %2302 = getelementptr inbounds %struct.s2n_connection, ptr %2301, i32 0, i32 31
  %2303 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2302, i32 0, i32 6
  %2304 = load i64, ptr %44, align 8, !tbaa !15
  %2305 = getelementptr inbounds [8 x ptr], ptr %2303, i64 0, i64 %2304
  %2306 = load ptr, ptr %2305, align 8, !tbaa !9
  %2307 = icmp eq ptr %2306, null
  br i1 %2307, label %2361, label %2308

2308:                                             ; preds = %2298
  br label %2309

2309:                                             ; preds = %2308
  br label %2310

2310:                                             ; preds = %2309
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  %2311 = call ptr @__errno_location() #10
  %2312 = load i32, ptr %2311, align 4, !tbaa !5
  store i32 %2312, ptr %45, align 4, !tbaa !5
  %2313 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2314 = call i32 @s2n_print_stacktrace(ptr noundef %2313)
  %2315 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2316 = trunc i8 %2315 to i1
  br i1 %2316, label %2317, label %2339

2317:                                             ; preds = %2310
  %2318 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2319 = call i32 @fileno(ptr noundef %2318) #9
  %2320 = call i32 @isatty(i32 noundef %2319) #9
  %2321 = icmp ne i32 %2320, 0
  br i1 %2321, label %2322, label %2339

2322:                                             ; preds = %2317
  %2323 = load i32, ptr %45, align 4, !tbaa !5
  %2324 = call ptr @__errno_location() #10
  store i32 %2323, ptr %2324, align 4, !tbaa !5
  %2325 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2326 = load i32, ptr @test_count, align 4, !tbaa !5
  %2327 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2328 = load i32, ptr %2327, align 4, !tbaa !5
  %2329 = call ptr @s2n_strerror(i32 noundef %2328, ptr noundef @.str.8)
  %2330 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2331 = load i32, ptr %2330, align 4, !tbaa !5
  %2332 = call ptr @s2n_strerror_debug(i32 noundef %2331, ptr noundef @.str.8)
  %2333 = call ptr @__errno_location() #10
  %2334 = load i32, ptr %2333, align 4, !tbaa !5
  %2335 = call ptr @strerror(i32 noundef %2334) #9
  %2336 = call ptr @__errno_location() #10
  %2337 = load i32, ptr %2336, align 4, !tbaa !5
  %2338 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2325, ptr noundef @.str.6, i32 noundef %2326, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 96, ptr noundef %2329, ptr noundef %2332, ptr noundef %2335, i32 noundef %2337) #9
  br label %2356

2339:                                             ; preds = %2317, %2310
  %2340 = load i32, ptr %45, align 4, !tbaa !5
  %2341 = call ptr @__errno_location() #10
  store i32 %2340, ptr %2341, align 4, !tbaa !5
  %2342 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2343 = load i32, ptr @test_count, align 4, !tbaa !5
  %2344 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2345 = load i32, ptr %2344, align 4, !tbaa !5
  %2346 = call ptr @s2n_strerror(i32 noundef %2345, ptr noundef @.str.8)
  %2347 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2348 = load i32, ptr %2347, align 4, !tbaa !5
  %2349 = call ptr @s2n_strerror_debug(i32 noundef %2348, ptr noundef @.str.8)
  %2350 = call ptr @__errno_location() #10
  %2351 = load i32, ptr %2350, align 4, !tbaa !5
  %2352 = call ptr @strerror(i32 noundef %2351) #9
  %2353 = call ptr @__errno_location() #10
  %2354 = load i32, ptr %2353, align 4, !tbaa !5
  %2355 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2342, ptr noundef @.str.9, i32 noundef %2343, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 96, ptr noundef %2346, ptr noundef %2349, ptr noundef %2352, i32 noundef %2354) #9
  br label %2356

2356:                                             ; preds = %2339, %2322
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %2357

2357:                                             ; preds = %2356
  br label %2358

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

2359:                                             ; No predecessors!
  br label %2360

2360:                                             ; preds = %2359
  br label %2361

2361:                                             ; preds = %2360, %2298
  br label %2362

2362:                                             ; preds = %2361
  br label %2363

2363:                                             ; preds = %2362
  br label %2364

2364:                                             ; preds = %2363
  %2365 = load i64, ptr %44, align 8, !tbaa !15
  %2366 = add i64 %2365, 1
  store i64 %2366, ptr %44, align 8, !tbaa !15
  br label %2289, !llvm.loop !54

2367:                                             ; preds = %2296
  %2368 = load ptr, ptr %31, align 8, !tbaa !9
  %2369 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %2368, i32 0, i32 1
  %2370 = load ptr, ptr %2369, align 8, !tbaa !55
  %2371 = getelementptr inbounds ptr, ptr %2370, i64 1
  %2372 = load ptr, ptr %2371, align 8, !tbaa !9
  %2373 = load ptr, ptr %29, align 8, !tbaa !9
  %2374 = getelementptr inbounds %struct.s2n_connection, ptr %2373, i32 0, i32 31
  %2375 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2374, i32 0, i32 2
  %2376 = getelementptr inbounds [4 x ptr], ptr %2375, i64 0, i64 1
  store ptr %2372, ptr %2376, align 8, !tbaa !9
  br label %2377

2377:                                             ; preds = %2367
  %2378 = load i32, ptr @test_count, align 4, !tbaa !5
  %2379 = add nsw i32 %2378, 1
  store i32 %2379, ptr @test_count, align 4, !tbaa !5
  %2380 = load ptr, ptr %29, align 8, !tbaa !9
  %2381 = call i32 @s2n_choose_supported_group(ptr noundef %2380)
  %2382 = icmp eq i32 %2381, -1
  br i1 %2382, label %2383, label %2436

2383:                                             ; preds = %2377
  br label %2384

2384:                                             ; preds = %2383
  br label %2385

2385:                                             ; preds = %2384
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  %2386 = call ptr @__errno_location() #10
  %2387 = load i32, ptr %2386, align 4, !tbaa !5
  store i32 %2387, ptr %46, align 4, !tbaa !5
  %2388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2389 = call i32 @s2n_print_stacktrace(ptr noundef %2388)
  %2390 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2391 = trunc i8 %2390 to i1
  br i1 %2391, label %2392, label %2414

2392:                                             ; preds = %2385
  %2393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2394 = call i32 @fileno(ptr noundef %2393) #9
  %2395 = call i32 @isatty(i32 noundef %2394) #9
  %2396 = icmp ne i32 %2395, 0
  br i1 %2396, label %2397, label %2414

2397:                                             ; preds = %2392
  %2398 = load i32, ptr %46, align 4, !tbaa !5
  %2399 = call ptr @__errno_location() #10
  store i32 %2398, ptr %2399, align 4, !tbaa !5
  %2400 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2401 = load i32, ptr @test_count, align 4, !tbaa !5
  %2402 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2403 = load i32, ptr %2402, align 4, !tbaa !5
  %2404 = call ptr @s2n_strerror(i32 noundef %2403, ptr noundef @.str.8)
  %2405 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2406 = load i32, ptr %2405, align 4, !tbaa !5
  %2407 = call ptr @s2n_strerror_debug(i32 noundef %2406, ptr noundef @.str.8)
  %2408 = call ptr @__errno_location() #10
  %2409 = load i32, ptr %2408, align 4, !tbaa !5
  %2410 = call ptr @strerror(i32 noundef %2409) #9
  %2411 = call ptr @__errno_location() #10
  %2412 = load i32, ptr %2411, align 4, !tbaa !5
  %2413 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2400, ptr noundef @.str.6, i32 noundef %2401, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 100, ptr noundef %2404, ptr noundef %2407, ptr noundef %2410, i32 noundef %2412) #9
  br label %2431

2414:                                             ; preds = %2392, %2385
  %2415 = load i32, ptr %46, align 4, !tbaa !5
  %2416 = call ptr @__errno_location() #10
  store i32 %2415, ptr %2416, align 4, !tbaa !5
  %2417 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2418 = load i32, ptr @test_count, align 4, !tbaa !5
  %2419 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2420 = load i32, ptr %2419, align 4, !tbaa !5
  %2421 = call ptr @s2n_strerror(i32 noundef %2420, ptr noundef @.str.8)
  %2422 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2423 = load i32, ptr %2422, align 4, !tbaa !5
  %2424 = call ptr @s2n_strerror_debug(i32 noundef %2423, ptr noundef @.str.8)
  %2425 = call ptr @__errno_location() #10
  %2426 = load i32, ptr %2425, align 4, !tbaa !5
  %2427 = call ptr @strerror(i32 noundef %2426) #9
  %2428 = call ptr @__errno_location() #10
  %2429 = load i32, ptr %2428, align 4, !tbaa !5
  %2430 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2417, ptr noundef @.str.9, i32 noundef %2418, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 100, ptr noundef %2421, ptr noundef %2424, ptr noundef %2427, i32 noundef %2429) #9
  br label %2431

2431:                                             ; preds = %2414, %2397
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  br label %2432

2432:                                             ; preds = %2431
  br label %2433

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

2434:                                             ; No predecessors!
  br label %2435

2435:                                             ; preds = %2434
  br label %2436

2436:                                             ; preds = %2435, %2377
  br label %2437

2437:                                             ; preds = %2436
  br label %2438

2438:                                             ; preds = %2437
  br label %2439

2439:                                             ; preds = %2438
  %2440 = load i32, ptr @test_count, align 4, !tbaa !5
  %2441 = add nsw i32 %2440, 1
  store i32 %2441, ptr @test_count, align 4, !tbaa !5
  %2442 = load ptr, ptr %29, align 8, !tbaa !9
  %2443 = getelementptr inbounds %struct.s2n_connection, ptr %2442, i32 0, i32 31
  %2444 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2443, i32 0, i32 4
  %2445 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2444, i32 0, i32 0
  %2446 = load ptr, ptr %2445, align 8, !tbaa !24
  %2447 = icmp eq ptr %2446, null
  br i1 %2447, label %2501, label %2448

2448:                                             ; preds = %2439
  br label %2449

2449:                                             ; preds = %2448
  br label %2450

2450:                                             ; preds = %2449
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #9
  %2451 = call ptr @__errno_location() #10
  %2452 = load i32, ptr %2451, align 4, !tbaa !5
  store i32 %2452, ptr %47, align 4, !tbaa !5
  %2453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2454 = call i32 @s2n_print_stacktrace(ptr noundef %2453)
  %2455 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2456 = trunc i8 %2455 to i1
  br i1 %2456, label %2457, label %2479

2457:                                             ; preds = %2450
  %2458 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2459 = call i32 @fileno(ptr noundef %2458) #9
  %2460 = call i32 @isatty(i32 noundef %2459) #9
  %2461 = icmp ne i32 %2460, 0
  br i1 %2461, label %2462, label %2479

2462:                                             ; preds = %2457
  %2463 = load i32, ptr %47, align 4, !tbaa !5
  %2464 = call ptr @__errno_location() #10
  store i32 %2463, ptr %2464, align 4, !tbaa !5
  %2465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2466 = load i32, ptr @test_count, align 4, !tbaa !5
  %2467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2468 = load i32, ptr %2467, align 4, !tbaa !5
  %2469 = call ptr @s2n_strerror(i32 noundef %2468, ptr noundef @.str.8)
  %2470 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2471 = load i32, ptr %2470, align 4, !tbaa !5
  %2472 = call ptr @s2n_strerror_debug(i32 noundef %2471, ptr noundef @.str.8)
  %2473 = call ptr @__errno_location() #10
  %2474 = load i32, ptr %2473, align 4, !tbaa !5
  %2475 = call ptr @strerror(i32 noundef %2474) #9
  %2476 = call ptr @__errno_location() #10
  %2477 = load i32, ptr %2476, align 4, !tbaa !5
  %2478 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2465, ptr noundef @.str.6, i32 noundef %2466, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 102, ptr noundef %2469, ptr noundef %2472, ptr noundef %2475, i32 noundef %2477) #9
  br label %2496

2479:                                             ; preds = %2457, %2450
  %2480 = load i32, ptr %47, align 4, !tbaa !5
  %2481 = call ptr @__errno_location() #10
  store i32 %2480, ptr %2481, align 4, !tbaa !5
  %2482 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2483 = load i32, ptr @test_count, align 4, !tbaa !5
  %2484 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2485 = load i32, ptr %2484, align 4, !tbaa !5
  %2486 = call ptr @s2n_strerror(i32 noundef %2485, ptr noundef @.str.8)
  %2487 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2488 = load i32, ptr %2487, align 4, !tbaa !5
  %2489 = call ptr @s2n_strerror_debug(i32 noundef %2488, ptr noundef @.str.8)
  %2490 = call ptr @__errno_location() #10
  %2491 = load i32, ptr %2490, align 4, !tbaa !5
  %2492 = call ptr @strerror(i32 noundef %2491) #9
  %2493 = call ptr @__errno_location() #10
  %2494 = load i32, ptr %2493, align 4, !tbaa !5
  %2495 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2482, ptr noundef @.str.9, i32 noundef %2483, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 102, ptr noundef %2486, ptr noundef %2489, ptr noundef %2492, i32 noundef %2494) #9
  br label %2496

2496:                                             ; preds = %2479, %2462
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #9
  br label %2497

2497:                                             ; preds = %2496
  br label %2498

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

2499:                                             ; No predecessors!
  br label %2500

2500:                                             ; preds = %2499
  br label %2501

2501:                                             ; preds = %2500, %2439
  br label %2502

2502:                                             ; preds = %2501
  br label %2503

2503:                                             ; preds = %2502
  br label %2504

2504:                                             ; preds = %2503
  %2505 = load i32, ptr @test_count, align 4, !tbaa !5
  %2506 = add nsw i32 %2505, 1
  store i32 %2506, ptr @test_count, align 4, !tbaa !5
  %2507 = load ptr, ptr %29, align 8, !tbaa !9
  %2508 = getelementptr inbounds %struct.s2n_connection, ptr %2507, i32 0, i32 31
  %2509 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2508, i32 0, i32 4
  %2510 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2509, i32 0, i32 2
  %2511 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2510, i32 0, i32 0
  %2512 = load ptr, ptr %2511, align 8, !tbaa !50
  %2513 = icmp eq ptr %2512, null
  br i1 %2513, label %2567, label %2514

2514:                                             ; preds = %2504
  br label %2515

2515:                                             ; preds = %2514
  br label %2516

2516:                                             ; preds = %2515
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  %2517 = call ptr @__errno_location() #10
  %2518 = load i32, ptr %2517, align 4, !tbaa !5
  store i32 %2518, ptr %48, align 4, !tbaa !5
  %2519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2520 = call i32 @s2n_print_stacktrace(ptr noundef %2519)
  %2521 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2522 = trunc i8 %2521 to i1
  br i1 %2522, label %2523, label %2545

2523:                                             ; preds = %2516
  %2524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2525 = call i32 @fileno(ptr noundef %2524) #9
  %2526 = call i32 @isatty(i32 noundef %2525) #9
  %2527 = icmp ne i32 %2526, 0
  br i1 %2527, label %2528, label %2545

2528:                                             ; preds = %2523
  %2529 = load i32, ptr %48, align 4, !tbaa !5
  %2530 = call ptr @__errno_location() #10
  store i32 %2529, ptr %2530, align 4, !tbaa !5
  %2531 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2532 = load i32, ptr @test_count, align 4, !tbaa !5
  %2533 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2534 = load i32, ptr %2533, align 4, !tbaa !5
  %2535 = call ptr @s2n_strerror(i32 noundef %2534, ptr noundef @.str.8)
  %2536 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2537 = load i32, ptr %2536, align 4, !tbaa !5
  %2538 = call ptr @s2n_strerror_debug(i32 noundef %2537, ptr noundef @.str.8)
  %2539 = call ptr @__errno_location() #10
  %2540 = load i32, ptr %2539, align 4, !tbaa !5
  %2541 = call ptr @strerror(i32 noundef %2540) #9
  %2542 = call ptr @__errno_location() #10
  %2543 = load i32, ptr %2542, align 4, !tbaa !5
  %2544 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2531, ptr noundef @.str.6, i32 noundef %2532, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 103, ptr noundef %2535, ptr noundef %2538, ptr noundef %2541, i32 noundef %2543) #9
  br label %2562

2545:                                             ; preds = %2523, %2516
  %2546 = load i32, ptr %48, align 4, !tbaa !5
  %2547 = call ptr @__errno_location() #10
  store i32 %2546, ptr %2547, align 4, !tbaa !5
  %2548 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2549 = load i32, ptr @test_count, align 4, !tbaa !5
  %2550 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2551 = load i32, ptr %2550, align 4, !tbaa !5
  %2552 = call ptr @s2n_strerror(i32 noundef %2551, ptr noundef @.str.8)
  %2553 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2554 = load i32, ptr %2553, align 4, !tbaa !5
  %2555 = call ptr @s2n_strerror_debug(i32 noundef %2554, ptr noundef @.str.8)
  %2556 = call ptr @__errno_location() #10
  %2557 = load i32, ptr %2556, align 4, !tbaa !5
  %2558 = call ptr @strerror(i32 noundef %2557) #9
  %2559 = call ptr @__errno_location() #10
  %2560 = load i32, ptr %2559, align 4, !tbaa !5
  %2561 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2548, ptr noundef @.str.9, i32 noundef %2549, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 103, ptr noundef %2552, ptr noundef %2555, ptr noundef %2558, i32 noundef %2560) #9
  br label %2562

2562:                                             ; preds = %2545, %2528
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %2563

2563:                                             ; preds = %2562
  br label %2564

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

2565:                                             ; No predecessors!
  br label %2566

2566:                                             ; preds = %2565
  br label %2567

2567:                                             ; preds = %2566, %2504
  br label %2568

2568:                                             ; preds = %2567
  br label %2569

2569:                                             ; preds = %2568
  br label %2570

2570:                                             ; preds = %2569
  %2571 = load i32, ptr @test_count, align 4, !tbaa !5
  %2572 = add nsw i32 %2571, 1
  store i32 %2572, ptr @test_count, align 4, !tbaa !5
  %2573 = load ptr, ptr %29, align 8, !tbaa !9
  %2574 = getelementptr inbounds %struct.s2n_connection, ptr %2573, i32 0, i32 31
  %2575 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2574, i32 0, i32 4
  %2576 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %2575, i32 0, i32 1
  %2577 = getelementptr inbounds %struct.s2n_kem_params, ptr %2576, i32 0, i32 0
  %2578 = load ptr, ptr %2577, align 8, !tbaa !51
  %2579 = icmp eq ptr %2578, null
  br i1 %2579, label %2633, label %2580

2580:                                             ; preds = %2570
  br label %2581

2581:                                             ; preds = %2580
  br label %2582

2582:                                             ; preds = %2581
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  %2583 = call ptr @__errno_location() #10
  %2584 = load i32, ptr %2583, align 4, !tbaa !5
  store i32 %2584, ptr %49, align 4, !tbaa !5
  %2585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2586 = call i32 @s2n_print_stacktrace(ptr noundef %2585)
  %2587 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2588 = trunc i8 %2587 to i1
  br i1 %2588, label %2589, label %2611

2589:                                             ; preds = %2582
  %2590 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2591 = call i32 @fileno(ptr noundef %2590) #9
  %2592 = call i32 @isatty(i32 noundef %2591) #9
  %2593 = icmp ne i32 %2592, 0
  br i1 %2593, label %2594, label %2611

2594:                                             ; preds = %2589
  %2595 = load i32, ptr %49, align 4, !tbaa !5
  %2596 = call ptr @__errno_location() #10
  store i32 %2595, ptr %2596, align 4, !tbaa !5
  %2597 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2598 = load i32, ptr @test_count, align 4, !tbaa !5
  %2599 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2600 = load i32, ptr %2599, align 4, !tbaa !5
  %2601 = call ptr @s2n_strerror(i32 noundef %2600, ptr noundef @.str.8)
  %2602 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2603 = load i32, ptr %2602, align 4, !tbaa !5
  %2604 = call ptr @s2n_strerror_debug(i32 noundef %2603, ptr noundef @.str.8)
  %2605 = call ptr @__errno_location() #10
  %2606 = load i32, ptr %2605, align 4, !tbaa !5
  %2607 = call ptr @strerror(i32 noundef %2606) #9
  %2608 = call ptr @__errno_location() #10
  %2609 = load i32, ptr %2608, align 4, !tbaa !5
  %2610 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2597, ptr noundef @.str.6, i32 noundef %2598, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 104, ptr noundef %2601, ptr noundef %2604, ptr noundef %2607, i32 noundef %2609) #9
  br label %2628

2611:                                             ; preds = %2589, %2582
  %2612 = load i32, ptr %49, align 4, !tbaa !5
  %2613 = call ptr @__errno_location() #10
  store i32 %2612, ptr %2613, align 4, !tbaa !5
  %2614 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2615 = load i32, ptr @test_count, align 4, !tbaa !5
  %2616 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2617 = load i32, ptr %2616, align 4, !tbaa !5
  %2618 = call ptr @s2n_strerror(i32 noundef %2617, ptr noundef @.str.8)
  %2619 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2620 = load i32, ptr %2619, align 4, !tbaa !5
  %2621 = call ptr @s2n_strerror_debug(i32 noundef %2620, ptr noundef @.str.8)
  %2622 = call ptr @__errno_location() #10
  %2623 = load i32, ptr %2622, align 4, !tbaa !5
  %2624 = call ptr @strerror(i32 noundef %2623) #9
  %2625 = call ptr @__errno_location() #10
  %2626 = load i32, ptr %2625, align 4, !tbaa !5
  %2627 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2614, ptr noundef @.str.9, i32 noundef %2615, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 104, ptr noundef %2618, ptr noundef %2621, ptr noundef %2624, i32 noundef %2626) #9
  br label %2628

2628:                                             ; preds = %2611, %2594
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %2629

2629:                                             ; preds = %2628
  br label %2630

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

2631:                                             ; No predecessors!
  br label %2632

2632:                                             ; preds = %2631
  br label %2633

2633:                                             ; preds = %2632, %2570
  br label %2634

2634:                                             ; preds = %2633
  br label %2635

2635:                                             ; preds = %2634
  br label %2636

2636:                                             ; preds = %2635
  %2637 = load i32, ptr @test_count, align 4, !tbaa !5
  %2638 = add nsw i32 %2637, 1
  store i32 %2638, ptr @test_count, align 4, !tbaa !5
  %2639 = load ptr, ptr %29, align 8, !tbaa !9
  %2640 = getelementptr inbounds %struct.s2n_connection, ptr %2639, i32 0, i32 31
  %2641 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %2640, i32 0, i32 1
  %2642 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %2641, i32 0, i32 0
  %2643 = load ptr, ptr %2642, align 8, !tbaa !52
  %2644 = load ptr, ptr %31, align 8, !tbaa !9
  %2645 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %2644, i32 0, i32 1
  %2646 = load ptr, ptr %2645, align 8, !tbaa !55
  %2647 = getelementptr inbounds ptr, ptr %2646, i64 1
  %2648 = load ptr, ptr %2647, align 8, !tbaa !9
  %2649 = icmp eq ptr %2643, %2648
  br i1 %2649, label %2703, label %2650

2650:                                             ; preds = %2636
  br label %2651

2651:                                             ; preds = %2650
  br label %2652

2652:                                             ; preds = %2651
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #9
  %2653 = call ptr @__errno_location() #10
  %2654 = load i32, ptr %2653, align 4, !tbaa !5
  store i32 %2654, ptr %50, align 4, !tbaa !5
  %2655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2656 = call i32 @s2n_print_stacktrace(ptr noundef %2655)
  %2657 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2658 = trunc i8 %2657 to i1
  br i1 %2658, label %2659, label %2681

2659:                                             ; preds = %2652
  %2660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2661 = call i32 @fileno(ptr noundef %2660) #9
  %2662 = call i32 @isatty(i32 noundef %2661) #9
  %2663 = icmp ne i32 %2662, 0
  br i1 %2663, label %2664, label %2681

2664:                                             ; preds = %2659
  %2665 = load i32, ptr %50, align 4, !tbaa !5
  %2666 = call ptr @__errno_location() #10
  store i32 %2665, ptr %2666, align 4, !tbaa !5
  %2667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2668 = load i32, ptr @test_count, align 4, !tbaa !5
  %2669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2670 = load i32, ptr %2669, align 4, !tbaa !5
  %2671 = call ptr @s2n_strerror(i32 noundef %2670, ptr noundef @.str.8)
  %2672 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2673 = load i32, ptr %2672, align 4, !tbaa !5
  %2674 = call ptr @s2n_strerror_debug(i32 noundef %2673, ptr noundef @.str.8)
  %2675 = call ptr @__errno_location() #10
  %2676 = load i32, ptr %2675, align 4, !tbaa !5
  %2677 = call ptr @strerror(i32 noundef %2676) #9
  %2678 = call ptr @__errno_location() #10
  %2679 = load i32, ptr %2678, align 4, !tbaa !5
  %2680 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2667, ptr noundef @.str.6, i32 noundef %2668, ptr noundef @.str.27, ptr noundef @.str.5, i32 noundef 105, ptr noundef %2671, ptr noundef %2674, ptr noundef %2677, i32 noundef %2679) #9
  br label %2698

2681:                                             ; preds = %2659, %2652
  %2682 = load i32, ptr %50, align 4, !tbaa !5
  %2683 = call ptr @__errno_location() #10
  store i32 %2682, ptr %2683, align 4, !tbaa !5
  %2684 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2685 = load i32, ptr @test_count, align 4, !tbaa !5
  %2686 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2687 = load i32, ptr %2686, align 4, !tbaa !5
  %2688 = call ptr @s2n_strerror(i32 noundef %2687, ptr noundef @.str.8)
  %2689 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2690 = load i32, ptr %2689, align 4, !tbaa !5
  %2691 = call ptr @s2n_strerror_debug(i32 noundef %2690, ptr noundef @.str.8)
  %2692 = call ptr @__errno_location() #10
  %2693 = load i32, ptr %2692, align 4, !tbaa !5
  %2694 = call ptr @strerror(i32 noundef %2693) #9
  %2695 = call ptr @__errno_location() #10
  %2696 = load i32, ptr %2695, align 4, !tbaa !5
  %2697 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2684, ptr noundef @.str.9, i32 noundef %2685, ptr noundef @.str.27, ptr noundef @.str.5, i32 noundef 105, ptr noundef %2688, ptr noundef %2691, ptr noundef %2694, i32 noundef %2696) #9
  br label %2698

2698:                                             ; preds = %2681, %2664
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  br label %2699

2699:                                             ; preds = %2698
  br label %2700

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

2701:                                             ; No predecessors!
  br label %2702

2702:                                             ; preds = %2701
  br label %2703

2703:                                             ; preds = %2702, %2636
  br label %2704

2704:                                             ; preds = %2703
  br label %2705

2705:                                             ; preds = %2704
  br label %2706

2706:                                             ; preds = %2705
  %2707 = load i32, ptr @test_count, align 4, !tbaa !5
  %2708 = add nsw i32 %2707, 1
  store i32 %2708, ptr @test_count, align 4, !tbaa !5
  %2709 = load ptr, ptr %29, align 8, !tbaa !9
  %2710 = call i32 @s2n_connection_free(ptr noundef %2709)
  %2711 = icmp eq i32 %2710, -1
  br i1 %2711, label %2712, label %2765

2712:                                             ; preds = %2706
  br label %2713

2713:                                             ; preds = %2712
  br label %2714

2714:                                             ; preds = %2713
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  %2715 = call ptr @__errno_location() #10
  %2716 = load i32, ptr %2715, align 4, !tbaa !5
  store i32 %2716, ptr %51, align 4, !tbaa !5
  %2717 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2718 = call i32 @s2n_print_stacktrace(ptr noundef %2717)
  %2719 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2720 = trunc i8 %2719 to i1
  br i1 %2720, label %2721, label %2743

2721:                                             ; preds = %2714
  %2722 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2723 = call i32 @fileno(ptr noundef %2722) #9
  %2724 = call i32 @isatty(i32 noundef %2723) #9
  %2725 = icmp ne i32 %2724, 0
  br i1 %2725, label %2726, label %2743

2726:                                             ; preds = %2721
  %2727 = load i32, ptr %51, align 4, !tbaa !5
  %2728 = call ptr @__errno_location() #10
  store i32 %2727, ptr %2728, align 4, !tbaa !5
  %2729 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2730 = load i32, ptr @test_count, align 4, !tbaa !5
  %2731 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2732 = load i32, ptr %2731, align 4, !tbaa !5
  %2733 = call ptr @s2n_strerror(i32 noundef %2732, ptr noundef @.str.8)
  %2734 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2735 = load i32, ptr %2734, align 4, !tbaa !5
  %2736 = call ptr @s2n_strerror_debug(i32 noundef %2735, ptr noundef @.str.8)
  %2737 = call ptr @__errno_location() #10
  %2738 = load i32, ptr %2737, align 4, !tbaa !5
  %2739 = call ptr @strerror(i32 noundef %2738) #9
  %2740 = call ptr @__errno_location() #10
  %2741 = load i32, ptr %2740, align 4, !tbaa !5
  %2742 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2729, ptr noundef @.str.6, i32 noundef %2730, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 106, ptr noundef %2733, ptr noundef %2736, ptr noundef %2739, i32 noundef %2741) #9
  br label %2760

2743:                                             ; preds = %2721, %2714
  %2744 = load i32, ptr %51, align 4, !tbaa !5
  %2745 = call ptr @__errno_location() #10
  store i32 %2744, ptr %2745, align 4, !tbaa !5
  %2746 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2747 = load i32, ptr @test_count, align 4, !tbaa !5
  %2748 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2749 = load i32, ptr %2748, align 4, !tbaa !5
  %2750 = call ptr @s2n_strerror(i32 noundef %2749, ptr noundef @.str.8)
  %2751 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2752 = load i32, ptr %2751, align 4, !tbaa !5
  %2753 = call ptr @s2n_strerror_debug(i32 noundef %2752, ptr noundef @.str.8)
  %2754 = call ptr @__errno_location() #10
  %2755 = load i32, ptr %2754, align 4, !tbaa !5
  %2756 = call ptr @strerror(i32 noundef %2755) #9
  %2757 = call ptr @__errno_location() #10
  %2758 = load i32, ptr %2757, align 4, !tbaa !5
  %2759 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2746, ptr noundef @.str.9, i32 noundef %2747, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 106, ptr noundef %2750, ptr noundef %2753, ptr noundef %2756, i32 noundef %2758) #9
  br label %2760

2760:                                             ; preds = %2743, %2726
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %2761

2761:                                             ; preds = %2760
  br label %2762

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

2763:                                             ; No predecessors!
  br label %2764

2764:                                             ; preds = %2763
  br label %2765

2765:                                             ; preds = %2764, %2706
  br label %2766

2766:                                             ; preds = %2765
  br label %2767

2767:                                             ; preds = %2766
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  store ptr null, ptr %52, align 8, !tbaa !9
  br label %2768

2768:                                             ; preds = %2767
  %2769 = load i32, ptr @test_count, align 4, !tbaa !5
  %2770 = add nsw i32 %2769, 1
  store i32 %2770, ptr @test_count, align 4, !tbaa !5
  %2771 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %2771, ptr %52, align 8, !tbaa !9
  %2772 = icmp eq ptr %2771, null
  br i1 %2772, label %2773, label %2826

2773:                                             ; preds = %2768
  br label %2774

2774:                                             ; preds = %2773
  br label %2775

2775:                                             ; preds = %2774
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  %2776 = call ptr @__errno_location() #10
  %2777 = load i32, ptr %2776, align 4, !tbaa !5
  store i32 %2777, ptr %53, align 4, !tbaa !5
  %2778 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2779 = call i32 @s2n_print_stacktrace(ptr noundef %2778)
  %2780 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2781 = trunc i8 %2780 to i1
  br i1 %2781, label %2782, label %2804

2782:                                             ; preds = %2775
  %2783 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2784 = call i32 @fileno(ptr noundef %2783) #9
  %2785 = call i32 @isatty(i32 noundef %2784) #9
  %2786 = icmp ne i32 %2785, 0
  br i1 %2786, label %2787, label %2804

2787:                                             ; preds = %2782
  %2788 = load i32, ptr %53, align 4, !tbaa !5
  %2789 = call ptr @__errno_location() #10
  store i32 %2788, ptr %2789, align 4, !tbaa !5
  %2790 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2791 = load i32, ptr @test_count, align 4, !tbaa !5
  %2792 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2793 = load i32, ptr %2792, align 4, !tbaa !5
  %2794 = call ptr @s2n_strerror(i32 noundef %2793, ptr noundef @.str.8)
  %2795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2796 = load i32, ptr %2795, align 4, !tbaa !5
  %2797 = call ptr @s2n_strerror_debug(i32 noundef %2796, ptr noundef @.str.8)
  %2798 = call ptr @__errno_location() #10
  %2799 = load i32, ptr %2798, align 4, !tbaa !5
  %2800 = call ptr @strerror(i32 noundef %2799) #9
  %2801 = call ptr @__errno_location() #10
  %2802 = load i32, ptr %2801, align 4, !tbaa !5
  %2803 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2790, ptr noundef @.str.6, i32 noundef %2791, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 113, ptr noundef %2794, ptr noundef %2797, ptr noundef %2800, i32 noundef %2802) #9
  br label %2821

2804:                                             ; preds = %2782, %2775
  %2805 = load i32, ptr %53, align 4, !tbaa !5
  %2806 = call ptr @__errno_location() #10
  store i32 %2805, ptr %2806, align 4, !tbaa !5
  %2807 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2808 = load i32, ptr @test_count, align 4, !tbaa !5
  %2809 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2810 = load i32, ptr %2809, align 4, !tbaa !5
  %2811 = call ptr @s2n_strerror(i32 noundef %2810, ptr noundef @.str.8)
  %2812 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2813 = load i32, ptr %2812, align 4, !tbaa !5
  %2814 = call ptr @s2n_strerror_debug(i32 noundef %2813, ptr noundef @.str.8)
  %2815 = call ptr @__errno_location() #10
  %2816 = load i32, ptr %2815, align 4, !tbaa !5
  %2817 = call ptr @strerror(i32 noundef %2816) #9
  %2818 = call ptr @__errno_location() #10
  %2819 = load i32, ptr %2818, align 4, !tbaa !5
  %2820 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2807, ptr noundef @.str.9, i32 noundef %2808, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 113, ptr noundef %2811, ptr noundef %2814, ptr noundef %2817, i32 noundef %2819) #9
  br label %2821

2821:                                             ; preds = %2804, %2787
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %2822

2822:                                             ; preds = %2821
  br label %2823

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

2824:                                             ; No predecessors!
  br label %2825

2825:                                             ; preds = %2824
  br label %2826

2826:                                             ; preds = %2825, %2768
  br label %2827

2827:                                             ; preds = %2826
  br label %2828

2828:                                             ; preds = %2827
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  store ptr null, ptr %54, align 8, !tbaa !9
  br label %2829

2829:                                             ; preds = %2828
  %2830 = load i32, ptr @test_count, align 4, !tbaa !5
  %2831 = add nsw i32 %2830, 1
  store i32 %2831, ptr @test_count, align 4, !tbaa !5
  %2832 = load ptr, ptr %52, align 8, !tbaa !9
  %2833 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %2832, ptr noundef %54)
  %2834 = icmp eq i32 %2833, -1
  br i1 %2834, label %2835, label %2888

2835:                                             ; preds = %2829
  br label %2836

2836:                                             ; preds = %2835
  br label %2837

2837:                                             ; preds = %2836
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  %2838 = call ptr @__errno_location() #10
  %2839 = load i32, ptr %2838, align 4, !tbaa !5
  store i32 %2839, ptr %55, align 4, !tbaa !5
  %2840 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2841 = call i32 @s2n_print_stacktrace(ptr noundef %2840)
  %2842 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2843 = trunc i8 %2842 to i1
  br i1 %2843, label %2844, label %2866

2844:                                             ; preds = %2837
  %2845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2846 = call i32 @fileno(ptr noundef %2845) #9
  %2847 = call i32 @isatty(i32 noundef %2846) #9
  %2848 = icmp ne i32 %2847, 0
  br i1 %2848, label %2849, label %2866

2849:                                             ; preds = %2844
  %2850 = load i32, ptr %55, align 4, !tbaa !5
  %2851 = call ptr @__errno_location() #10
  store i32 %2850, ptr %2851, align 4, !tbaa !5
  %2852 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2853 = load i32, ptr @test_count, align 4, !tbaa !5
  %2854 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2855 = load i32, ptr %2854, align 4, !tbaa !5
  %2856 = call ptr @s2n_strerror(i32 noundef %2855, ptr noundef @.str.8)
  %2857 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2858 = load i32, ptr %2857, align 4, !tbaa !5
  %2859 = call ptr @s2n_strerror_debug(i32 noundef %2858, ptr noundef @.str.8)
  %2860 = call ptr @__errno_location() #10
  %2861 = load i32, ptr %2860, align 4, !tbaa !5
  %2862 = call ptr @strerror(i32 noundef %2861) #9
  %2863 = call ptr @__errno_location() #10
  %2864 = load i32, ptr %2863, align 4, !tbaa !5
  %2865 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2852, ptr noundef @.str.6, i32 noundef %2853, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 116, ptr noundef %2856, ptr noundef %2859, ptr noundef %2862, i32 noundef %2864) #9
  br label %2883

2866:                                             ; preds = %2844, %2837
  %2867 = load i32, ptr %55, align 4, !tbaa !5
  %2868 = call ptr @__errno_location() #10
  store i32 %2867, ptr %2868, align 4, !tbaa !5
  %2869 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2870 = load i32, ptr @test_count, align 4, !tbaa !5
  %2871 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2872 = load i32, ptr %2871, align 4, !tbaa !5
  %2873 = call ptr @s2n_strerror(i32 noundef %2872, ptr noundef @.str.8)
  %2874 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2875 = load i32, ptr %2874, align 4, !tbaa !5
  %2876 = call ptr @s2n_strerror_debug(i32 noundef %2875, ptr noundef @.str.8)
  %2877 = call ptr @__errno_location() #10
  %2878 = load i32, ptr %2877, align 4, !tbaa !5
  %2879 = call ptr @strerror(i32 noundef %2878) #9
  %2880 = call ptr @__errno_location() #10
  %2881 = load i32, ptr %2880, align 4, !tbaa !5
  %2882 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2869, ptr noundef @.str.9, i32 noundef %2870, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 116, ptr noundef %2873, ptr noundef %2876, ptr noundef %2879, i32 noundef %2881) #9
  br label %2883

2883:                                             ; preds = %2866, %2849
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %2884

2884:                                             ; preds = %2883
  br label %2885

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

2886:                                             ; No predecessors!
  br label %2887

2887:                                             ; preds = %2886
  br label %2888

2888:                                             ; preds = %2887, %2829
  br label %2889

2889:                                             ; preds = %2888
  br label %2890

2890:                                             ; preds = %2889
  br label %2891

2891:                                             ; preds = %2890
  %2892 = load i32, ptr @test_count, align 4, !tbaa !5
  %2893 = add nsw i32 %2892, 1
  store i32 %2893, ptr @test_count, align 4, !tbaa !5
  %2894 = load ptr, ptr %54, align 8, !tbaa !9
  %2895 = icmp eq ptr %2894, null
  br i1 %2895, label %2896, label %2949

2896:                                             ; preds = %2891
  br label %2897

2897:                                             ; preds = %2896
  br label %2898

2898:                                             ; preds = %2897
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  %2899 = call ptr @__errno_location() #10
  %2900 = load i32, ptr %2899, align 4, !tbaa !5
  store i32 %2900, ptr %56, align 4, !tbaa !5
  %2901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2902 = call i32 @s2n_print_stacktrace(ptr noundef %2901)
  %2903 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2904 = trunc i8 %2903 to i1
  br i1 %2904, label %2905, label %2927

2905:                                             ; preds = %2898
  %2906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2907 = call i32 @fileno(ptr noundef %2906) #9
  %2908 = call i32 @isatty(i32 noundef %2907) #9
  %2909 = icmp ne i32 %2908, 0
  br i1 %2909, label %2910, label %2927

2910:                                             ; preds = %2905
  %2911 = load i32, ptr %56, align 4, !tbaa !5
  %2912 = call ptr @__errno_location() #10
  store i32 %2911, ptr %2912, align 4, !tbaa !5
  %2913 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2914 = load i32, ptr @test_count, align 4, !tbaa !5
  %2915 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2916 = load i32, ptr %2915, align 4, !tbaa !5
  %2917 = call ptr @s2n_strerror(i32 noundef %2916, ptr noundef @.str.8)
  %2918 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2919 = load i32, ptr %2918, align 4, !tbaa !5
  %2920 = call ptr @s2n_strerror_debug(i32 noundef %2919, ptr noundef @.str.8)
  %2921 = call ptr @__errno_location() #10
  %2922 = load i32, ptr %2921, align 4, !tbaa !5
  %2923 = call ptr @strerror(i32 noundef %2922) #9
  %2924 = call ptr @__errno_location() #10
  %2925 = load i32, ptr %2924, align 4, !tbaa !5
  %2926 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2913, ptr noundef @.str.6, i32 noundef %2914, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 117, ptr noundef %2917, ptr noundef %2920, ptr noundef %2923, i32 noundef %2925) #9
  br label %2944

2927:                                             ; preds = %2905, %2898
  %2928 = load i32, ptr %56, align 4, !tbaa !5
  %2929 = call ptr @__errno_location() #10
  store i32 %2928, ptr %2929, align 4, !tbaa !5
  %2930 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2931 = load i32, ptr @test_count, align 4, !tbaa !5
  %2932 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2933 = load i32, ptr %2932, align 4, !tbaa !5
  %2934 = call ptr @s2n_strerror(i32 noundef %2933, ptr noundef @.str.8)
  %2935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2936 = load i32, ptr %2935, align 4, !tbaa !5
  %2937 = call ptr @s2n_strerror_debug(i32 noundef %2936, ptr noundef @.str.8)
  %2938 = call ptr @__errno_location() #10
  %2939 = load i32, ptr %2938, align 4, !tbaa !5
  %2940 = call ptr @strerror(i32 noundef %2939) #9
  %2941 = call ptr @__errno_location() #10
  %2942 = load i32, ptr %2941, align 4, !tbaa !5
  %2943 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2930, ptr noundef @.str.9, i32 noundef %2931, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 117, ptr noundef %2934, ptr noundef %2937, ptr noundef %2940, i32 noundef %2942) #9
  br label %2944

2944:                                             ; preds = %2927, %2910
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  br label %2945

2945:                                             ; preds = %2944
  br label %2946

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

2947:                                             ; No predecessors!
  br label %2948

2948:                                             ; preds = %2947
  br label %2949

2949:                                             ; preds = %2948, %2891
  br label %2950

2950:                                             ; preds = %2949
  br label %2951

2951:                                             ; preds = %2950
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  store ptr null, ptr %57, align 8, !tbaa !9
  br label %2952

2952:                                             ; preds = %2951
  %2953 = load i32, ptr @test_count, align 4, !tbaa !5
  %2954 = add nsw i32 %2953, 1
  store i32 %2954, ptr @test_count, align 4, !tbaa !5
  %2955 = load ptr, ptr %52, align 8, !tbaa !9
  %2956 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %2955, ptr noundef %57)
  %2957 = icmp eq i32 %2956, -1
  br i1 %2957, label %2958, label %3011

2958:                                             ; preds = %2952
  br label %2959

2959:                                             ; preds = %2958
  br label %2960

2960:                                             ; preds = %2959
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  %2961 = call ptr @__errno_location() #10
  %2962 = load i32, ptr %2961, align 4, !tbaa !5
  store i32 %2962, ptr %58, align 4, !tbaa !5
  %2963 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2964 = call i32 @s2n_print_stacktrace(ptr noundef %2963)
  %2965 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2966 = trunc i8 %2965 to i1
  br i1 %2966, label %2967, label %2989

2967:                                             ; preds = %2960
  %2968 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2969 = call i32 @fileno(ptr noundef %2968) #9
  %2970 = call i32 @isatty(i32 noundef %2969) #9
  %2971 = icmp ne i32 %2970, 0
  br i1 %2971, label %2972, label %2989

2972:                                             ; preds = %2967
  %2973 = load i32, ptr %58, align 4, !tbaa !5
  %2974 = call ptr @__errno_location() #10
  store i32 %2973, ptr %2974, align 4, !tbaa !5
  %2975 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2976 = load i32, ptr @test_count, align 4, !tbaa !5
  %2977 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2978 = load i32, ptr %2977, align 4, !tbaa !5
  %2979 = call ptr @s2n_strerror(i32 noundef %2978, ptr noundef @.str.8)
  %2980 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2981 = load i32, ptr %2980, align 4, !tbaa !5
  %2982 = call ptr @s2n_strerror_debug(i32 noundef %2981, ptr noundef @.str.8)
  %2983 = call ptr @__errno_location() #10
  %2984 = load i32, ptr %2983, align 4, !tbaa !5
  %2985 = call ptr @strerror(i32 noundef %2984) #9
  %2986 = call ptr @__errno_location() #10
  %2987 = load i32, ptr %2986, align 4, !tbaa !5
  %2988 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2975, ptr noundef @.str.6, i32 noundef %2976, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 120, ptr noundef %2979, ptr noundef %2982, ptr noundef %2985, i32 noundef %2987) #9
  br label %3006

2989:                                             ; preds = %2967, %2960
  %2990 = load i32, ptr %58, align 4, !tbaa !5
  %2991 = call ptr @__errno_location() #10
  store i32 %2990, ptr %2991, align 4, !tbaa !5
  %2992 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2993 = load i32, ptr @test_count, align 4, !tbaa !5
  %2994 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2995 = load i32, ptr %2994, align 4, !tbaa !5
  %2996 = call ptr @s2n_strerror(i32 noundef %2995, ptr noundef @.str.8)
  %2997 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2998 = load i32, ptr %2997, align 4, !tbaa !5
  %2999 = call ptr @s2n_strerror_debug(i32 noundef %2998, ptr noundef @.str.8)
  %3000 = call ptr @__errno_location() #10
  %3001 = load i32, ptr %3000, align 4, !tbaa !5
  %3002 = call ptr @strerror(i32 noundef %3001) #9
  %3003 = call ptr @__errno_location() #10
  %3004 = load i32, ptr %3003, align 4, !tbaa !5
  %3005 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2992, ptr noundef @.str.9, i32 noundef %2993, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 120, ptr noundef %2996, ptr noundef %2999, ptr noundef %3002, i32 noundef %3004) #9
  br label %3006

3006:                                             ; preds = %2989, %2972
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  br label %3007

3007:                                             ; preds = %3006
  br label %3008

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

3009:                                             ; No predecessors!
  br label %3010

3010:                                             ; preds = %3009
  br label %3011

3011:                                             ; preds = %3010, %2952
  br label %3012

3012:                                             ; preds = %3011
  br label %3013

3013:                                             ; preds = %3012
  br label %3014

3014:                                             ; preds = %3013
  %3015 = load i32, ptr @test_count, align 4, !tbaa !5
  %3016 = add nsw i32 %3015, 1
  store i32 %3016, ptr @test_count, align 4, !tbaa !5
  %3017 = load ptr, ptr %57, align 8, !tbaa !9
  %3018 = icmp eq ptr %3017, null
  br i1 %3018, label %3019, label %3072

3019:                                             ; preds = %3014
  br label %3020

3020:                                             ; preds = %3019
  br label %3021

3021:                                             ; preds = %3020
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #9
  %3022 = call ptr @__errno_location() #10
  %3023 = load i32, ptr %3022, align 4, !tbaa !5
  store i32 %3023, ptr %59, align 4, !tbaa !5
  %3024 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3025 = call i32 @s2n_print_stacktrace(ptr noundef %3024)
  %3026 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3027 = trunc i8 %3026 to i1
  br i1 %3027, label %3028, label %3050

3028:                                             ; preds = %3021
  %3029 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3030 = call i32 @fileno(ptr noundef %3029) #9
  %3031 = call i32 @isatty(i32 noundef %3030) #9
  %3032 = icmp ne i32 %3031, 0
  br i1 %3032, label %3033, label %3050

3033:                                             ; preds = %3028
  %3034 = load i32, ptr %59, align 4, !tbaa !5
  %3035 = call ptr @__errno_location() #10
  store i32 %3034, ptr %3035, align 4, !tbaa !5
  %3036 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3037 = load i32, ptr @test_count, align 4, !tbaa !5
  %3038 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3039 = load i32, ptr %3038, align 4, !tbaa !5
  %3040 = call ptr @s2n_strerror(i32 noundef %3039, ptr noundef @.str.8)
  %3041 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3042 = load i32, ptr %3041, align 4, !tbaa !5
  %3043 = call ptr @s2n_strerror_debug(i32 noundef %3042, ptr noundef @.str.8)
  %3044 = call ptr @__errno_location() #10
  %3045 = load i32, ptr %3044, align 4, !tbaa !5
  %3046 = call ptr @strerror(i32 noundef %3045) #9
  %3047 = call ptr @__errno_location() #10
  %3048 = load i32, ptr %3047, align 4, !tbaa !5
  %3049 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3036, ptr noundef @.str.6, i32 noundef %3037, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 121, ptr noundef %3040, ptr noundef %3043, ptr noundef %3046, i32 noundef %3048) #9
  br label %3067

3050:                                             ; preds = %3028, %3021
  %3051 = load i32, ptr %59, align 4, !tbaa !5
  %3052 = call ptr @__errno_location() #10
  store i32 %3051, ptr %3052, align 4, !tbaa !5
  %3053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3054 = load i32, ptr @test_count, align 4, !tbaa !5
  %3055 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3056 = load i32, ptr %3055, align 4, !tbaa !5
  %3057 = call ptr @s2n_strerror(i32 noundef %3056, ptr noundef @.str.8)
  %3058 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3059 = load i32, ptr %3058, align 4, !tbaa !5
  %3060 = call ptr @s2n_strerror_debug(i32 noundef %3059, ptr noundef @.str.8)
  %3061 = call ptr @__errno_location() #10
  %3062 = load i32, ptr %3061, align 4, !tbaa !5
  %3063 = call ptr @strerror(i32 noundef %3062) #9
  %3064 = call ptr @__errno_location() #10
  %3065 = load i32, ptr %3064, align 4, !tbaa !5
  %3066 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3053, ptr noundef @.str.9, i32 noundef %3054, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 121, ptr noundef %3057, ptr noundef %3060, ptr noundef %3063, i32 noundef %3065) #9
  br label %3067

3067:                                             ; preds = %3050, %3033
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  br label %3068

3068:                                             ; preds = %3067
  br label %3069

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

3070:                                             ; No predecessors!
  br label %3071

3071:                                             ; preds = %3070
  br label %3072

3072:                                             ; preds = %3071, %3014
  br label %3073

3073:                                             ; preds = %3072
  br label %3074

3074:                                             ; preds = %3073
  br label %3075

3075:                                             ; preds = %3074
  %3076 = load i32, ptr @test_count, align 4, !tbaa !5
  %3077 = add nsw i32 %3076, 1
  store i32 %3077, ptr @test_count, align 4, !tbaa !5
  %3078 = load ptr, ptr %57, align 8, !tbaa !9
  %3079 = icmp eq ptr %3078, @kem_preferences_null
  br i1 %3079, label %3133, label %3080

3080:                                             ; preds = %3075
  br label %3081

3081:                                             ; preds = %3080
  br label %3082

3082:                                             ; preds = %3081
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #9
  %3083 = call ptr @__errno_location() #10
  %3084 = load i32, ptr %3083, align 4, !tbaa !5
  store i32 %3084, ptr %60, align 4, !tbaa !5
  %3085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3086 = call i32 @s2n_print_stacktrace(ptr noundef %3085)
  %3087 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3088 = trunc i8 %3087 to i1
  br i1 %3088, label %3089, label %3111

3089:                                             ; preds = %3082
  %3090 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3091 = call i32 @fileno(ptr noundef %3090) #9
  %3092 = call i32 @isatty(i32 noundef %3091) #9
  %3093 = icmp ne i32 %3092, 0
  br i1 %3093, label %3094, label %3111

3094:                                             ; preds = %3089
  %3095 = load i32, ptr %60, align 4, !tbaa !5
  %3096 = call ptr @__errno_location() #10
  store i32 %3095, ptr %3096, align 4, !tbaa !5
  %3097 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3098 = load i32, ptr @test_count, align 4, !tbaa !5
  %3099 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3100 = load i32, ptr %3099, align 4, !tbaa !5
  %3101 = call ptr @s2n_strerror(i32 noundef %3100, ptr noundef @.str.8)
  %3102 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3103 = load i32, ptr %3102, align 4, !tbaa !5
  %3104 = call ptr @s2n_strerror_debug(i32 noundef %3103, ptr noundef @.str.8)
  %3105 = call ptr @__errno_location() #10
  %3106 = load i32, ptr %3105, align 4, !tbaa !5
  %3107 = call ptr @strerror(i32 noundef %3106) #9
  %3108 = call ptr @__errno_location() #10
  %3109 = load i32, ptr %3108, align 4, !tbaa !5
  %3110 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3097, ptr noundef @.str.6, i32 noundef %3098, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 122, ptr noundef %3101, ptr noundef %3104, ptr noundef %3107, i32 noundef %3109) #9
  br label %3128

3111:                                             ; preds = %3089, %3082
  %3112 = load i32, ptr %60, align 4, !tbaa !5
  %3113 = call ptr @__errno_location() #10
  store i32 %3112, ptr %3113, align 4, !tbaa !5
  %3114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3115 = load i32, ptr @test_count, align 4, !tbaa !5
  %3116 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3117 = load i32, ptr %3116, align 4, !tbaa !5
  %3118 = call ptr @s2n_strerror(i32 noundef %3117, ptr noundef @.str.8)
  %3119 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3120 = load i32, ptr %3119, align 4, !tbaa !5
  %3121 = call ptr @s2n_strerror_debug(i32 noundef %3120, ptr noundef @.str.8)
  %3122 = call ptr @__errno_location() #10
  %3123 = load i32, ptr %3122, align 4, !tbaa !5
  %3124 = call ptr @strerror(i32 noundef %3123) #9
  %3125 = call ptr @__errno_location() #10
  %3126 = load i32, ptr %3125, align 4, !tbaa !5
  %3127 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3114, ptr noundef @.str.9, i32 noundef %3115, ptr noundef @.str.18, ptr noundef @.str.5, i32 noundef 122, ptr noundef %3118, ptr noundef %3121, ptr noundef %3124, i32 noundef %3126) #9
  br label %3128

3128:                                             ; preds = %3111, %3094
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  br label %3129

3129:                                             ; preds = %3128
  br label %3130

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

3131:                                             ; No predecessors!
  br label %3132

3132:                                             ; preds = %3131
  br label %3133

3133:                                             ; preds = %3132, %3075
  br label %3134

3134:                                             ; preds = %3133
  br label %3135

3135:                                             ; preds = %3134
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  store i64 0, ptr %61, align 8, !tbaa !15
  br label %3136

3136:                                             ; preds = %3156, %3135
  %3137 = load i64, ptr %61, align 8, !tbaa !15
  %3138 = load ptr, ptr %54, align 8, !tbaa !9
  %3139 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %3138, i32 0, i32 0
  %3140 = load i8, ptr %3139, align 8, !tbaa !17
  %3141 = zext i8 %3140 to i64
  %3142 = icmp ult i64 %3137, %3141
  br i1 %3142, label %3144, label %3143

3143:                                             ; preds = %3136
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  br label %3159

3144:                                             ; preds = %3136
  %3145 = load ptr, ptr %54, align 8, !tbaa !9
  %3146 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %3145, i32 0, i32 1
  %3147 = load ptr, ptr %3146, align 8, !tbaa !55
  %3148 = load i64, ptr %61, align 8, !tbaa !15
  %3149 = getelementptr inbounds ptr, ptr %3147, i64 %3148
  %3150 = load ptr, ptr %3149, align 8, !tbaa !9
  %3151 = load ptr, ptr %52, align 8, !tbaa !9
  %3152 = getelementptr inbounds %struct.s2n_connection, ptr %3151, i32 0, i32 31
  %3153 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %3152, i32 0, i32 2
  %3154 = load i64, ptr %61, align 8, !tbaa !15
  %3155 = getelementptr inbounds [4 x ptr], ptr %3153, i64 0, i64 %3154
  store ptr %3150, ptr %3155, align 8, !tbaa !9
  br label %3156

3156:                                             ; preds = %3144
  %3157 = load i64, ptr %61, align 8, !tbaa !15
  %3158 = add i64 %3157, 1
  store i64 %3158, ptr %61, align 8, !tbaa !15
  br label %3136, !llvm.loop !56

3159:                                             ; preds = %3143
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #9
  store i64 0, ptr %62, align 8, !tbaa !15
  br label %3160

3160:                                             ; preds = %3235, %3159
  %3161 = load i64, ptr %62, align 8, !tbaa !15
  %3162 = load ptr, ptr %57, align 8, !tbaa !9
  %3163 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %3162, i32 0, i32 2
  %3164 = load i8, ptr %3163, align 8, !tbaa !21
  %3165 = zext i8 %3164 to i64
  %3166 = icmp ult i64 %3161, %3165
  br i1 %3166, label %3168, label %3167

3167:                                             ; preds = %3160
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  br label %3238

3168:                                             ; preds = %3160
  br label %3169

3169:                                             ; preds = %3168
  %3170 = load i32, ptr @test_count, align 4, !tbaa !5
  %3171 = add nsw i32 %3170, 1
  store i32 %3171, ptr @test_count, align 4, !tbaa !5
  %3172 = load ptr, ptr %52, align 8, !tbaa !9
  %3173 = getelementptr inbounds %struct.s2n_connection, ptr %3172, i32 0, i32 31
  %3174 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %3173, i32 0, i32 6
  %3175 = load i64, ptr %62, align 8, !tbaa !15
  %3176 = getelementptr inbounds [8 x ptr], ptr %3174, i64 0, i64 %3175
  %3177 = load ptr, ptr %3176, align 8, !tbaa !9
  %3178 = icmp eq ptr %3177, null
  br i1 %3178, label %3232, label %3179

3179:                                             ; preds = %3169
  br label %3180

3180:                                             ; preds = %3179
  br label %3181

3181:                                             ; preds = %3180
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  %3182 = call ptr @__errno_location() #10
  %3183 = load i32, ptr %3182, align 4, !tbaa !5
  store i32 %3183, ptr %63, align 4, !tbaa !5
  %3184 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3185 = call i32 @s2n_print_stacktrace(ptr noundef %3184)
  %3186 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3187 = trunc i8 %3186 to i1
  br i1 %3187, label %3188, label %3210

3188:                                             ; preds = %3181
  %3189 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3190 = call i32 @fileno(ptr noundef %3189) #9
  %3191 = call i32 @isatty(i32 noundef %3190) #9
  %3192 = icmp ne i32 %3191, 0
  br i1 %3192, label %3193, label %3210

3193:                                             ; preds = %3188
  %3194 = load i32, ptr %63, align 4, !tbaa !5
  %3195 = call ptr @__errno_location() #10
  store i32 %3194, ptr %3195, align 4, !tbaa !5
  %3196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3197 = load i32, ptr @test_count, align 4, !tbaa !5
  %3198 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3199 = load i32, ptr %3198, align 4, !tbaa !5
  %3200 = call ptr @s2n_strerror(i32 noundef %3199, ptr noundef @.str.8)
  %3201 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3202 = load i32, ptr %3201, align 4, !tbaa !5
  %3203 = call ptr @s2n_strerror_debug(i32 noundef %3202, ptr noundef @.str.8)
  %3204 = call ptr @__errno_location() #10
  %3205 = load i32, ptr %3204, align 4, !tbaa !5
  %3206 = call ptr @strerror(i32 noundef %3205) #9
  %3207 = call ptr @__errno_location() #10
  %3208 = load i32, ptr %3207, align 4, !tbaa !5
  %3209 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3196, ptr noundef @.str.6, i32 noundef %3197, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 129, ptr noundef %3200, ptr noundef %3203, ptr noundef %3206, i32 noundef %3208) #9
  br label %3227

3210:                                             ; preds = %3188, %3181
  %3211 = load i32, ptr %63, align 4, !tbaa !5
  %3212 = call ptr @__errno_location() #10
  store i32 %3211, ptr %3212, align 4, !tbaa !5
  %3213 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3214 = load i32, ptr @test_count, align 4, !tbaa !5
  %3215 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3216 = load i32, ptr %3215, align 4, !tbaa !5
  %3217 = call ptr @s2n_strerror(i32 noundef %3216, ptr noundef @.str.8)
  %3218 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3219 = load i32, ptr %3218, align 4, !tbaa !5
  %3220 = call ptr @s2n_strerror_debug(i32 noundef %3219, ptr noundef @.str.8)
  %3221 = call ptr @__errno_location() #10
  %3222 = load i32, ptr %3221, align 4, !tbaa !5
  %3223 = call ptr @strerror(i32 noundef %3222) #9
  %3224 = call ptr @__errno_location() #10
  %3225 = load i32, ptr %3224, align 4, !tbaa !5
  %3226 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3213, ptr noundef @.str.9, i32 noundef %3214, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 129, ptr noundef %3217, ptr noundef %3220, ptr noundef %3223, i32 noundef %3225) #9
  br label %3227

3227:                                             ; preds = %3210, %3193
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %3228

3228:                                             ; preds = %3227
  br label %3229

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

3230:                                             ; No predecessors!
  br label %3231

3231:                                             ; preds = %3230
  br label %3232

3232:                                             ; preds = %3231, %3169
  br label %3233

3233:                                             ; preds = %3232
  br label %3234

3234:                                             ; preds = %3233
  br label %3235

3235:                                             ; preds = %3234
  %3236 = load i64, ptr %62, align 8, !tbaa !15
  %3237 = add i64 %3236, 1
  store i64 %3237, ptr %62, align 8, !tbaa !15
  br label %3160, !llvm.loop !57

3238:                                             ; preds = %3167
  br label %3239

3239:                                             ; preds = %3238
  %3240 = load i32, ptr @test_count, align 4, !tbaa !5
  %3241 = add nsw i32 %3240, 1
  store i32 %3241, ptr @test_count, align 4, !tbaa !5
  %3242 = load ptr, ptr %52, align 8, !tbaa !9
  %3243 = call i32 @s2n_choose_supported_group(ptr noundef %3242)
  %3244 = icmp eq i32 %3243, -1
  br i1 %3244, label %3245, label %3298

3245:                                             ; preds = %3239
  br label %3246

3246:                                             ; preds = %3245
  br label %3247

3247:                                             ; preds = %3246
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #9
  %3248 = call ptr @__errno_location() #10
  %3249 = load i32, ptr %3248, align 4, !tbaa !5
  store i32 %3249, ptr %64, align 4, !tbaa !5
  %3250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3251 = call i32 @s2n_print_stacktrace(ptr noundef %3250)
  %3252 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3253 = trunc i8 %3252 to i1
  br i1 %3253, label %3254, label %3276

3254:                                             ; preds = %3247
  %3255 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3256 = call i32 @fileno(ptr noundef %3255) #9
  %3257 = call i32 @isatty(i32 noundef %3256) #9
  %3258 = icmp ne i32 %3257, 0
  br i1 %3258, label %3259, label %3276

3259:                                             ; preds = %3254
  %3260 = load i32, ptr %64, align 4, !tbaa !5
  %3261 = call ptr @__errno_location() #10
  store i32 %3260, ptr %3261, align 4, !tbaa !5
  %3262 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3263 = load i32, ptr @test_count, align 4, !tbaa !5
  %3264 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3265 = load i32, ptr %3264, align 4, !tbaa !5
  %3266 = call ptr @s2n_strerror(i32 noundef %3265, ptr noundef @.str.8)
  %3267 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3268 = load i32, ptr %3267, align 4, !tbaa !5
  %3269 = call ptr @s2n_strerror_debug(i32 noundef %3268, ptr noundef @.str.8)
  %3270 = call ptr @__errno_location() #10
  %3271 = load i32, ptr %3270, align 4, !tbaa !5
  %3272 = call ptr @strerror(i32 noundef %3271) #9
  %3273 = call ptr @__errno_location() #10
  %3274 = load i32, ptr %3273, align 4, !tbaa !5
  %3275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3262, ptr noundef @.str.6, i32 noundef %3263, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 132, ptr noundef %3266, ptr noundef %3269, ptr noundef %3272, i32 noundef %3274) #9
  br label %3293

3276:                                             ; preds = %3254, %3247
  %3277 = load i32, ptr %64, align 4, !tbaa !5
  %3278 = call ptr @__errno_location() #10
  store i32 %3277, ptr %3278, align 4, !tbaa !5
  %3279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3280 = load i32, ptr @test_count, align 4, !tbaa !5
  %3281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3282 = load i32, ptr %3281, align 4, !tbaa !5
  %3283 = call ptr @s2n_strerror(i32 noundef %3282, ptr noundef @.str.8)
  %3284 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3285 = load i32, ptr %3284, align 4, !tbaa !5
  %3286 = call ptr @s2n_strerror_debug(i32 noundef %3285, ptr noundef @.str.8)
  %3287 = call ptr @__errno_location() #10
  %3288 = load i32, ptr %3287, align 4, !tbaa !5
  %3289 = call ptr @strerror(i32 noundef %3288) #9
  %3290 = call ptr @__errno_location() #10
  %3291 = load i32, ptr %3290, align 4, !tbaa !5
  %3292 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3279, ptr noundef @.str.9, i32 noundef %3280, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 132, ptr noundef %3283, ptr noundef %3286, ptr noundef %3289, i32 noundef %3291) #9
  br label %3293

3293:                                             ; preds = %3276, %3259
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #9
  br label %3294

3294:                                             ; preds = %3293
  br label %3295

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

3296:                                             ; No predecessors!
  br label %3297

3297:                                             ; preds = %3296
  br label %3298

3298:                                             ; preds = %3297, %3239
  br label %3299

3299:                                             ; preds = %3298
  br label %3300

3300:                                             ; preds = %3299
  br label %3301

3301:                                             ; preds = %3300
  %3302 = load i32, ptr @test_count, align 4, !tbaa !5
  %3303 = add nsw i32 %3302, 1
  store i32 %3303, ptr @test_count, align 4, !tbaa !5
  %3304 = load ptr, ptr %52, align 8, !tbaa !9
  %3305 = getelementptr inbounds %struct.s2n_connection, ptr %3304, i32 0, i32 31
  %3306 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %3305, i32 0, i32 4
  %3307 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %3306, i32 0, i32 0
  %3308 = load ptr, ptr %3307, align 8, !tbaa !24
  %3309 = icmp eq ptr %3308, null
  br i1 %3309, label %3363, label %3310

3310:                                             ; preds = %3301
  br label %3311

3311:                                             ; preds = %3310
  br label %3312

3312:                                             ; preds = %3311
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #9
  %3313 = call ptr @__errno_location() #10
  %3314 = load i32, ptr %3313, align 4, !tbaa !5
  store i32 %3314, ptr %65, align 4, !tbaa !5
  %3315 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3316 = call i32 @s2n_print_stacktrace(ptr noundef %3315)
  %3317 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3318 = trunc i8 %3317 to i1
  br i1 %3318, label %3319, label %3341

3319:                                             ; preds = %3312
  %3320 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3321 = call i32 @fileno(ptr noundef %3320) #9
  %3322 = call i32 @isatty(i32 noundef %3321) #9
  %3323 = icmp ne i32 %3322, 0
  br i1 %3323, label %3324, label %3341

3324:                                             ; preds = %3319
  %3325 = load i32, ptr %65, align 4, !tbaa !5
  %3326 = call ptr @__errno_location() #10
  store i32 %3325, ptr %3326, align 4, !tbaa !5
  %3327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3328 = load i32, ptr @test_count, align 4, !tbaa !5
  %3329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3330 = load i32, ptr %3329, align 4, !tbaa !5
  %3331 = call ptr @s2n_strerror(i32 noundef %3330, ptr noundef @.str.8)
  %3332 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3333 = load i32, ptr %3332, align 4, !tbaa !5
  %3334 = call ptr @s2n_strerror_debug(i32 noundef %3333, ptr noundef @.str.8)
  %3335 = call ptr @__errno_location() #10
  %3336 = load i32, ptr %3335, align 4, !tbaa !5
  %3337 = call ptr @strerror(i32 noundef %3336) #9
  %3338 = call ptr @__errno_location() #10
  %3339 = load i32, ptr %3338, align 4, !tbaa !5
  %3340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3327, ptr noundef @.str.6, i32 noundef %3328, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 134, ptr noundef %3331, ptr noundef %3334, ptr noundef %3337, i32 noundef %3339) #9
  br label %3358

3341:                                             ; preds = %3319, %3312
  %3342 = load i32, ptr %65, align 4, !tbaa !5
  %3343 = call ptr @__errno_location() #10
  store i32 %3342, ptr %3343, align 4, !tbaa !5
  %3344 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3345 = load i32, ptr @test_count, align 4, !tbaa !5
  %3346 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3347 = load i32, ptr %3346, align 4, !tbaa !5
  %3348 = call ptr @s2n_strerror(i32 noundef %3347, ptr noundef @.str.8)
  %3349 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3350 = load i32, ptr %3349, align 4, !tbaa !5
  %3351 = call ptr @s2n_strerror_debug(i32 noundef %3350, ptr noundef @.str.8)
  %3352 = call ptr @__errno_location() #10
  %3353 = load i32, ptr %3352, align 4, !tbaa !5
  %3354 = call ptr @strerror(i32 noundef %3353) #9
  %3355 = call ptr @__errno_location() #10
  %3356 = load i32, ptr %3355, align 4, !tbaa !5
  %3357 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3344, ptr noundef @.str.9, i32 noundef %3345, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 134, ptr noundef %3348, ptr noundef %3351, ptr noundef %3354, i32 noundef %3356) #9
  br label %3358

3358:                                             ; preds = %3341, %3324
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #9
  br label %3359

3359:                                             ; preds = %3358
  br label %3360

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

3361:                                             ; No predecessors!
  br label %3362

3362:                                             ; preds = %3361
  br label %3363

3363:                                             ; preds = %3362, %3301
  br label %3364

3364:                                             ; preds = %3363
  br label %3365

3365:                                             ; preds = %3364
  br label %3366

3366:                                             ; preds = %3365
  %3367 = load i32, ptr @test_count, align 4, !tbaa !5
  %3368 = add nsw i32 %3367, 1
  store i32 %3368, ptr @test_count, align 4, !tbaa !5
  %3369 = load ptr, ptr %52, align 8, !tbaa !9
  %3370 = getelementptr inbounds %struct.s2n_connection, ptr %3369, i32 0, i32 31
  %3371 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %3370, i32 0, i32 4
  %3372 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %3371, i32 0, i32 2
  %3373 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %3372, i32 0, i32 0
  %3374 = load ptr, ptr %3373, align 8, !tbaa !50
  %3375 = icmp eq ptr %3374, null
  br i1 %3375, label %3429, label %3376

3376:                                             ; preds = %3366
  br label %3377

3377:                                             ; preds = %3376
  br label %3378

3378:                                             ; preds = %3377
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #9
  %3379 = call ptr @__errno_location() #10
  %3380 = load i32, ptr %3379, align 4, !tbaa !5
  store i32 %3380, ptr %66, align 4, !tbaa !5
  %3381 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3382 = call i32 @s2n_print_stacktrace(ptr noundef %3381)
  %3383 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3384 = trunc i8 %3383 to i1
  br i1 %3384, label %3385, label %3407

3385:                                             ; preds = %3378
  %3386 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3387 = call i32 @fileno(ptr noundef %3386) #9
  %3388 = call i32 @isatty(i32 noundef %3387) #9
  %3389 = icmp ne i32 %3388, 0
  br i1 %3389, label %3390, label %3407

3390:                                             ; preds = %3385
  %3391 = load i32, ptr %66, align 4, !tbaa !5
  %3392 = call ptr @__errno_location() #10
  store i32 %3391, ptr %3392, align 4, !tbaa !5
  %3393 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3394 = load i32, ptr @test_count, align 4, !tbaa !5
  %3395 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3396 = load i32, ptr %3395, align 4, !tbaa !5
  %3397 = call ptr @s2n_strerror(i32 noundef %3396, ptr noundef @.str.8)
  %3398 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3399 = load i32, ptr %3398, align 4, !tbaa !5
  %3400 = call ptr @s2n_strerror_debug(i32 noundef %3399, ptr noundef @.str.8)
  %3401 = call ptr @__errno_location() #10
  %3402 = load i32, ptr %3401, align 4, !tbaa !5
  %3403 = call ptr @strerror(i32 noundef %3402) #9
  %3404 = call ptr @__errno_location() #10
  %3405 = load i32, ptr %3404, align 4, !tbaa !5
  %3406 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3393, ptr noundef @.str.6, i32 noundef %3394, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 135, ptr noundef %3397, ptr noundef %3400, ptr noundef %3403, i32 noundef %3405) #9
  br label %3424

3407:                                             ; preds = %3385, %3378
  %3408 = load i32, ptr %66, align 4, !tbaa !5
  %3409 = call ptr @__errno_location() #10
  store i32 %3408, ptr %3409, align 4, !tbaa !5
  %3410 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3411 = load i32, ptr @test_count, align 4, !tbaa !5
  %3412 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3413 = load i32, ptr %3412, align 4, !tbaa !5
  %3414 = call ptr @s2n_strerror(i32 noundef %3413, ptr noundef @.str.8)
  %3415 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3416 = load i32, ptr %3415, align 4, !tbaa !5
  %3417 = call ptr @s2n_strerror_debug(i32 noundef %3416, ptr noundef @.str.8)
  %3418 = call ptr @__errno_location() #10
  %3419 = load i32, ptr %3418, align 4, !tbaa !5
  %3420 = call ptr @strerror(i32 noundef %3419) #9
  %3421 = call ptr @__errno_location() #10
  %3422 = load i32, ptr %3421, align 4, !tbaa !5
  %3423 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3410, ptr noundef @.str.9, i32 noundef %3411, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 135, ptr noundef %3414, ptr noundef %3417, ptr noundef %3420, i32 noundef %3422) #9
  br label %3424

3424:                                             ; preds = %3407, %3390
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  br label %3425

3425:                                             ; preds = %3424
  br label %3426

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

3427:                                             ; No predecessors!
  br label %3428

3428:                                             ; preds = %3427
  br label %3429

3429:                                             ; preds = %3428, %3366
  br label %3430

3430:                                             ; preds = %3429
  br label %3431

3431:                                             ; preds = %3430
  br label %3432

3432:                                             ; preds = %3431
  %3433 = load i32, ptr @test_count, align 4, !tbaa !5
  %3434 = add nsw i32 %3433, 1
  store i32 %3434, ptr @test_count, align 4, !tbaa !5
  %3435 = load ptr, ptr %52, align 8, !tbaa !9
  %3436 = getelementptr inbounds %struct.s2n_connection, ptr %3435, i32 0, i32 31
  %3437 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %3436, i32 0, i32 4
  %3438 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %3437, i32 0, i32 1
  %3439 = getelementptr inbounds %struct.s2n_kem_params, ptr %3438, i32 0, i32 0
  %3440 = load ptr, ptr %3439, align 8, !tbaa !51
  %3441 = icmp eq ptr %3440, null
  br i1 %3441, label %3495, label %3442

3442:                                             ; preds = %3432
  br label %3443

3443:                                             ; preds = %3442
  br label %3444

3444:                                             ; preds = %3443
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #9
  %3445 = call ptr @__errno_location() #10
  %3446 = load i32, ptr %3445, align 4, !tbaa !5
  store i32 %3446, ptr %67, align 4, !tbaa !5
  %3447 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3448 = call i32 @s2n_print_stacktrace(ptr noundef %3447)
  %3449 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3450 = trunc i8 %3449 to i1
  br i1 %3450, label %3451, label %3473

3451:                                             ; preds = %3444
  %3452 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3453 = call i32 @fileno(ptr noundef %3452) #9
  %3454 = call i32 @isatty(i32 noundef %3453) #9
  %3455 = icmp ne i32 %3454, 0
  br i1 %3455, label %3456, label %3473

3456:                                             ; preds = %3451
  %3457 = load i32, ptr %67, align 4, !tbaa !5
  %3458 = call ptr @__errno_location() #10
  store i32 %3457, ptr %3458, align 4, !tbaa !5
  %3459 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3460 = load i32, ptr @test_count, align 4, !tbaa !5
  %3461 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3462 = load i32, ptr %3461, align 4, !tbaa !5
  %3463 = call ptr @s2n_strerror(i32 noundef %3462, ptr noundef @.str.8)
  %3464 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3465 = load i32, ptr %3464, align 4, !tbaa !5
  %3466 = call ptr @s2n_strerror_debug(i32 noundef %3465, ptr noundef @.str.8)
  %3467 = call ptr @__errno_location() #10
  %3468 = load i32, ptr %3467, align 4, !tbaa !5
  %3469 = call ptr @strerror(i32 noundef %3468) #9
  %3470 = call ptr @__errno_location() #10
  %3471 = load i32, ptr %3470, align 4, !tbaa !5
  %3472 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3459, ptr noundef @.str.6, i32 noundef %3460, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 136, ptr noundef %3463, ptr noundef %3466, ptr noundef %3469, i32 noundef %3471) #9
  br label %3490

3473:                                             ; preds = %3451, %3444
  %3474 = load i32, ptr %67, align 4, !tbaa !5
  %3475 = call ptr @__errno_location() #10
  store i32 %3474, ptr %3475, align 4, !tbaa !5
  %3476 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3477 = load i32, ptr @test_count, align 4, !tbaa !5
  %3478 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3479 = load i32, ptr %3478, align 4, !tbaa !5
  %3480 = call ptr @s2n_strerror(i32 noundef %3479, ptr noundef @.str.8)
  %3481 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3482 = load i32, ptr %3481, align 4, !tbaa !5
  %3483 = call ptr @s2n_strerror_debug(i32 noundef %3482, ptr noundef @.str.8)
  %3484 = call ptr @__errno_location() #10
  %3485 = load i32, ptr %3484, align 4, !tbaa !5
  %3486 = call ptr @strerror(i32 noundef %3485) #9
  %3487 = call ptr @__errno_location() #10
  %3488 = load i32, ptr %3487, align 4, !tbaa !5
  %3489 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3476, ptr noundef @.str.9, i32 noundef %3477, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 136, ptr noundef %3480, ptr noundef %3483, ptr noundef %3486, i32 noundef %3488) #9
  br label %3490

3490:                                             ; preds = %3473, %3456
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  br label %3491

3491:                                             ; preds = %3490
  br label %3492

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

3493:                                             ; No predecessors!
  br label %3494

3494:                                             ; preds = %3493
  br label %3495

3495:                                             ; preds = %3494, %3432
  br label %3496

3496:                                             ; preds = %3495
  br label %3497

3497:                                             ; preds = %3496
  br label %3498

3498:                                             ; preds = %3497
  %3499 = load i32, ptr @test_count, align 4, !tbaa !5
  %3500 = add nsw i32 %3499, 1
  store i32 %3500, ptr @test_count, align 4, !tbaa !5
  %3501 = load ptr, ptr %52, align 8, !tbaa !9
  %3502 = getelementptr inbounds %struct.s2n_connection, ptr %3501, i32 0, i32 31
  %3503 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %3502, i32 0, i32 1
  %3504 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %3503, i32 0, i32 0
  %3505 = load ptr, ptr %3504, align 8, !tbaa !52
  %3506 = load ptr, ptr %54, align 8, !tbaa !9
  %3507 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %3506, i32 0, i32 1
  %3508 = load ptr, ptr %3507, align 8, !tbaa !55
  %3509 = getelementptr inbounds ptr, ptr %3508, i64 0
  %3510 = load ptr, ptr %3509, align 8, !tbaa !9
  %3511 = icmp eq ptr %3505, %3510
  br i1 %3511, label %3565, label %3512

3512:                                             ; preds = %3498
  br label %3513

3513:                                             ; preds = %3512
  br label %3514

3514:                                             ; preds = %3513
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #9
  %3515 = call ptr @__errno_location() #10
  %3516 = load i32, ptr %3515, align 4, !tbaa !5
  store i32 %3516, ptr %68, align 4, !tbaa !5
  %3517 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3518 = call i32 @s2n_print_stacktrace(ptr noundef %3517)
  %3519 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3520 = trunc i8 %3519 to i1
  br i1 %3520, label %3521, label %3543

3521:                                             ; preds = %3514
  %3522 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3523 = call i32 @fileno(ptr noundef %3522) #9
  %3524 = call i32 @isatty(i32 noundef %3523) #9
  %3525 = icmp ne i32 %3524, 0
  br i1 %3525, label %3526, label %3543

3526:                                             ; preds = %3521
  %3527 = load i32, ptr %68, align 4, !tbaa !5
  %3528 = call ptr @__errno_location() #10
  store i32 %3527, ptr %3528, align 4, !tbaa !5
  %3529 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3530 = load i32, ptr @test_count, align 4, !tbaa !5
  %3531 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3532 = load i32, ptr %3531, align 4, !tbaa !5
  %3533 = call ptr @s2n_strerror(i32 noundef %3532, ptr noundef @.str.8)
  %3534 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3535 = load i32, ptr %3534, align 4, !tbaa !5
  %3536 = call ptr @s2n_strerror_debug(i32 noundef %3535, ptr noundef @.str.8)
  %3537 = call ptr @__errno_location() #10
  %3538 = load i32, ptr %3537, align 4, !tbaa !5
  %3539 = call ptr @strerror(i32 noundef %3538) #9
  %3540 = call ptr @__errno_location() #10
  %3541 = load i32, ptr %3540, align 4, !tbaa !5
  %3542 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3529, ptr noundef @.str.6, i32 noundef %3530, ptr noundef @.str.28, ptr noundef @.str.5, i32 noundef 137, ptr noundef %3533, ptr noundef %3536, ptr noundef %3539, i32 noundef %3541) #9
  br label %3560

3543:                                             ; preds = %3521, %3514
  %3544 = load i32, ptr %68, align 4, !tbaa !5
  %3545 = call ptr @__errno_location() #10
  store i32 %3544, ptr %3545, align 4, !tbaa !5
  %3546 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3547 = load i32, ptr @test_count, align 4, !tbaa !5
  %3548 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3549 = load i32, ptr %3548, align 4, !tbaa !5
  %3550 = call ptr @s2n_strerror(i32 noundef %3549, ptr noundef @.str.8)
  %3551 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3552 = load i32, ptr %3551, align 4, !tbaa !5
  %3553 = call ptr @s2n_strerror_debug(i32 noundef %3552, ptr noundef @.str.8)
  %3554 = call ptr @__errno_location() #10
  %3555 = load i32, ptr %3554, align 4, !tbaa !5
  %3556 = call ptr @strerror(i32 noundef %3555) #9
  %3557 = call ptr @__errno_location() #10
  %3558 = load i32, ptr %3557, align 4, !tbaa !5
  %3559 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3546, ptr noundef @.str.9, i32 noundef %3547, ptr noundef @.str.28, ptr noundef @.str.5, i32 noundef 137, ptr noundef %3550, ptr noundef %3553, ptr noundef %3556, i32 noundef %3558) #9
  br label %3560

3560:                                             ; preds = %3543, %3526
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #9
  br label %3561

3561:                                             ; preds = %3560
  br label %3562

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

3563:                                             ; No predecessors!
  br label %3564

3564:                                             ; preds = %3563
  br label %3565

3565:                                             ; preds = %3564, %3498
  br label %3566

3566:                                             ; preds = %3565
  br label %3567

3567:                                             ; preds = %3566
  br label %3568

3568:                                             ; preds = %3567
  %3569 = load i32, ptr @test_count, align 4, !tbaa !5
  %3570 = add nsw i32 %3569, 1
  store i32 %3570, ptr @test_count, align 4, !tbaa !5
  %3571 = load ptr, ptr %52, align 8, !tbaa !9
  %3572 = call i32 @s2n_connection_free(ptr noundef %3571)
  %3573 = icmp eq i32 %3572, -1
  br i1 %3573, label %3574, label %3627

3574:                                             ; preds = %3568
  br label %3575

3575:                                             ; preds = %3574
  br label %3576

3576:                                             ; preds = %3575
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #9
  %3577 = call ptr @__errno_location() #10
  %3578 = load i32, ptr %3577, align 4, !tbaa !5
  store i32 %3578, ptr %69, align 4, !tbaa !5
  %3579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3580 = call i32 @s2n_print_stacktrace(ptr noundef %3579)
  %3581 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3582 = trunc i8 %3581 to i1
  br i1 %3582, label %3583, label %3605

3583:                                             ; preds = %3576
  %3584 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3585 = call i32 @fileno(ptr noundef %3584) #9
  %3586 = call i32 @isatty(i32 noundef %3585) #9
  %3587 = icmp ne i32 %3586, 0
  br i1 %3587, label %3588, label %3605

3588:                                             ; preds = %3583
  %3589 = load i32, ptr %69, align 4, !tbaa !5
  %3590 = call ptr @__errno_location() #10
  store i32 %3589, ptr %3590, align 4, !tbaa !5
  %3591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3592 = load i32, ptr @test_count, align 4, !tbaa !5
  %3593 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3594 = load i32, ptr %3593, align 4, !tbaa !5
  %3595 = call ptr @s2n_strerror(i32 noundef %3594, ptr noundef @.str.8)
  %3596 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3597 = load i32, ptr %3596, align 4, !tbaa !5
  %3598 = call ptr @s2n_strerror_debug(i32 noundef %3597, ptr noundef @.str.8)
  %3599 = call ptr @__errno_location() #10
  %3600 = load i32, ptr %3599, align 4, !tbaa !5
  %3601 = call ptr @strerror(i32 noundef %3600) #9
  %3602 = call ptr @__errno_location() #10
  %3603 = load i32, ptr %3602, align 4, !tbaa !5
  %3604 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3591, ptr noundef @.str.6, i32 noundef %3592, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 138, ptr noundef %3595, ptr noundef %3598, ptr noundef %3601, i32 noundef %3603) #9
  br label %3622

3605:                                             ; preds = %3583, %3576
  %3606 = load i32, ptr %69, align 4, !tbaa !5
  %3607 = call ptr @__errno_location() #10
  store i32 %3606, ptr %3607, align 4, !tbaa !5
  %3608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3609 = load i32, ptr @test_count, align 4, !tbaa !5
  %3610 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3611 = load i32, ptr %3610, align 4, !tbaa !5
  %3612 = call ptr @s2n_strerror(i32 noundef %3611, ptr noundef @.str.8)
  %3613 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3614 = load i32, ptr %3613, align 4, !tbaa !5
  %3615 = call ptr @s2n_strerror_debug(i32 noundef %3614, ptr noundef @.str.8)
  %3616 = call ptr @__errno_location() #10
  %3617 = load i32, ptr %3616, align 4, !tbaa !5
  %3618 = call ptr @strerror(i32 noundef %3617) #9
  %3619 = call ptr @__errno_location() #10
  %3620 = load i32, ptr %3619, align 4, !tbaa !5
  %3621 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3608, ptr noundef @.str.9, i32 noundef %3609, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 138, ptr noundef %3612, ptr noundef %3615, ptr noundef %3618, i32 noundef %3620) #9
  br label %3622

3622:                                             ; preds = %3605, %3588
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #9
  br label %3623

3623:                                             ; preds = %3622
  br label %3624

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

3625:                                             ; No predecessors!
  br label %3626

3626:                                             ; preds = %3625
  br label %3627

3627:                                             ; preds = %3626, %3568
  br label %3628

3628:                                             ; preds = %3627
  br label %3629

3629:                                             ; preds = %3628
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr %70) #9
  call void @llvm.memset.p0.i64(ptr align 8 %70, i8 0, i64 40, i1 false)
  %3630 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %70, i32 0, i32 0
  %3631 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %70, i32 0, i32 1
  %3632 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %70, i32 0, i32 2
  %3633 = load i8, ptr getelementptr inbounds (%struct.s2n_kem_preferences, ptr @kem_preferences_all, i32 0, i32 2), align 8, !tbaa !21
  store i8 %3633, ptr %3632, align 8, !tbaa !21
  %3634 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %70, i32 0, i32 3
  %3635 = load ptr, ptr getelementptr inbounds (%struct.s2n_kem_preferences, ptr @kem_preferences_all, i32 0, i32 3), align 8, !tbaa !58
  store ptr %3635, ptr %3634, align 8, !tbaa !58
  %3636 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %70, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 64, ptr %71) #9
  %3637 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 0
  store i8 30, ptr %3637, align 8, !tbaa !59
  %3638 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 1
  store ptr @cipher_preferences_test_all_tls13, ptr %3638, align 8, !tbaa !61
  %3639 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 2
  store ptr %70, ptr %3639, align 8, !tbaa !62
  %3640 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 3
  store ptr @s2n_signature_preferences_20200207, ptr %3640, align 8, !tbaa !63
  %3641 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 4
  store ptr null, ptr %3641, align 8, !tbaa !64
  %3642 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 5
  store ptr @s2n_ecc_preferences_20200310, ptr %3642, align 8, !tbaa !65
  %3643 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 6
  store ptr null, ptr %3643, align 8, !tbaa !66
  %3644 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 7
  store i8 0, ptr %3644, align 8, !tbaa !67
  %3645 = getelementptr inbounds %struct.s2n_security_policy, ptr %71, i32 0, i32 8
  call void @llvm.memset.p0.i64(ptr align 1 %3645, i8 0, i64 2, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #9
  store ptr null, ptr %72, align 8, !tbaa !9
  br label %3646

3646:                                             ; preds = %3629
  %3647 = load i32, ptr @test_count, align 4, !tbaa !5
  %3648 = add nsw i32 %3647, 1
  store i32 %3648, ptr @test_count, align 4, !tbaa !5
  %3649 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %3649, ptr %72, align 8, !tbaa !9
  %3650 = icmp eq ptr %3649, null
  br i1 %3650, label %3651, label %3704

3651:                                             ; preds = %3646
  br label %3652

3652:                                             ; preds = %3651
  br label %3653

3653:                                             ; preds = %3652
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #9
  %3654 = call ptr @__errno_location() #10
  %3655 = load i32, ptr %3654, align 4, !tbaa !5
  store i32 %3655, ptr %73, align 4, !tbaa !5
  %3656 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3657 = call i32 @s2n_print_stacktrace(ptr noundef %3656)
  %3658 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3659 = trunc i8 %3658 to i1
  br i1 %3659, label %3660, label %3682

3660:                                             ; preds = %3653
  %3661 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3662 = call i32 @fileno(ptr noundef %3661) #9
  %3663 = call i32 @isatty(i32 noundef %3662) #9
  %3664 = icmp ne i32 %3663, 0
  br i1 %3664, label %3665, label %3682

3665:                                             ; preds = %3660
  %3666 = load i32, ptr %73, align 4, !tbaa !5
  %3667 = call ptr @__errno_location() #10
  store i32 %3666, ptr %3667, align 4, !tbaa !5
  %3668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3669 = load i32, ptr @test_count, align 4, !tbaa !5
  %3670 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3671 = load i32, ptr %3670, align 4, !tbaa !5
  %3672 = call ptr @s2n_strerror(i32 noundef %3671, ptr noundef @.str.8)
  %3673 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3674 = load i32, ptr %3673, align 4, !tbaa !5
  %3675 = call ptr @s2n_strerror_debug(i32 noundef %3674, ptr noundef @.str.8)
  %3676 = call ptr @__errno_location() #10
  %3677 = load i32, ptr %3676, align 4, !tbaa !5
  %3678 = call ptr @strerror(i32 noundef %3677) #9
  %3679 = call ptr @__errno_location() #10
  %3680 = load i32, ptr %3679, align 4, !tbaa !5
  %3681 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3668, ptr noundef @.str.6, i32 noundef %3669, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 163, ptr noundef %3672, ptr noundef %3675, ptr noundef %3678, i32 noundef %3680) #9
  br label %3699

3682:                                             ; preds = %3660, %3653
  %3683 = load i32, ptr %73, align 4, !tbaa !5
  %3684 = call ptr @__errno_location() #10
  store i32 %3683, ptr %3684, align 4, !tbaa !5
  %3685 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3686 = load i32, ptr @test_count, align 4, !tbaa !5
  %3687 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3688 = load i32, ptr %3687, align 4, !tbaa !5
  %3689 = call ptr @s2n_strerror(i32 noundef %3688, ptr noundef @.str.8)
  %3690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3691 = load i32, ptr %3690, align 4, !tbaa !5
  %3692 = call ptr @s2n_strerror_debug(i32 noundef %3691, ptr noundef @.str.8)
  %3693 = call ptr @__errno_location() #10
  %3694 = load i32, ptr %3693, align 4, !tbaa !5
  %3695 = call ptr @strerror(i32 noundef %3694) #9
  %3696 = call ptr @__errno_location() #10
  %3697 = load i32, ptr %3696, align 4, !tbaa !5
  %3698 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3685, ptr noundef @.str.9, i32 noundef %3686, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 163, ptr noundef %3689, ptr noundef %3692, ptr noundef %3695, i32 noundef %3697) #9
  br label %3699

3699:                                             ; preds = %3682, %3665
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #9
  br label %3700

3700:                                             ; preds = %3699
  br label %3701

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

3702:                                             ; No predecessors!
  br label %3703

3703:                                             ; preds = %3702
  br label %3704

3704:                                             ; preds = %3703, %3646
  br label %3705

3705:                                             ; preds = %3704
  br label %3706

3706:                                             ; preds = %3705
  %3707 = load ptr, ptr %72, align 8, !tbaa !9
  %3708 = getelementptr inbounds %struct.s2n_connection, ptr %3707, i32 0, i32 2
  store ptr %71, ptr %3708, align 8, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  store ptr null, ptr %74, align 8, !tbaa !9
  br label %3709

3709:                                             ; preds = %3706
  %3710 = load i32, ptr @test_count, align 4, !tbaa !5
  %3711 = add nsw i32 %3710, 1
  store i32 %3711, ptr @test_count, align 4, !tbaa !5
  %3712 = load ptr, ptr %72, align 8, !tbaa !9
  %3713 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %3712, ptr noundef %74)
  %3714 = icmp eq i32 %3713, -1
  br i1 %3714, label %3715, label %3768

3715:                                             ; preds = %3709
  br label %3716

3716:                                             ; preds = %3715
  br label %3717

3717:                                             ; preds = %3716
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #9
  %3718 = call ptr @__errno_location() #10
  %3719 = load i32, ptr %3718, align 4, !tbaa !5
  store i32 %3719, ptr %75, align 4, !tbaa !5
  %3720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3721 = call i32 @s2n_print_stacktrace(ptr noundef %3720)
  %3722 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3723 = trunc i8 %3722 to i1
  br i1 %3723, label %3724, label %3746

3724:                                             ; preds = %3717
  %3725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3726 = call i32 @fileno(ptr noundef %3725) #9
  %3727 = call i32 @isatty(i32 noundef %3726) #9
  %3728 = icmp ne i32 %3727, 0
  br i1 %3728, label %3729, label %3746

3729:                                             ; preds = %3724
  %3730 = load i32, ptr %75, align 4, !tbaa !5
  %3731 = call ptr @__errno_location() #10
  store i32 %3730, ptr %3731, align 4, !tbaa !5
  %3732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3733 = load i32, ptr @test_count, align 4, !tbaa !5
  %3734 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3735 = load i32, ptr %3734, align 4, !tbaa !5
  %3736 = call ptr @s2n_strerror(i32 noundef %3735, ptr noundef @.str.8)
  %3737 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3738 = load i32, ptr %3737, align 4, !tbaa !5
  %3739 = call ptr @s2n_strerror_debug(i32 noundef %3738, ptr noundef @.str.8)
  %3740 = call ptr @__errno_location() #10
  %3741 = load i32, ptr %3740, align 4, !tbaa !5
  %3742 = call ptr @strerror(i32 noundef %3741) #9
  %3743 = call ptr @__errno_location() #10
  %3744 = load i32, ptr %3743, align 4, !tbaa !5
  %3745 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3732, ptr noundef @.str.6, i32 noundef %3733, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 167, ptr noundef %3736, ptr noundef %3739, ptr noundef %3742, i32 noundef %3744) #9
  br label %3763

3746:                                             ; preds = %3724, %3717
  %3747 = load i32, ptr %75, align 4, !tbaa !5
  %3748 = call ptr @__errno_location() #10
  store i32 %3747, ptr %3748, align 4, !tbaa !5
  %3749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3750 = load i32, ptr @test_count, align 4, !tbaa !5
  %3751 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3752 = load i32, ptr %3751, align 4, !tbaa !5
  %3753 = call ptr @s2n_strerror(i32 noundef %3752, ptr noundef @.str.8)
  %3754 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3755 = load i32, ptr %3754, align 4, !tbaa !5
  %3756 = call ptr @s2n_strerror_debug(i32 noundef %3755, ptr noundef @.str.8)
  %3757 = call ptr @__errno_location() #10
  %3758 = load i32, ptr %3757, align 4, !tbaa !5
  %3759 = call ptr @strerror(i32 noundef %3758) #9
  %3760 = call ptr @__errno_location() #10
  %3761 = load i32, ptr %3760, align 4, !tbaa !5
  %3762 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3749, ptr noundef @.str.9, i32 noundef %3750, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 167, ptr noundef %3753, ptr noundef %3756, ptr noundef %3759, i32 noundef %3761) #9
  br label %3763

3763:                                             ; preds = %3746, %3729
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #9
  br label %3764

3764:                                             ; preds = %3763
  br label %3765

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

3766:                                             ; No predecessors!
  br label %3767

3767:                                             ; preds = %3766
  br label %3768

3768:                                             ; preds = %3767, %3709
  br label %3769

3769:                                             ; preds = %3768
  br label %3770

3770:                                             ; preds = %3769
  br label %3771

3771:                                             ; preds = %3770
  %3772 = load i32, ptr @test_count, align 4, !tbaa !5
  %3773 = add nsw i32 %3772, 1
  store i32 %3773, ptr @test_count, align 4, !tbaa !5
  %3774 = load ptr, ptr %74, align 8, !tbaa !9
  %3775 = icmp eq ptr %3774, null
  br i1 %3775, label %3776, label %3829

3776:                                             ; preds = %3771
  br label %3777

3777:                                             ; preds = %3776
  br label %3778

3778:                                             ; preds = %3777
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #9
  %3779 = call ptr @__errno_location() #10
  %3780 = load i32, ptr %3779, align 4, !tbaa !5
  store i32 %3780, ptr %76, align 4, !tbaa !5
  %3781 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3782 = call i32 @s2n_print_stacktrace(ptr noundef %3781)
  %3783 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3784 = trunc i8 %3783 to i1
  br i1 %3784, label %3785, label %3807

3785:                                             ; preds = %3778
  %3786 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3787 = call i32 @fileno(ptr noundef %3786) #9
  %3788 = call i32 @isatty(i32 noundef %3787) #9
  %3789 = icmp ne i32 %3788, 0
  br i1 %3789, label %3790, label %3807

3790:                                             ; preds = %3785
  %3791 = load i32, ptr %76, align 4, !tbaa !5
  %3792 = call ptr @__errno_location() #10
  store i32 %3791, ptr %3792, align 4, !tbaa !5
  %3793 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3794 = load i32, ptr @test_count, align 4, !tbaa !5
  %3795 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3796 = load i32, ptr %3795, align 4, !tbaa !5
  %3797 = call ptr @s2n_strerror(i32 noundef %3796, ptr noundef @.str.8)
  %3798 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3799 = load i32, ptr %3798, align 4, !tbaa !5
  %3800 = call ptr @s2n_strerror_debug(i32 noundef %3799, ptr noundef @.str.8)
  %3801 = call ptr @__errno_location() #10
  %3802 = load i32, ptr %3801, align 4, !tbaa !5
  %3803 = call ptr @strerror(i32 noundef %3802) #9
  %3804 = call ptr @__errno_location() #10
  %3805 = load i32, ptr %3804, align 4, !tbaa !5
  %3806 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3793, ptr noundef @.str.6, i32 noundef %3794, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 168, ptr noundef %3797, ptr noundef %3800, ptr noundef %3803, i32 noundef %3805) #9
  br label %3824

3807:                                             ; preds = %3785, %3778
  %3808 = load i32, ptr %76, align 4, !tbaa !5
  %3809 = call ptr @__errno_location() #10
  store i32 %3808, ptr %3809, align 4, !tbaa !5
  %3810 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3811 = load i32, ptr @test_count, align 4, !tbaa !5
  %3812 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3813 = load i32, ptr %3812, align 4, !tbaa !5
  %3814 = call ptr @s2n_strerror(i32 noundef %3813, ptr noundef @.str.8)
  %3815 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3816 = load i32, ptr %3815, align 4, !tbaa !5
  %3817 = call ptr @s2n_strerror_debug(i32 noundef %3816, ptr noundef @.str.8)
  %3818 = call ptr @__errno_location() #10
  %3819 = load i32, ptr %3818, align 4, !tbaa !5
  %3820 = call ptr @strerror(i32 noundef %3819) #9
  %3821 = call ptr @__errno_location() #10
  %3822 = load i32, ptr %3821, align 4, !tbaa !5
  %3823 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3810, ptr noundef @.str.9, i32 noundef %3811, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 168, ptr noundef %3814, ptr noundef %3817, ptr noundef %3820, i32 noundef %3822) #9
  br label %3824

3824:                                             ; preds = %3807, %3790
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #9
  br label %3825

3825:                                             ; preds = %3824
  br label %3826

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

3827:                                             ; No predecessors!
  br label %3828

3828:                                             ; preds = %3827
  br label %3829

3829:                                             ; preds = %3828, %3771
  br label %3830

3830:                                             ; preds = %3829
  br label %3831

3831:                                             ; preds = %3830
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #9
  store ptr null, ptr %77, align 8, !tbaa !9
  br label %3832

3832:                                             ; preds = %3831
  %3833 = load i32, ptr @test_count, align 4, !tbaa !5
  %3834 = add nsw i32 %3833, 1
  store i32 %3834, ptr @test_count, align 4, !tbaa !5
  %3835 = load ptr, ptr %72, align 8, !tbaa !9
  %3836 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %3835, ptr noundef %77)
  %3837 = icmp eq i32 %3836, -1
  br i1 %3837, label %3838, label %3891

3838:                                             ; preds = %3832
  br label %3839

3839:                                             ; preds = %3838
  br label %3840

3840:                                             ; preds = %3839
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #9
  %3841 = call ptr @__errno_location() #10
  %3842 = load i32, ptr %3841, align 4, !tbaa !5
  store i32 %3842, ptr %78, align 4, !tbaa !5
  %3843 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3844 = call i32 @s2n_print_stacktrace(ptr noundef %3843)
  %3845 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3846 = trunc i8 %3845 to i1
  br i1 %3846, label %3847, label %3869

3847:                                             ; preds = %3840
  %3848 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3849 = call i32 @fileno(ptr noundef %3848) #9
  %3850 = call i32 @isatty(i32 noundef %3849) #9
  %3851 = icmp ne i32 %3850, 0
  br i1 %3851, label %3852, label %3869

3852:                                             ; preds = %3847
  %3853 = load i32, ptr %78, align 4, !tbaa !5
  %3854 = call ptr @__errno_location() #10
  store i32 %3853, ptr %3854, align 4, !tbaa !5
  %3855 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3856 = load i32, ptr @test_count, align 4, !tbaa !5
  %3857 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3858 = load i32, ptr %3857, align 4, !tbaa !5
  %3859 = call ptr @s2n_strerror(i32 noundef %3858, ptr noundef @.str.8)
  %3860 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3861 = load i32, ptr %3860, align 4, !tbaa !5
  %3862 = call ptr @s2n_strerror_debug(i32 noundef %3861, ptr noundef @.str.8)
  %3863 = call ptr @__errno_location() #10
  %3864 = load i32, ptr %3863, align 4, !tbaa !5
  %3865 = call ptr @strerror(i32 noundef %3864) #9
  %3866 = call ptr @__errno_location() #10
  %3867 = load i32, ptr %3866, align 4, !tbaa !5
  %3868 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3855, ptr noundef @.str.6, i32 noundef %3856, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 171, ptr noundef %3859, ptr noundef %3862, ptr noundef %3865, i32 noundef %3867) #9
  br label %3886

3869:                                             ; preds = %3847, %3840
  %3870 = load i32, ptr %78, align 4, !tbaa !5
  %3871 = call ptr @__errno_location() #10
  store i32 %3870, ptr %3871, align 4, !tbaa !5
  %3872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3873 = load i32, ptr @test_count, align 4, !tbaa !5
  %3874 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3875 = load i32, ptr %3874, align 4, !tbaa !5
  %3876 = call ptr @s2n_strerror(i32 noundef %3875, ptr noundef @.str.8)
  %3877 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3878 = load i32, ptr %3877, align 4, !tbaa !5
  %3879 = call ptr @s2n_strerror_debug(i32 noundef %3878, ptr noundef @.str.8)
  %3880 = call ptr @__errno_location() #10
  %3881 = load i32, ptr %3880, align 4, !tbaa !5
  %3882 = call ptr @strerror(i32 noundef %3881) #9
  %3883 = call ptr @__errno_location() #10
  %3884 = load i32, ptr %3883, align 4, !tbaa !5
  %3885 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3872, ptr noundef @.str.9, i32 noundef %3873, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 171, ptr noundef %3876, ptr noundef %3879, ptr noundef %3882, i32 noundef %3884) #9
  br label %3886

3886:                                             ; preds = %3869, %3852
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #9
  br label %3887

3887:                                             ; preds = %3886
  br label %3888

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

3889:                                             ; No predecessors!
  br label %3890

3890:                                             ; preds = %3889
  br label %3891

3891:                                             ; preds = %3890, %3832
  br label %3892

3892:                                             ; preds = %3891
  br label %3893

3893:                                             ; preds = %3892
  br label %3894

3894:                                             ; preds = %3893
  %3895 = load i32, ptr @test_count, align 4, !tbaa !5
  %3896 = add nsw i32 %3895, 1
  store i32 %3896, ptr @test_count, align 4, !tbaa !5
  %3897 = load ptr, ptr %77, align 8, !tbaa !9
  %3898 = icmp eq ptr %3897, null
  br i1 %3898, label %3899, label %3952

3899:                                             ; preds = %3894
  br label %3900

3900:                                             ; preds = %3899
  br label %3901

3901:                                             ; preds = %3900
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #9
  %3902 = call ptr @__errno_location() #10
  %3903 = load i32, ptr %3902, align 4, !tbaa !5
  store i32 %3903, ptr %79, align 4, !tbaa !5
  %3904 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3905 = call i32 @s2n_print_stacktrace(ptr noundef %3904)
  %3906 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3907 = trunc i8 %3906 to i1
  br i1 %3907, label %3908, label %3930

3908:                                             ; preds = %3901
  %3909 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3910 = call i32 @fileno(ptr noundef %3909) #9
  %3911 = call i32 @isatty(i32 noundef %3910) #9
  %3912 = icmp ne i32 %3911, 0
  br i1 %3912, label %3913, label %3930

3913:                                             ; preds = %3908
  %3914 = load i32, ptr %79, align 4, !tbaa !5
  %3915 = call ptr @__errno_location() #10
  store i32 %3914, ptr %3915, align 4, !tbaa !5
  %3916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3917 = load i32, ptr @test_count, align 4, !tbaa !5
  %3918 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3919 = load i32, ptr %3918, align 4, !tbaa !5
  %3920 = call ptr @s2n_strerror(i32 noundef %3919, ptr noundef @.str.8)
  %3921 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3922 = load i32, ptr %3921, align 4, !tbaa !5
  %3923 = call ptr @s2n_strerror_debug(i32 noundef %3922, ptr noundef @.str.8)
  %3924 = call ptr @__errno_location() #10
  %3925 = load i32, ptr %3924, align 4, !tbaa !5
  %3926 = call ptr @strerror(i32 noundef %3925) #9
  %3927 = call ptr @__errno_location() #10
  %3928 = load i32, ptr %3927, align 4, !tbaa !5
  %3929 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3916, ptr noundef @.str.6, i32 noundef %3917, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 172, ptr noundef %3920, ptr noundef %3923, ptr noundef %3926, i32 noundef %3928) #9
  br label %3947

3930:                                             ; preds = %3908, %3901
  %3931 = load i32, ptr %79, align 4, !tbaa !5
  %3932 = call ptr @__errno_location() #10
  store i32 %3931, ptr %3932, align 4, !tbaa !5
  %3933 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3934 = load i32, ptr @test_count, align 4, !tbaa !5
  %3935 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3936 = load i32, ptr %3935, align 4, !tbaa !5
  %3937 = call ptr @s2n_strerror(i32 noundef %3936, ptr noundef @.str.8)
  %3938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3939 = load i32, ptr %3938, align 4, !tbaa !5
  %3940 = call ptr @s2n_strerror_debug(i32 noundef %3939, ptr noundef @.str.8)
  %3941 = call ptr @__errno_location() #10
  %3942 = load i32, ptr %3941, align 4, !tbaa !5
  %3943 = call ptr @strerror(i32 noundef %3942) #9
  %3944 = call ptr @__errno_location() #10
  %3945 = load i32, ptr %3944, align 4, !tbaa !5
  %3946 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3933, ptr noundef @.str.9, i32 noundef %3934, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 172, ptr noundef %3937, ptr noundef %3940, ptr noundef %3943, i32 noundef %3945) #9
  br label %3947

3947:                                             ; preds = %3930, %3913
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #9
  br label %3948

3948:                                             ; preds = %3947
  br label %3949

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

3950:                                             ; No predecessors!
  br label %3951

3951:                                             ; preds = %3950
  br label %3952

3952:                                             ; preds = %3951, %3894
  br label %3953

3953:                                             ; preds = %3952
  br label %3954

3954:                                             ; preds = %3953
  br label %3955

3955:                                             ; preds = %3954
  %3956 = load i32, ptr @test_count, align 4, !tbaa !5
  %3957 = add nsw i32 %3956, 1
  store i32 %3957, ptr @test_count, align 4, !tbaa !5
  %3958 = load ptr, ptr %77, align 8, !tbaa !9
  %3959 = icmp eq ptr %3958, %70
  br i1 %3959, label %4013, label %3960

3960:                                             ; preds = %3955
  br label %3961

3961:                                             ; preds = %3960
  br label %3962

3962:                                             ; preds = %3961
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #9
  %3963 = call ptr @__errno_location() #10
  %3964 = load i32, ptr %3963, align 4, !tbaa !5
  store i32 %3964, ptr %80, align 4, !tbaa !5
  %3965 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3966 = call i32 @s2n_print_stacktrace(ptr noundef %3965)
  %3967 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3968 = trunc i8 %3967 to i1
  br i1 %3968, label %3969, label %3991

3969:                                             ; preds = %3962
  %3970 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3971 = call i32 @fileno(ptr noundef %3970) #9
  %3972 = call i32 @isatty(i32 noundef %3971) #9
  %3973 = icmp ne i32 %3972, 0
  br i1 %3973, label %3974, label %3991

3974:                                             ; preds = %3969
  %3975 = load i32, ptr %80, align 4, !tbaa !5
  %3976 = call ptr @__errno_location() #10
  store i32 %3975, ptr %3976, align 4, !tbaa !5
  %3977 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3978 = load i32, ptr @test_count, align 4, !tbaa !5
  %3979 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3980 = load i32, ptr %3979, align 4, !tbaa !5
  %3981 = call ptr @s2n_strerror(i32 noundef %3980, ptr noundef @.str.8)
  %3982 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3983 = load i32, ptr %3982, align 4, !tbaa !5
  %3984 = call ptr @s2n_strerror_debug(i32 noundef %3983, ptr noundef @.str.8)
  %3985 = call ptr @__errno_location() #10
  %3986 = load i32, ptr %3985, align 4, !tbaa !5
  %3987 = call ptr @strerror(i32 noundef %3986) #9
  %3988 = call ptr @__errno_location() #10
  %3989 = load i32, ptr %3988, align 4, !tbaa !5
  %3990 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3977, ptr noundef @.str.6, i32 noundef %3978, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 173, ptr noundef %3981, ptr noundef %3984, ptr noundef %3987, i32 noundef %3989) #9
  br label %4008

3991:                                             ; preds = %3969, %3962
  %3992 = load i32, ptr %80, align 4, !tbaa !5
  %3993 = call ptr @__errno_location() #10
  store i32 %3992, ptr %3993, align 4, !tbaa !5
  %3994 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3995 = load i32, ptr @test_count, align 4, !tbaa !5
  %3996 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3997 = load i32, ptr %3996, align 4, !tbaa !5
  %3998 = call ptr @s2n_strerror(i32 noundef %3997, ptr noundef @.str.8)
  %3999 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4000 = load i32, ptr %3999, align 4, !tbaa !5
  %4001 = call ptr @s2n_strerror_debug(i32 noundef %4000, ptr noundef @.str.8)
  %4002 = call ptr @__errno_location() #10
  %4003 = load i32, ptr %4002, align 4, !tbaa !5
  %4004 = call ptr @strerror(i32 noundef %4003) #9
  %4005 = call ptr @__errno_location() #10
  %4006 = load i32, ptr %4005, align 4, !tbaa !5
  %4007 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3994, ptr noundef @.str.9, i32 noundef %3995, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 173, ptr noundef %3998, ptr noundef %4001, ptr noundef %4004, i32 noundef %4006) #9
  br label %4008

4008:                                             ; preds = %3991, %3974
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #9
  br label %4009

4009:                                             ; preds = %4008
  br label %4010

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

4011:                                             ; No predecessors!
  br label %4012

4012:                                             ; preds = %4011
  br label %4013

4013:                                             ; preds = %4012, %3955
  br label %4014

4014:                                             ; preds = %4013
  br label %4015

4015:                                             ; preds = %4014
  br label %4016

4016:                                             ; preds = %4015
  %4017 = load i32, ptr @test_count, align 4, !tbaa !5
  %4018 = add nsw i32 %4017, 1
  store i32 %4018, ptr @test_count, align 4, !tbaa !5
  %4019 = load ptr, ptr %72, align 8, !tbaa !9
  %4020 = getelementptr inbounds %struct.s2n_connection, ptr %4019, i32 0, i32 31
  %4021 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4020, i32 0, i32 4
  %4022 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4021, i32 0, i32 0
  %4023 = load ptr, ptr %4022, align 8, !tbaa !24
  %4024 = icmp eq ptr %4023, null
  br i1 %4024, label %4078, label %4025

4025:                                             ; preds = %4016
  br label %4026

4026:                                             ; preds = %4025
  br label %4027

4027:                                             ; preds = %4026
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #9
  %4028 = call ptr @__errno_location() #10
  %4029 = load i32, ptr %4028, align 4, !tbaa !5
  store i32 %4029, ptr %81, align 4, !tbaa !5
  %4030 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4031 = call i32 @s2n_print_stacktrace(ptr noundef %4030)
  %4032 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4033 = trunc i8 %4032 to i1
  br i1 %4033, label %4034, label %4056

4034:                                             ; preds = %4027
  %4035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4036 = call i32 @fileno(ptr noundef %4035) #9
  %4037 = call i32 @isatty(i32 noundef %4036) #9
  %4038 = icmp ne i32 %4037, 0
  br i1 %4038, label %4039, label %4056

4039:                                             ; preds = %4034
  %4040 = load i32, ptr %81, align 4, !tbaa !5
  %4041 = call ptr @__errno_location() #10
  store i32 %4040, ptr %4041, align 4, !tbaa !5
  %4042 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4043 = load i32, ptr @test_count, align 4, !tbaa !5
  %4044 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4045 = load i32, ptr %4044, align 4, !tbaa !5
  %4046 = call ptr @s2n_strerror(i32 noundef %4045, ptr noundef @.str.8)
  %4047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4048 = load i32, ptr %4047, align 4, !tbaa !5
  %4049 = call ptr @s2n_strerror_debug(i32 noundef %4048, ptr noundef @.str.8)
  %4050 = call ptr @__errno_location() #10
  %4051 = load i32, ptr %4050, align 4, !tbaa !5
  %4052 = call ptr @strerror(i32 noundef %4051) #9
  %4053 = call ptr @__errno_location() #10
  %4054 = load i32, ptr %4053, align 4, !tbaa !5
  %4055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4042, ptr noundef @.str.6, i32 noundef %4043, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 175, ptr noundef %4046, ptr noundef %4049, ptr noundef %4052, i32 noundef %4054) #9
  br label %4073

4056:                                             ; preds = %4034, %4027
  %4057 = load i32, ptr %81, align 4, !tbaa !5
  %4058 = call ptr @__errno_location() #10
  store i32 %4057, ptr %4058, align 4, !tbaa !5
  %4059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4060 = load i32, ptr @test_count, align 4, !tbaa !5
  %4061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4062 = load i32, ptr %4061, align 4, !tbaa !5
  %4063 = call ptr @s2n_strerror(i32 noundef %4062, ptr noundef @.str.8)
  %4064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4065 = load i32, ptr %4064, align 4, !tbaa !5
  %4066 = call ptr @s2n_strerror_debug(i32 noundef %4065, ptr noundef @.str.8)
  %4067 = call ptr @__errno_location() #10
  %4068 = load i32, ptr %4067, align 4, !tbaa !5
  %4069 = call ptr @strerror(i32 noundef %4068) #9
  %4070 = call ptr @__errno_location() #10
  %4071 = load i32, ptr %4070, align 4, !tbaa !5
  %4072 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4059, ptr noundef @.str.9, i32 noundef %4060, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 175, ptr noundef %4063, ptr noundef %4066, ptr noundef %4069, i32 noundef %4071) #9
  br label %4073

4073:                                             ; preds = %4056, %4039
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #9
  br label %4074

4074:                                             ; preds = %4073
  br label %4075

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

4076:                                             ; No predecessors!
  br label %4077

4077:                                             ; preds = %4076
  br label %4078

4078:                                             ; preds = %4077, %4016
  br label %4079

4079:                                             ; preds = %4078
  br label %4080

4080:                                             ; preds = %4079
  br label %4081

4081:                                             ; preds = %4080
  %4082 = load i32, ptr @test_count, align 4, !tbaa !5
  %4083 = add nsw i32 %4082, 1
  store i32 %4083, ptr @test_count, align 4, !tbaa !5
  %4084 = load ptr, ptr %72, align 8, !tbaa !9
  %4085 = getelementptr inbounds %struct.s2n_connection, ptr %4084, i32 0, i32 31
  %4086 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4085, i32 0, i32 4
  %4087 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4086, i32 0, i32 2
  %4088 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4087, i32 0, i32 0
  %4089 = load ptr, ptr %4088, align 8, !tbaa !50
  %4090 = icmp eq ptr %4089, null
  br i1 %4090, label %4144, label %4091

4091:                                             ; preds = %4081
  br label %4092

4092:                                             ; preds = %4091
  br label %4093

4093:                                             ; preds = %4092
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #9
  %4094 = call ptr @__errno_location() #10
  %4095 = load i32, ptr %4094, align 4, !tbaa !5
  store i32 %4095, ptr %82, align 4, !tbaa !5
  %4096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4097 = call i32 @s2n_print_stacktrace(ptr noundef %4096)
  %4098 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4099 = trunc i8 %4098 to i1
  br i1 %4099, label %4100, label %4122

4100:                                             ; preds = %4093
  %4101 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4102 = call i32 @fileno(ptr noundef %4101) #9
  %4103 = call i32 @isatty(i32 noundef %4102) #9
  %4104 = icmp ne i32 %4103, 0
  br i1 %4104, label %4105, label %4122

4105:                                             ; preds = %4100
  %4106 = load i32, ptr %82, align 4, !tbaa !5
  %4107 = call ptr @__errno_location() #10
  store i32 %4106, ptr %4107, align 4, !tbaa !5
  %4108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4109 = load i32, ptr @test_count, align 4, !tbaa !5
  %4110 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4111 = load i32, ptr %4110, align 4, !tbaa !5
  %4112 = call ptr @s2n_strerror(i32 noundef %4111, ptr noundef @.str.8)
  %4113 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4114 = load i32, ptr %4113, align 4, !tbaa !5
  %4115 = call ptr @s2n_strerror_debug(i32 noundef %4114, ptr noundef @.str.8)
  %4116 = call ptr @__errno_location() #10
  %4117 = load i32, ptr %4116, align 4, !tbaa !5
  %4118 = call ptr @strerror(i32 noundef %4117) #9
  %4119 = call ptr @__errno_location() #10
  %4120 = load i32, ptr %4119, align 4, !tbaa !5
  %4121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4108, ptr noundef @.str.6, i32 noundef %4109, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 176, ptr noundef %4112, ptr noundef %4115, ptr noundef %4118, i32 noundef %4120) #9
  br label %4139

4122:                                             ; preds = %4100, %4093
  %4123 = load i32, ptr %82, align 4, !tbaa !5
  %4124 = call ptr @__errno_location() #10
  store i32 %4123, ptr %4124, align 4, !tbaa !5
  %4125 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4126 = load i32, ptr @test_count, align 4, !tbaa !5
  %4127 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4128 = load i32, ptr %4127, align 4, !tbaa !5
  %4129 = call ptr @s2n_strerror(i32 noundef %4128, ptr noundef @.str.8)
  %4130 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4131 = load i32, ptr %4130, align 4, !tbaa !5
  %4132 = call ptr @s2n_strerror_debug(i32 noundef %4131, ptr noundef @.str.8)
  %4133 = call ptr @__errno_location() #10
  %4134 = load i32, ptr %4133, align 4, !tbaa !5
  %4135 = call ptr @strerror(i32 noundef %4134) #9
  %4136 = call ptr @__errno_location() #10
  %4137 = load i32, ptr %4136, align 4, !tbaa !5
  %4138 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4125, ptr noundef @.str.9, i32 noundef %4126, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 176, ptr noundef %4129, ptr noundef %4132, ptr noundef %4135, i32 noundef %4137) #9
  br label %4139

4139:                                             ; preds = %4122, %4105
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #9
  br label %4140

4140:                                             ; preds = %4139
  br label %4141

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

4142:                                             ; No predecessors!
  br label %4143

4143:                                             ; preds = %4142
  br label %4144

4144:                                             ; preds = %4143, %4081
  br label %4145

4145:                                             ; preds = %4144
  br label %4146

4146:                                             ; preds = %4145
  br label %4147

4147:                                             ; preds = %4146
  %4148 = load i32, ptr @test_count, align 4, !tbaa !5
  %4149 = add nsw i32 %4148, 1
  store i32 %4149, ptr @test_count, align 4, !tbaa !5
  %4150 = load ptr, ptr %72, align 8, !tbaa !9
  %4151 = getelementptr inbounds %struct.s2n_connection, ptr %4150, i32 0, i32 31
  %4152 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4151, i32 0, i32 4
  %4153 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4152, i32 0, i32 1
  %4154 = getelementptr inbounds %struct.s2n_kem_params, ptr %4153, i32 0, i32 0
  %4155 = load ptr, ptr %4154, align 8, !tbaa !51
  %4156 = icmp eq ptr %4155, null
  br i1 %4156, label %4210, label %4157

4157:                                             ; preds = %4147
  br label %4158

4158:                                             ; preds = %4157
  br label %4159

4159:                                             ; preds = %4158
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #9
  %4160 = call ptr @__errno_location() #10
  %4161 = load i32, ptr %4160, align 4, !tbaa !5
  store i32 %4161, ptr %83, align 4, !tbaa !5
  %4162 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4163 = call i32 @s2n_print_stacktrace(ptr noundef %4162)
  %4164 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4165 = trunc i8 %4164 to i1
  br i1 %4165, label %4166, label %4188

4166:                                             ; preds = %4159
  %4167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4168 = call i32 @fileno(ptr noundef %4167) #9
  %4169 = call i32 @isatty(i32 noundef %4168) #9
  %4170 = icmp ne i32 %4169, 0
  br i1 %4170, label %4171, label %4188

4171:                                             ; preds = %4166
  %4172 = load i32, ptr %83, align 4, !tbaa !5
  %4173 = call ptr @__errno_location() #10
  store i32 %4172, ptr %4173, align 4, !tbaa !5
  %4174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4175 = load i32, ptr @test_count, align 4, !tbaa !5
  %4176 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4177 = load i32, ptr %4176, align 4, !tbaa !5
  %4178 = call ptr @s2n_strerror(i32 noundef %4177, ptr noundef @.str.8)
  %4179 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4180 = load i32, ptr %4179, align 4, !tbaa !5
  %4181 = call ptr @s2n_strerror_debug(i32 noundef %4180, ptr noundef @.str.8)
  %4182 = call ptr @__errno_location() #10
  %4183 = load i32, ptr %4182, align 4, !tbaa !5
  %4184 = call ptr @strerror(i32 noundef %4183) #9
  %4185 = call ptr @__errno_location() #10
  %4186 = load i32, ptr %4185, align 4, !tbaa !5
  %4187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4174, ptr noundef @.str.6, i32 noundef %4175, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 177, ptr noundef %4178, ptr noundef %4181, ptr noundef %4184, i32 noundef %4186) #9
  br label %4205

4188:                                             ; preds = %4166, %4159
  %4189 = load i32, ptr %83, align 4, !tbaa !5
  %4190 = call ptr @__errno_location() #10
  store i32 %4189, ptr %4190, align 4, !tbaa !5
  %4191 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4192 = load i32, ptr @test_count, align 4, !tbaa !5
  %4193 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4194 = load i32, ptr %4193, align 4, !tbaa !5
  %4195 = call ptr @s2n_strerror(i32 noundef %4194, ptr noundef @.str.8)
  %4196 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4197 = load i32, ptr %4196, align 4, !tbaa !5
  %4198 = call ptr @s2n_strerror_debug(i32 noundef %4197, ptr noundef @.str.8)
  %4199 = call ptr @__errno_location() #10
  %4200 = load i32, ptr %4199, align 4, !tbaa !5
  %4201 = call ptr @strerror(i32 noundef %4200) #9
  %4202 = call ptr @__errno_location() #10
  %4203 = load i32, ptr %4202, align 4, !tbaa !5
  %4204 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4191, ptr noundef @.str.9, i32 noundef %4192, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 177, ptr noundef %4195, ptr noundef %4198, ptr noundef %4201, i32 noundef %4203) #9
  br label %4205

4205:                                             ; preds = %4188, %4171
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #9
  br label %4206

4206:                                             ; preds = %4205
  br label %4207

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

4208:                                             ; No predecessors!
  br label %4209

4209:                                             ; preds = %4208
  br label %4210

4210:                                             ; preds = %4209, %4147
  br label %4211

4211:                                             ; preds = %4210
  br label %4212

4212:                                             ; preds = %4211
  br label %4213

4213:                                             ; preds = %4212
  %4214 = load i32, ptr @test_count, align 4, !tbaa !5
  %4215 = add nsw i32 %4214, 1
  store i32 %4215, ptr @test_count, align 4, !tbaa !5
  %4216 = load ptr, ptr %72, align 8, !tbaa !9
  %4217 = getelementptr inbounds %struct.s2n_connection, ptr %4216, i32 0, i32 31
  %4218 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4217, i32 0, i32 1
  %4219 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4218, i32 0, i32 0
  %4220 = load ptr, ptr %4219, align 8, !tbaa !52
  %4221 = icmp eq ptr %4220, null
  br i1 %4221, label %4275, label %4222

4222:                                             ; preds = %4213
  br label %4223

4223:                                             ; preds = %4222
  br label %4224

4224:                                             ; preds = %4223
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #9
  %4225 = call ptr @__errno_location() #10
  %4226 = load i32, ptr %4225, align 4, !tbaa !5
  store i32 %4226, ptr %84, align 4, !tbaa !5
  %4227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4228 = call i32 @s2n_print_stacktrace(ptr noundef %4227)
  %4229 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4230 = trunc i8 %4229 to i1
  br i1 %4230, label %4231, label %4253

4231:                                             ; preds = %4224
  %4232 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4233 = call i32 @fileno(ptr noundef %4232) #9
  %4234 = call i32 @isatty(i32 noundef %4233) #9
  %4235 = icmp ne i32 %4234, 0
  br i1 %4235, label %4236, label %4253

4236:                                             ; preds = %4231
  %4237 = load i32, ptr %84, align 4, !tbaa !5
  %4238 = call ptr @__errno_location() #10
  store i32 %4237, ptr %4238, align 4, !tbaa !5
  %4239 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4240 = load i32, ptr @test_count, align 4, !tbaa !5
  %4241 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4242 = load i32, ptr %4241, align 4, !tbaa !5
  %4243 = call ptr @s2n_strerror(i32 noundef %4242, ptr noundef @.str.8)
  %4244 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4245 = load i32, ptr %4244, align 4, !tbaa !5
  %4246 = call ptr @s2n_strerror_debug(i32 noundef %4245, ptr noundef @.str.8)
  %4247 = call ptr @__errno_location() #10
  %4248 = load i32, ptr %4247, align 4, !tbaa !5
  %4249 = call ptr @strerror(i32 noundef %4248) #9
  %4250 = call ptr @__errno_location() #10
  %4251 = load i32, ptr %4250, align 4, !tbaa !5
  %4252 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4239, ptr noundef @.str.6, i32 noundef %4240, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 178, ptr noundef %4243, ptr noundef %4246, ptr noundef %4249, i32 noundef %4251) #9
  br label %4270

4253:                                             ; preds = %4231, %4224
  %4254 = load i32, ptr %84, align 4, !tbaa !5
  %4255 = call ptr @__errno_location() #10
  store i32 %4254, ptr %4255, align 4, !tbaa !5
  %4256 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4257 = load i32, ptr @test_count, align 4, !tbaa !5
  %4258 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4259 = load i32, ptr %4258, align 4, !tbaa !5
  %4260 = call ptr @s2n_strerror(i32 noundef %4259, ptr noundef @.str.8)
  %4261 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4262 = load i32, ptr %4261, align 4, !tbaa !5
  %4263 = call ptr @s2n_strerror_debug(i32 noundef %4262, ptr noundef @.str.8)
  %4264 = call ptr @__errno_location() #10
  %4265 = load i32, ptr %4264, align 4, !tbaa !5
  %4266 = call ptr @strerror(i32 noundef %4265) #9
  %4267 = call ptr @__errno_location() #10
  %4268 = load i32, ptr %4267, align 4, !tbaa !5
  %4269 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4256, ptr noundef @.str.9, i32 noundef %4257, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 178, ptr noundef %4260, ptr noundef %4263, ptr noundef %4266, i32 noundef %4268) #9
  br label %4270

4270:                                             ; preds = %4253, %4236
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  br label %4271

4271:                                             ; preds = %4270
  br label %4272

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

4273:                                             ; No predecessors!
  br label %4274

4274:                                             ; preds = %4273
  br label %4275

4275:                                             ; preds = %4274, %4213
  br label %4276

4276:                                             ; preds = %4275
  br label %4277

4277:                                             ; preds = %4276
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #9
  store i64 0, ptr %85, align 8, !tbaa !15
  br label %4278

4278:                                             ; preds = %4298, %4277
  %4279 = load i64, ptr %85, align 8, !tbaa !15
  %4280 = load ptr, ptr %74, align 8, !tbaa !9
  %4281 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %4280, i32 0, i32 0
  %4282 = load i8, ptr %4281, align 8, !tbaa !17
  %4283 = zext i8 %4282 to i64
  %4284 = icmp ult i64 %4279, %4283
  br i1 %4284, label %4286, label %4285

4285:                                             ; preds = %4278
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #9
  br label %4301

4286:                                             ; preds = %4278
  %4287 = load ptr, ptr %74, align 8, !tbaa !9
  %4288 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %4287, i32 0, i32 1
  %4289 = load ptr, ptr %4288, align 8, !tbaa !55
  %4290 = load i64, ptr %85, align 8, !tbaa !15
  %4291 = getelementptr inbounds ptr, ptr %4289, i64 %4290
  %4292 = load ptr, ptr %4291, align 8, !tbaa !9
  %4293 = load ptr, ptr %72, align 8, !tbaa !9
  %4294 = getelementptr inbounds %struct.s2n_connection, ptr %4293, i32 0, i32 31
  %4295 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4294, i32 0, i32 2
  %4296 = load i64, ptr %85, align 8, !tbaa !15
  %4297 = getelementptr inbounds [4 x ptr], ptr %4295, i64 0, i64 %4296
  store ptr %4292, ptr %4297, align 8, !tbaa !9
  br label %4298

4298:                                             ; preds = %4286
  %4299 = load i64, ptr %85, align 8, !tbaa !15
  %4300 = add i64 %4299, 1
  store i64 %4300, ptr %85, align 8, !tbaa !15
  br label %4278, !llvm.loop !69

4301:                                             ; preds = %4285
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #9
  store i64 0, ptr %86, align 8, !tbaa !15
  br label %4302

4302:                                             ; preds = %4377, %4301
  %4303 = load i64, ptr %86, align 8, !tbaa !15
  %4304 = load ptr, ptr %77, align 8, !tbaa !9
  %4305 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %4304, i32 0, i32 2
  %4306 = load i8, ptr %4305, align 8, !tbaa !21
  %4307 = zext i8 %4306 to i64
  %4308 = icmp ult i64 %4303, %4307
  br i1 %4308, label %4310, label %4309

4309:                                             ; preds = %4302
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  br label %4380

4310:                                             ; preds = %4302
  br label %4311

4311:                                             ; preds = %4310
  %4312 = load i32, ptr @test_count, align 4, !tbaa !5
  %4313 = add nsw i32 %4312, 1
  store i32 %4313, ptr @test_count, align 4, !tbaa !5
  %4314 = load ptr, ptr %72, align 8, !tbaa !9
  %4315 = getelementptr inbounds %struct.s2n_connection, ptr %4314, i32 0, i32 31
  %4316 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4315, i32 0, i32 6
  %4317 = load i64, ptr %86, align 8, !tbaa !15
  %4318 = getelementptr inbounds [8 x ptr], ptr %4316, i64 0, i64 %4317
  %4319 = load ptr, ptr %4318, align 8, !tbaa !9
  %4320 = icmp eq ptr %4319, null
  br i1 %4320, label %4374, label %4321

4321:                                             ; preds = %4311
  br label %4322

4322:                                             ; preds = %4321
  br label %4323

4323:                                             ; preds = %4322
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #9
  %4324 = call ptr @__errno_location() #10
  %4325 = load i32, ptr %4324, align 4, !tbaa !5
  store i32 %4325, ptr %87, align 4, !tbaa !5
  %4326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4327 = call i32 @s2n_print_stacktrace(ptr noundef %4326)
  %4328 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4329 = trunc i8 %4328 to i1
  br i1 %4329, label %4330, label %4352

4330:                                             ; preds = %4323
  %4331 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4332 = call i32 @fileno(ptr noundef %4331) #9
  %4333 = call i32 @isatty(i32 noundef %4332) #9
  %4334 = icmp ne i32 %4333, 0
  br i1 %4334, label %4335, label %4352

4335:                                             ; preds = %4330
  %4336 = load i32, ptr %87, align 4, !tbaa !5
  %4337 = call ptr @__errno_location() #10
  store i32 %4336, ptr %4337, align 4, !tbaa !5
  %4338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4339 = load i32, ptr @test_count, align 4, !tbaa !5
  %4340 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4341 = load i32, ptr %4340, align 4, !tbaa !5
  %4342 = call ptr @s2n_strerror(i32 noundef %4341, ptr noundef @.str.8)
  %4343 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4344 = load i32, ptr %4343, align 4, !tbaa !5
  %4345 = call ptr @s2n_strerror_debug(i32 noundef %4344, ptr noundef @.str.8)
  %4346 = call ptr @__errno_location() #10
  %4347 = load i32, ptr %4346, align 4, !tbaa !5
  %4348 = call ptr @strerror(i32 noundef %4347) #9
  %4349 = call ptr @__errno_location() #10
  %4350 = load i32, ptr %4349, align 4, !tbaa !5
  %4351 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4338, ptr noundef @.str.6, i32 noundef %4339, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 185, ptr noundef %4342, ptr noundef %4345, ptr noundef %4348, i32 noundef %4350) #9
  br label %4369

4352:                                             ; preds = %4330, %4323
  %4353 = load i32, ptr %87, align 4, !tbaa !5
  %4354 = call ptr @__errno_location() #10
  store i32 %4353, ptr %4354, align 4, !tbaa !5
  %4355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4356 = load i32, ptr @test_count, align 4, !tbaa !5
  %4357 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4358 = load i32, ptr %4357, align 4, !tbaa !5
  %4359 = call ptr @s2n_strerror(i32 noundef %4358, ptr noundef @.str.8)
  %4360 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4361 = load i32, ptr %4360, align 4, !tbaa !5
  %4362 = call ptr @s2n_strerror_debug(i32 noundef %4361, ptr noundef @.str.8)
  %4363 = call ptr @__errno_location() #10
  %4364 = load i32, ptr %4363, align 4, !tbaa !5
  %4365 = call ptr @strerror(i32 noundef %4364) #9
  %4366 = call ptr @__errno_location() #10
  %4367 = load i32, ptr %4366, align 4, !tbaa !5
  %4368 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4355, ptr noundef @.str.9, i32 noundef %4356, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 185, ptr noundef %4359, ptr noundef %4362, ptr noundef %4365, i32 noundef %4367) #9
  br label %4369

4369:                                             ; preds = %4352, %4335
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #9
  br label %4370

4370:                                             ; preds = %4369
  br label %4371

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

4372:                                             ; No predecessors!
  br label %4373

4373:                                             ; preds = %4372
  br label %4374

4374:                                             ; preds = %4373, %4311
  br label %4375

4375:                                             ; preds = %4374
  br label %4376

4376:                                             ; preds = %4375
  br label %4377

4377:                                             ; preds = %4376
  %4378 = load i64, ptr %86, align 8, !tbaa !15
  %4379 = add i64 %4378, 1
  store i64 %4379, ptr %86, align 8, !tbaa !15
  br label %4302, !llvm.loop !70

4380:                                             ; preds = %4309
  br label %4381

4381:                                             ; preds = %4380
  %4382 = load i32, ptr @test_count, align 4, !tbaa !5
  %4383 = add nsw i32 %4382, 1
  store i32 %4383, ptr @test_count, align 4, !tbaa !5
  %4384 = load ptr, ptr %72, align 8, !tbaa !9
  %4385 = call i32 @s2n_choose_supported_group(ptr noundef %4384)
  %4386 = icmp eq i32 %4385, -1
  br i1 %4386, label %4387, label %4440

4387:                                             ; preds = %4381
  br label %4388

4388:                                             ; preds = %4387
  br label %4389

4389:                                             ; preds = %4388
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #9
  %4390 = call ptr @__errno_location() #10
  %4391 = load i32, ptr %4390, align 4, !tbaa !5
  store i32 %4391, ptr %88, align 4, !tbaa !5
  %4392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4393 = call i32 @s2n_print_stacktrace(ptr noundef %4392)
  %4394 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4395 = trunc i8 %4394 to i1
  br i1 %4395, label %4396, label %4418

4396:                                             ; preds = %4389
  %4397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4398 = call i32 @fileno(ptr noundef %4397) #9
  %4399 = call i32 @isatty(i32 noundef %4398) #9
  %4400 = icmp ne i32 %4399, 0
  br i1 %4400, label %4401, label %4418

4401:                                             ; preds = %4396
  %4402 = load i32, ptr %88, align 4, !tbaa !5
  %4403 = call ptr @__errno_location() #10
  store i32 %4402, ptr %4403, align 4, !tbaa !5
  %4404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4405 = load i32, ptr @test_count, align 4, !tbaa !5
  %4406 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4407 = load i32, ptr %4406, align 4, !tbaa !5
  %4408 = call ptr @s2n_strerror(i32 noundef %4407, ptr noundef @.str.8)
  %4409 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4410 = load i32, ptr %4409, align 4, !tbaa !5
  %4411 = call ptr @s2n_strerror_debug(i32 noundef %4410, ptr noundef @.str.8)
  %4412 = call ptr @__errno_location() #10
  %4413 = load i32, ptr %4412, align 4, !tbaa !5
  %4414 = call ptr @strerror(i32 noundef %4413) #9
  %4415 = call ptr @__errno_location() #10
  %4416 = load i32, ptr %4415, align 4, !tbaa !5
  %4417 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4404, ptr noundef @.str.6, i32 noundef %4405, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 188, ptr noundef %4408, ptr noundef %4411, ptr noundef %4414, i32 noundef %4416) #9
  br label %4435

4418:                                             ; preds = %4396, %4389
  %4419 = load i32, ptr %88, align 4, !tbaa !5
  %4420 = call ptr @__errno_location() #10
  store i32 %4419, ptr %4420, align 4, !tbaa !5
  %4421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4422 = load i32, ptr @test_count, align 4, !tbaa !5
  %4423 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4424 = load i32, ptr %4423, align 4, !tbaa !5
  %4425 = call ptr @s2n_strerror(i32 noundef %4424, ptr noundef @.str.8)
  %4426 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4427 = load i32, ptr %4426, align 4, !tbaa !5
  %4428 = call ptr @s2n_strerror_debug(i32 noundef %4427, ptr noundef @.str.8)
  %4429 = call ptr @__errno_location() #10
  %4430 = load i32, ptr %4429, align 4, !tbaa !5
  %4431 = call ptr @strerror(i32 noundef %4430) #9
  %4432 = call ptr @__errno_location() #10
  %4433 = load i32, ptr %4432, align 4, !tbaa !5
  %4434 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4421, ptr noundef @.str.9, i32 noundef %4422, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 188, ptr noundef %4425, ptr noundef %4428, ptr noundef %4431, i32 noundef %4433) #9
  br label %4435

4435:                                             ; preds = %4418, %4401
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #9
  br label %4436

4436:                                             ; preds = %4435
  br label %4437

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

4438:                                             ; No predecessors!
  br label %4439

4439:                                             ; preds = %4438
  br label %4440

4440:                                             ; preds = %4439, %4381
  br label %4441

4441:                                             ; preds = %4440
  br label %4442

4442:                                             ; preds = %4441
  br label %4443

4443:                                             ; preds = %4442
  %4444 = load i32, ptr @test_count, align 4, !tbaa !5
  %4445 = add nsw i32 %4444, 1
  store i32 %4445, ptr @test_count, align 4, !tbaa !5
  %4446 = load ptr, ptr %72, align 8, !tbaa !9
  %4447 = getelementptr inbounds %struct.s2n_connection, ptr %4446, i32 0, i32 31
  %4448 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4447, i32 0, i32 4
  %4449 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4448, i32 0, i32 0
  %4450 = load ptr, ptr %4449, align 8, !tbaa !24
  %4451 = icmp eq ptr %4450, null
  br i1 %4451, label %4505, label %4452

4452:                                             ; preds = %4443
  br label %4453

4453:                                             ; preds = %4452
  br label %4454

4454:                                             ; preds = %4453
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #9
  %4455 = call ptr @__errno_location() #10
  %4456 = load i32, ptr %4455, align 4, !tbaa !5
  store i32 %4456, ptr %89, align 4, !tbaa !5
  %4457 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4458 = call i32 @s2n_print_stacktrace(ptr noundef %4457)
  %4459 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4460 = trunc i8 %4459 to i1
  br i1 %4460, label %4461, label %4483

4461:                                             ; preds = %4454
  %4462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4463 = call i32 @fileno(ptr noundef %4462) #9
  %4464 = call i32 @isatty(i32 noundef %4463) #9
  %4465 = icmp ne i32 %4464, 0
  br i1 %4465, label %4466, label %4483

4466:                                             ; preds = %4461
  %4467 = load i32, ptr %89, align 4, !tbaa !5
  %4468 = call ptr @__errno_location() #10
  store i32 %4467, ptr %4468, align 4, !tbaa !5
  %4469 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4470 = load i32, ptr @test_count, align 4, !tbaa !5
  %4471 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4472 = load i32, ptr %4471, align 4, !tbaa !5
  %4473 = call ptr @s2n_strerror(i32 noundef %4472, ptr noundef @.str.8)
  %4474 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4475 = load i32, ptr %4474, align 4, !tbaa !5
  %4476 = call ptr @s2n_strerror_debug(i32 noundef %4475, ptr noundef @.str.8)
  %4477 = call ptr @__errno_location() #10
  %4478 = load i32, ptr %4477, align 4, !tbaa !5
  %4479 = call ptr @strerror(i32 noundef %4478) #9
  %4480 = call ptr @__errno_location() #10
  %4481 = load i32, ptr %4480, align 4, !tbaa !5
  %4482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4469, ptr noundef @.str.6, i32 noundef %4470, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 190, ptr noundef %4473, ptr noundef %4476, ptr noundef %4479, i32 noundef %4481) #9
  br label %4500

4483:                                             ; preds = %4461, %4454
  %4484 = load i32, ptr %89, align 4, !tbaa !5
  %4485 = call ptr @__errno_location() #10
  store i32 %4484, ptr %4485, align 4, !tbaa !5
  %4486 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4487 = load i32, ptr @test_count, align 4, !tbaa !5
  %4488 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4489 = load i32, ptr %4488, align 4, !tbaa !5
  %4490 = call ptr @s2n_strerror(i32 noundef %4489, ptr noundef @.str.8)
  %4491 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4492 = load i32, ptr %4491, align 4, !tbaa !5
  %4493 = call ptr @s2n_strerror_debug(i32 noundef %4492, ptr noundef @.str.8)
  %4494 = call ptr @__errno_location() #10
  %4495 = load i32, ptr %4494, align 4, !tbaa !5
  %4496 = call ptr @strerror(i32 noundef %4495) #9
  %4497 = call ptr @__errno_location() #10
  %4498 = load i32, ptr %4497, align 4, !tbaa !5
  %4499 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4486, ptr noundef @.str.9, i32 noundef %4487, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 190, ptr noundef %4490, ptr noundef %4493, ptr noundef %4496, i32 noundef %4498) #9
  br label %4500

4500:                                             ; preds = %4483, %4466
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #9
  br label %4501

4501:                                             ; preds = %4500
  br label %4502

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

4503:                                             ; No predecessors!
  br label %4504

4504:                                             ; preds = %4503
  br label %4505

4505:                                             ; preds = %4504, %4443
  br label %4506

4506:                                             ; preds = %4505
  br label %4507

4507:                                             ; preds = %4506
  br label %4508

4508:                                             ; preds = %4507
  %4509 = load i32, ptr @test_count, align 4, !tbaa !5
  %4510 = add nsw i32 %4509, 1
  store i32 %4510, ptr @test_count, align 4, !tbaa !5
  %4511 = load ptr, ptr %72, align 8, !tbaa !9
  %4512 = getelementptr inbounds %struct.s2n_connection, ptr %4511, i32 0, i32 31
  %4513 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4512, i32 0, i32 4
  %4514 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4513, i32 0, i32 2
  %4515 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4514, i32 0, i32 0
  %4516 = load ptr, ptr %4515, align 8, !tbaa !50
  %4517 = icmp eq ptr %4516, null
  br i1 %4517, label %4571, label %4518

4518:                                             ; preds = %4508
  br label %4519

4519:                                             ; preds = %4518
  br label %4520

4520:                                             ; preds = %4519
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #9
  %4521 = call ptr @__errno_location() #10
  %4522 = load i32, ptr %4521, align 4, !tbaa !5
  store i32 %4522, ptr %90, align 4, !tbaa !5
  %4523 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4524 = call i32 @s2n_print_stacktrace(ptr noundef %4523)
  %4525 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4526 = trunc i8 %4525 to i1
  br i1 %4526, label %4527, label %4549

4527:                                             ; preds = %4520
  %4528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4529 = call i32 @fileno(ptr noundef %4528) #9
  %4530 = call i32 @isatty(i32 noundef %4529) #9
  %4531 = icmp ne i32 %4530, 0
  br i1 %4531, label %4532, label %4549

4532:                                             ; preds = %4527
  %4533 = load i32, ptr %90, align 4, !tbaa !5
  %4534 = call ptr @__errno_location() #10
  store i32 %4533, ptr %4534, align 4, !tbaa !5
  %4535 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4536 = load i32, ptr @test_count, align 4, !tbaa !5
  %4537 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4538 = load i32, ptr %4537, align 4, !tbaa !5
  %4539 = call ptr @s2n_strerror(i32 noundef %4538, ptr noundef @.str.8)
  %4540 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4541 = load i32, ptr %4540, align 4, !tbaa !5
  %4542 = call ptr @s2n_strerror_debug(i32 noundef %4541, ptr noundef @.str.8)
  %4543 = call ptr @__errno_location() #10
  %4544 = load i32, ptr %4543, align 4, !tbaa !5
  %4545 = call ptr @strerror(i32 noundef %4544) #9
  %4546 = call ptr @__errno_location() #10
  %4547 = load i32, ptr %4546, align 4, !tbaa !5
  %4548 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4535, ptr noundef @.str.6, i32 noundef %4536, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 191, ptr noundef %4539, ptr noundef %4542, ptr noundef %4545, i32 noundef %4547) #9
  br label %4566

4549:                                             ; preds = %4527, %4520
  %4550 = load i32, ptr %90, align 4, !tbaa !5
  %4551 = call ptr @__errno_location() #10
  store i32 %4550, ptr %4551, align 4, !tbaa !5
  %4552 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4553 = load i32, ptr @test_count, align 4, !tbaa !5
  %4554 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4555 = load i32, ptr %4554, align 4, !tbaa !5
  %4556 = call ptr @s2n_strerror(i32 noundef %4555, ptr noundef @.str.8)
  %4557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4558 = load i32, ptr %4557, align 4, !tbaa !5
  %4559 = call ptr @s2n_strerror_debug(i32 noundef %4558, ptr noundef @.str.8)
  %4560 = call ptr @__errno_location() #10
  %4561 = load i32, ptr %4560, align 4, !tbaa !5
  %4562 = call ptr @strerror(i32 noundef %4561) #9
  %4563 = call ptr @__errno_location() #10
  %4564 = load i32, ptr %4563, align 4, !tbaa !5
  %4565 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4552, ptr noundef @.str.9, i32 noundef %4553, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 191, ptr noundef %4556, ptr noundef %4559, ptr noundef %4562, i32 noundef %4564) #9
  br label %4566

4566:                                             ; preds = %4549, %4532
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #9
  br label %4567

4567:                                             ; preds = %4566
  br label %4568

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

4569:                                             ; No predecessors!
  br label %4570

4570:                                             ; preds = %4569
  br label %4571

4571:                                             ; preds = %4570, %4508
  br label %4572

4572:                                             ; preds = %4571
  br label %4573

4573:                                             ; preds = %4572
  br label %4574

4574:                                             ; preds = %4573
  %4575 = load i32, ptr @test_count, align 4, !tbaa !5
  %4576 = add nsw i32 %4575, 1
  store i32 %4576, ptr @test_count, align 4, !tbaa !5
  %4577 = load ptr, ptr %72, align 8, !tbaa !9
  %4578 = getelementptr inbounds %struct.s2n_connection, ptr %4577, i32 0, i32 31
  %4579 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4578, i32 0, i32 4
  %4580 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %4579, i32 0, i32 1
  %4581 = getelementptr inbounds %struct.s2n_kem_params, ptr %4580, i32 0, i32 0
  %4582 = load ptr, ptr %4581, align 8, !tbaa !51
  %4583 = icmp eq ptr %4582, null
  br i1 %4583, label %4637, label %4584

4584:                                             ; preds = %4574
  br label %4585

4585:                                             ; preds = %4584
  br label %4586

4586:                                             ; preds = %4585
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #9
  %4587 = call ptr @__errno_location() #10
  %4588 = load i32, ptr %4587, align 4, !tbaa !5
  store i32 %4588, ptr %91, align 4, !tbaa !5
  %4589 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4590 = call i32 @s2n_print_stacktrace(ptr noundef %4589)
  %4591 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4592 = trunc i8 %4591 to i1
  br i1 %4592, label %4593, label %4615

4593:                                             ; preds = %4586
  %4594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4595 = call i32 @fileno(ptr noundef %4594) #9
  %4596 = call i32 @isatty(i32 noundef %4595) #9
  %4597 = icmp ne i32 %4596, 0
  br i1 %4597, label %4598, label %4615

4598:                                             ; preds = %4593
  %4599 = load i32, ptr %91, align 4, !tbaa !5
  %4600 = call ptr @__errno_location() #10
  store i32 %4599, ptr %4600, align 4, !tbaa !5
  %4601 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4602 = load i32, ptr @test_count, align 4, !tbaa !5
  %4603 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4604 = load i32, ptr %4603, align 4, !tbaa !5
  %4605 = call ptr @s2n_strerror(i32 noundef %4604, ptr noundef @.str.8)
  %4606 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4607 = load i32, ptr %4606, align 4, !tbaa !5
  %4608 = call ptr @s2n_strerror_debug(i32 noundef %4607, ptr noundef @.str.8)
  %4609 = call ptr @__errno_location() #10
  %4610 = load i32, ptr %4609, align 4, !tbaa !5
  %4611 = call ptr @strerror(i32 noundef %4610) #9
  %4612 = call ptr @__errno_location() #10
  %4613 = load i32, ptr %4612, align 4, !tbaa !5
  %4614 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4601, ptr noundef @.str.6, i32 noundef %4602, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 192, ptr noundef %4605, ptr noundef %4608, ptr noundef %4611, i32 noundef %4613) #9
  br label %4632

4615:                                             ; preds = %4593, %4586
  %4616 = load i32, ptr %91, align 4, !tbaa !5
  %4617 = call ptr @__errno_location() #10
  store i32 %4616, ptr %4617, align 4, !tbaa !5
  %4618 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4619 = load i32, ptr @test_count, align 4, !tbaa !5
  %4620 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4621 = load i32, ptr %4620, align 4, !tbaa !5
  %4622 = call ptr @s2n_strerror(i32 noundef %4621, ptr noundef @.str.8)
  %4623 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4624 = load i32, ptr %4623, align 4, !tbaa !5
  %4625 = call ptr @s2n_strerror_debug(i32 noundef %4624, ptr noundef @.str.8)
  %4626 = call ptr @__errno_location() #10
  %4627 = load i32, ptr %4626, align 4, !tbaa !5
  %4628 = call ptr @strerror(i32 noundef %4627) #9
  %4629 = call ptr @__errno_location() #10
  %4630 = load i32, ptr %4629, align 4, !tbaa !5
  %4631 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4618, ptr noundef @.str.9, i32 noundef %4619, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 192, ptr noundef %4622, ptr noundef %4625, ptr noundef %4628, i32 noundef %4630) #9
  br label %4632

4632:                                             ; preds = %4615, %4598
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #9
  br label %4633

4633:                                             ; preds = %4632
  br label %4634

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

4635:                                             ; No predecessors!
  br label %4636

4636:                                             ; preds = %4635
  br label %4637

4637:                                             ; preds = %4636, %4574
  br label %4638

4638:                                             ; preds = %4637
  br label %4639

4639:                                             ; preds = %4638
  br label %4640

4640:                                             ; preds = %4639
  %4641 = load i32, ptr @test_count, align 4, !tbaa !5
  %4642 = add nsw i32 %4641, 1
  store i32 %4642, ptr @test_count, align 4, !tbaa !5
  %4643 = load ptr, ptr %72, align 8, !tbaa !9
  %4644 = getelementptr inbounds %struct.s2n_connection, ptr %4643, i32 0, i32 31
  %4645 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %4644, i32 0, i32 1
  %4646 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %4645, i32 0, i32 0
  %4647 = load ptr, ptr %4646, align 8, !tbaa !52
  %4648 = load ptr, ptr %74, align 8, !tbaa !9
  %4649 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %4648, i32 0, i32 1
  %4650 = load ptr, ptr %4649, align 8, !tbaa !55
  %4651 = getelementptr inbounds ptr, ptr %4650, i64 0
  %4652 = load ptr, ptr %4651, align 8, !tbaa !9
  %4653 = icmp eq ptr %4647, %4652
  br i1 %4653, label %4707, label %4654

4654:                                             ; preds = %4640
  br label %4655

4655:                                             ; preds = %4654
  br label %4656

4656:                                             ; preds = %4655
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #9
  %4657 = call ptr @__errno_location() #10
  %4658 = load i32, ptr %4657, align 4, !tbaa !5
  store i32 %4658, ptr %92, align 4, !tbaa !5
  %4659 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4660 = call i32 @s2n_print_stacktrace(ptr noundef %4659)
  %4661 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4662 = trunc i8 %4661 to i1
  br i1 %4662, label %4663, label %4685

4663:                                             ; preds = %4656
  %4664 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4665 = call i32 @fileno(ptr noundef %4664) #9
  %4666 = call i32 @isatty(i32 noundef %4665) #9
  %4667 = icmp ne i32 %4666, 0
  br i1 %4667, label %4668, label %4685

4668:                                             ; preds = %4663
  %4669 = load i32, ptr %92, align 4, !tbaa !5
  %4670 = call ptr @__errno_location() #10
  store i32 %4669, ptr %4670, align 4, !tbaa !5
  %4671 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4672 = load i32, ptr @test_count, align 4, !tbaa !5
  %4673 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4674 = load i32, ptr %4673, align 4, !tbaa !5
  %4675 = call ptr @s2n_strerror(i32 noundef %4674, ptr noundef @.str.8)
  %4676 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4677 = load i32, ptr %4676, align 4, !tbaa !5
  %4678 = call ptr @s2n_strerror_debug(i32 noundef %4677, ptr noundef @.str.8)
  %4679 = call ptr @__errno_location() #10
  %4680 = load i32, ptr %4679, align 4, !tbaa !5
  %4681 = call ptr @strerror(i32 noundef %4680) #9
  %4682 = call ptr @__errno_location() #10
  %4683 = load i32, ptr %4682, align 4, !tbaa !5
  %4684 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4671, ptr noundef @.str.6, i32 noundef %4672, ptr noundef @.str.28, ptr noundef @.str.5, i32 noundef 193, ptr noundef %4675, ptr noundef %4678, ptr noundef %4681, i32 noundef %4683) #9
  br label %4702

4685:                                             ; preds = %4663, %4656
  %4686 = load i32, ptr %92, align 4, !tbaa !5
  %4687 = call ptr @__errno_location() #10
  store i32 %4686, ptr %4687, align 4, !tbaa !5
  %4688 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4689 = load i32, ptr @test_count, align 4, !tbaa !5
  %4690 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4691 = load i32, ptr %4690, align 4, !tbaa !5
  %4692 = call ptr @s2n_strerror(i32 noundef %4691, ptr noundef @.str.8)
  %4693 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4694 = load i32, ptr %4693, align 4, !tbaa !5
  %4695 = call ptr @s2n_strerror_debug(i32 noundef %4694, ptr noundef @.str.8)
  %4696 = call ptr @__errno_location() #10
  %4697 = load i32, ptr %4696, align 4, !tbaa !5
  %4698 = call ptr @strerror(i32 noundef %4697) #9
  %4699 = call ptr @__errno_location() #10
  %4700 = load i32, ptr %4699, align 4, !tbaa !5
  %4701 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4688, ptr noundef @.str.9, i32 noundef %4689, ptr noundef @.str.28, ptr noundef @.str.5, i32 noundef 193, ptr noundef %4692, ptr noundef %4695, ptr noundef %4698, i32 noundef %4700) #9
  br label %4702

4702:                                             ; preds = %4685, %4668
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #9
  br label %4703

4703:                                             ; preds = %4702
  br label %4704

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

4705:                                             ; No predecessors!
  br label %4706

4706:                                             ; preds = %4705
  br label %4707

4707:                                             ; preds = %4706, %4640
  br label %4708

4708:                                             ; preds = %4707
  br label %4709

4709:                                             ; preds = %4708
  br label %4710

4710:                                             ; preds = %4709
  %4711 = load i32, ptr @test_count, align 4, !tbaa !5
  %4712 = add nsw i32 %4711, 1
  store i32 %4712, ptr @test_count, align 4, !tbaa !5
  %4713 = load ptr, ptr %72, align 8, !tbaa !9
  %4714 = call i32 @s2n_connection_free(ptr noundef %4713)
  %4715 = icmp eq i32 %4714, -1
  br i1 %4715, label %4716, label %4769

4716:                                             ; preds = %4710
  br label %4717

4717:                                             ; preds = %4716
  br label %4718

4718:                                             ; preds = %4717
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #9
  %4719 = call ptr @__errno_location() #10
  %4720 = load i32, ptr %4719, align 4, !tbaa !5
  store i32 %4720, ptr %93, align 4, !tbaa !5
  %4721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4722 = call i32 @s2n_print_stacktrace(ptr noundef %4721)
  %4723 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4724 = trunc i8 %4723 to i1
  br i1 %4724, label %4725, label %4747

4725:                                             ; preds = %4718
  %4726 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4727 = call i32 @fileno(ptr noundef %4726) #9
  %4728 = call i32 @isatty(i32 noundef %4727) #9
  %4729 = icmp ne i32 %4728, 0
  br i1 %4729, label %4730, label %4747

4730:                                             ; preds = %4725
  %4731 = load i32, ptr %93, align 4, !tbaa !5
  %4732 = call ptr @__errno_location() #10
  store i32 %4731, ptr %4732, align 4, !tbaa !5
  %4733 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4734 = load i32, ptr @test_count, align 4, !tbaa !5
  %4735 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4736 = load i32, ptr %4735, align 4, !tbaa !5
  %4737 = call ptr @s2n_strerror(i32 noundef %4736, ptr noundef @.str.8)
  %4738 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4739 = load i32, ptr %4738, align 4, !tbaa !5
  %4740 = call ptr @s2n_strerror_debug(i32 noundef %4739, ptr noundef @.str.8)
  %4741 = call ptr @__errno_location() #10
  %4742 = load i32, ptr %4741, align 4, !tbaa !5
  %4743 = call ptr @strerror(i32 noundef %4742) #9
  %4744 = call ptr @__errno_location() #10
  %4745 = load i32, ptr %4744, align 4, !tbaa !5
  %4746 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4733, ptr noundef @.str.6, i32 noundef %4734, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 194, ptr noundef %4737, ptr noundef %4740, ptr noundef %4743, i32 noundef %4745) #9
  br label %4764

4747:                                             ; preds = %4725, %4718
  %4748 = load i32, ptr %93, align 4, !tbaa !5
  %4749 = call ptr @__errno_location() #10
  store i32 %4748, ptr %4749, align 4, !tbaa !5
  %4750 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4751 = load i32, ptr @test_count, align 4, !tbaa !5
  %4752 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4753 = load i32, ptr %4752, align 4, !tbaa !5
  %4754 = call ptr @s2n_strerror(i32 noundef %4753, ptr noundef @.str.8)
  %4755 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4756 = load i32, ptr %4755, align 4, !tbaa !5
  %4757 = call ptr @s2n_strerror_debug(i32 noundef %4756, ptr noundef @.str.8)
  %4758 = call ptr @__errno_location() #10
  %4759 = load i32, ptr %4758, align 4, !tbaa !5
  %4760 = call ptr @strerror(i32 noundef %4759) #9
  %4761 = call ptr @__errno_location() #10
  %4762 = load i32, ptr %4761, align 4, !tbaa !5
  %4763 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4750, ptr noundef @.str.9, i32 noundef %4751, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 194, ptr noundef %4754, ptr noundef %4757, ptr noundef %4760, i32 noundef %4762) #9
  br label %4764

4764:                                             ; preds = %4747, %4730
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #9
  br label %4765

4765:                                             ; preds = %4764
  br label %4766

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

4767:                                             ; No predecessors!
  br label %4768

4768:                                             ; preds = %4767
  br label %4769

4769:                                             ; preds = %4768, %4710
  br label %4770

4770:                                             ; preds = %4769
  br label %4771

4771:                                             ; preds = %4770
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  store ptr null, ptr %94, align 8, !tbaa !9
  br label %4772

4772:                                             ; preds = %4771
  %4773 = load i32, ptr @test_count, align 4, !tbaa !5
  %4774 = add nsw i32 %4773, 1
  store i32 %4774, ptr @test_count, align 4, !tbaa !5
  %4775 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %4775, ptr %94, align 8, !tbaa !9
  %4776 = icmp eq ptr %4775, null
  br i1 %4776, label %4777, label %4830

4777:                                             ; preds = %4772
  br label %4778

4778:                                             ; preds = %4777
  br label %4779

4779:                                             ; preds = %4778
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #9
  %4780 = call ptr @__errno_location() #10
  %4781 = load i32, ptr %4780, align 4, !tbaa !5
  store i32 %4781, ptr %95, align 4, !tbaa !5
  %4782 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4783 = call i32 @s2n_print_stacktrace(ptr noundef %4782)
  %4784 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4785 = trunc i8 %4784 to i1
  br i1 %4785, label %4786, label %4808

4786:                                             ; preds = %4779
  %4787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4788 = call i32 @fileno(ptr noundef %4787) #9
  %4789 = call i32 @isatty(i32 noundef %4788) #9
  %4790 = icmp ne i32 %4789, 0
  br i1 %4790, label %4791, label %4808

4791:                                             ; preds = %4786
  %4792 = load i32, ptr %95, align 4, !tbaa !5
  %4793 = call ptr @__errno_location() #10
  store i32 %4792, ptr %4793, align 4, !tbaa !5
  %4794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4795 = load i32, ptr @test_count, align 4, !tbaa !5
  %4796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4797 = load i32, ptr %4796, align 4, !tbaa !5
  %4798 = call ptr @s2n_strerror(i32 noundef %4797, ptr noundef @.str.8)
  %4799 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4800 = load i32, ptr %4799, align 4, !tbaa !5
  %4801 = call ptr @s2n_strerror_debug(i32 noundef %4800, ptr noundef @.str.8)
  %4802 = call ptr @__errno_location() #10
  %4803 = load i32, ptr %4802, align 4, !tbaa !5
  %4804 = call ptr @strerror(i32 noundef %4803) #9
  %4805 = call ptr @__errno_location() #10
  %4806 = load i32, ptr %4805, align 4, !tbaa !5
  %4807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4794, ptr noundef @.str.6, i32 noundef %4795, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 201, ptr noundef %4798, ptr noundef %4801, ptr noundef %4804, i32 noundef %4806) #9
  br label %4825

4808:                                             ; preds = %4786, %4779
  %4809 = load i32, ptr %95, align 4, !tbaa !5
  %4810 = call ptr @__errno_location() #10
  store i32 %4809, ptr %4810, align 4, !tbaa !5
  %4811 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4812 = load i32, ptr @test_count, align 4, !tbaa !5
  %4813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4814 = load i32, ptr %4813, align 4, !tbaa !5
  %4815 = call ptr @s2n_strerror(i32 noundef %4814, ptr noundef @.str.8)
  %4816 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4817 = load i32, ptr %4816, align 4, !tbaa !5
  %4818 = call ptr @s2n_strerror_debug(i32 noundef %4817, ptr noundef @.str.8)
  %4819 = call ptr @__errno_location() #10
  %4820 = load i32, ptr %4819, align 4, !tbaa !5
  %4821 = call ptr @strerror(i32 noundef %4820) #9
  %4822 = call ptr @__errno_location() #10
  %4823 = load i32, ptr %4822, align 4, !tbaa !5
  %4824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4811, ptr noundef @.str.9, i32 noundef %4812, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 201, ptr noundef %4815, ptr noundef %4818, ptr noundef %4821, i32 noundef %4823) #9
  br label %4825

4825:                                             ; preds = %4808, %4791
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #9
  br label %4826

4826:                                             ; preds = %4825
  br label %4827

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

4828:                                             ; No predecessors!
  br label %4829

4829:                                             ; preds = %4828
  br label %4830

4830:                                             ; preds = %4829, %4772
  br label %4831

4831:                                             ; preds = %4830
  br label %4832

4832:                                             ; preds = %4831
  %4833 = load ptr, ptr %94, align 8, !tbaa !9
  %4834 = getelementptr inbounds %struct.s2n_connection, ptr %4833, i32 0, i32 2
  store ptr %71, ptr %4834, align 8, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #9
  store ptr null, ptr %96, align 8, !tbaa !9
  br label %4835

4835:                                             ; preds = %4832
  %4836 = load i32, ptr @test_count, align 4, !tbaa !5
  %4837 = add nsw i32 %4836, 1
  store i32 %4837, ptr @test_count, align 4, !tbaa !5
  %4838 = load ptr, ptr %94, align 8, !tbaa !9
  %4839 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %4838, ptr noundef %96)
  %4840 = icmp eq i32 %4839, -1
  br i1 %4840, label %4841, label %4894

4841:                                             ; preds = %4835
  br label %4842

4842:                                             ; preds = %4841
  br label %4843

4843:                                             ; preds = %4842
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #9
  %4844 = call ptr @__errno_location() #10
  %4845 = load i32, ptr %4844, align 4, !tbaa !5
  store i32 %4845, ptr %97, align 4, !tbaa !5
  %4846 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4847 = call i32 @s2n_print_stacktrace(ptr noundef %4846)
  %4848 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4849 = trunc i8 %4848 to i1
  br i1 %4849, label %4850, label %4872

4850:                                             ; preds = %4843
  %4851 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4852 = call i32 @fileno(ptr noundef %4851) #9
  %4853 = call i32 @isatty(i32 noundef %4852) #9
  %4854 = icmp ne i32 %4853, 0
  br i1 %4854, label %4855, label %4872

4855:                                             ; preds = %4850
  %4856 = load i32, ptr %97, align 4, !tbaa !5
  %4857 = call ptr @__errno_location() #10
  store i32 %4856, ptr %4857, align 4, !tbaa !5
  %4858 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4859 = load i32, ptr @test_count, align 4, !tbaa !5
  %4860 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4861 = load i32, ptr %4860, align 4, !tbaa !5
  %4862 = call ptr @s2n_strerror(i32 noundef %4861, ptr noundef @.str.8)
  %4863 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4864 = load i32, ptr %4863, align 4, !tbaa !5
  %4865 = call ptr @s2n_strerror_debug(i32 noundef %4864, ptr noundef @.str.8)
  %4866 = call ptr @__errno_location() #10
  %4867 = load i32, ptr %4866, align 4, !tbaa !5
  %4868 = call ptr @strerror(i32 noundef %4867) #9
  %4869 = call ptr @__errno_location() #10
  %4870 = load i32, ptr %4869, align 4, !tbaa !5
  %4871 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4858, ptr noundef @.str.6, i32 noundef %4859, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 205, ptr noundef %4862, ptr noundef %4865, ptr noundef %4868, i32 noundef %4870) #9
  br label %4889

4872:                                             ; preds = %4850, %4843
  %4873 = load i32, ptr %97, align 4, !tbaa !5
  %4874 = call ptr @__errno_location() #10
  store i32 %4873, ptr %4874, align 4, !tbaa !5
  %4875 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4876 = load i32, ptr @test_count, align 4, !tbaa !5
  %4877 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4878 = load i32, ptr %4877, align 4, !tbaa !5
  %4879 = call ptr @s2n_strerror(i32 noundef %4878, ptr noundef @.str.8)
  %4880 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4881 = load i32, ptr %4880, align 4, !tbaa !5
  %4882 = call ptr @s2n_strerror_debug(i32 noundef %4881, ptr noundef @.str.8)
  %4883 = call ptr @__errno_location() #10
  %4884 = load i32, ptr %4883, align 4, !tbaa !5
  %4885 = call ptr @strerror(i32 noundef %4884) #9
  %4886 = call ptr @__errno_location() #10
  %4887 = load i32, ptr %4886, align 4, !tbaa !5
  %4888 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4875, ptr noundef @.str.9, i32 noundef %4876, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 205, ptr noundef %4879, ptr noundef %4882, ptr noundef %4885, i32 noundef %4887) #9
  br label %4889

4889:                                             ; preds = %4872, %4855
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #9
  br label %4890

4890:                                             ; preds = %4889
  br label %4891

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

4892:                                             ; No predecessors!
  br label %4893

4893:                                             ; preds = %4892
  br label %4894

4894:                                             ; preds = %4893, %4835
  br label %4895

4895:                                             ; preds = %4894
  br label %4896

4896:                                             ; preds = %4895
  br label %4897

4897:                                             ; preds = %4896
  %4898 = load i32, ptr @test_count, align 4, !tbaa !5
  %4899 = add nsw i32 %4898, 1
  store i32 %4899, ptr @test_count, align 4, !tbaa !5
  %4900 = load ptr, ptr %96, align 8, !tbaa !9
  %4901 = icmp eq ptr %4900, null
  br i1 %4901, label %4902, label %4955

4902:                                             ; preds = %4897
  br label %4903

4903:                                             ; preds = %4902
  br label %4904

4904:                                             ; preds = %4903
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #9
  %4905 = call ptr @__errno_location() #10
  %4906 = load i32, ptr %4905, align 4, !tbaa !5
  store i32 %4906, ptr %98, align 4, !tbaa !5
  %4907 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4908 = call i32 @s2n_print_stacktrace(ptr noundef %4907)
  %4909 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4910 = trunc i8 %4909 to i1
  br i1 %4910, label %4911, label %4933

4911:                                             ; preds = %4904
  %4912 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4913 = call i32 @fileno(ptr noundef %4912) #9
  %4914 = call i32 @isatty(i32 noundef %4913) #9
  %4915 = icmp ne i32 %4914, 0
  br i1 %4915, label %4916, label %4933

4916:                                             ; preds = %4911
  %4917 = load i32, ptr %98, align 4, !tbaa !5
  %4918 = call ptr @__errno_location() #10
  store i32 %4917, ptr %4918, align 4, !tbaa !5
  %4919 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4920 = load i32, ptr @test_count, align 4, !tbaa !5
  %4921 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4922 = load i32, ptr %4921, align 4, !tbaa !5
  %4923 = call ptr @s2n_strerror(i32 noundef %4922, ptr noundef @.str.8)
  %4924 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4925 = load i32, ptr %4924, align 4, !tbaa !5
  %4926 = call ptr @s2n_strerror_debug(i32 noundef %4925, ptr noundef @.str.8)
  %4927 = call ptr @__errno_location() #10
  %4928 = load i32, ptr %4927, align 4, !tbaa !5
  %4929 = call ptr @strerror(i32 noundef %4928) #9
  %4930 = call ptr @__errno_location() #10
  %4931 = load i32, ptr %4930, align 4, !tbaa !5
  %4932 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4919, ptr noundef @.str.6, i32 noundef %4920, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 206, ptr noundef %4923, ptr noundef %4926, ptr noundef %4929, i32 noundef %4931) #9
  br label %4950

4933:                                             ; preds = %4911, %4904
  %4934 = load i32, ptr %98, align 4, !tbaa !5
  %4935 = call ptr @__errno_location() #10
  store i32 %4934, ptr %4935, align 4, !tbaa !5
  %4936 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4937 = load i32, ptr @test_count, align 4, !tbaa !5
  %4938 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4939 = load i32, ptr %4938, align 4, !tbaa !5
  %4940 = call ptr @s2n_strerror(i32 noundef %4939, ptr noundef @.str.8)
  %4941 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4942 = load i32, ptr %4941, align 4, !tbaa !5
  %4943 = call ptr @s2n_strerror_debug(i32 noundef %4942, ptr noundef @.str.8)
  %4944 = call ptr @__errno_location() #10
  %4945 = load i32, ptr %4944, align 4, !tbaa !5
  %4946 = call ptr @strerror(i32 noundef %4945) #9
  %4947 = call ptr @__errno_location() #10
  %4948 = load i32, ptr %4947, align 4, !tbaa !5
  %4949 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4936, ptr noundef @.str.9, i32 noundef %4937, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 206, ptr noundef %4940, ptr noundef %4943, ptr noundef %4946, i32 noundef %4948) #9
  br label %4950

4950:                                             ; preds = %4933, %4916
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #9
  br label %4951

4951:                                             ; preds = %4950
  br label %4952

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

4953:                                             ; No predecessors!
  br label %4954

4954:                                             ; preds = %4953
  br label %4955

4955:                                             ; preds = %4954, %4897
  br label %4956

4956:                                             ; preds = %4955
  br label %4957

4957:                                             ; preds = %4956
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  store ptr null, ptr %99, align 8, !tbaa !9
  br label %4958

4958:                                             ; preds = %4957
  %4959 = load i32, ptr @test_count, align 4, !tbaa !5
  %4960 = add nsw i32 %4959, 1
  store i32 %4960, ptr @test_count, align 4, !tbaa !5
  %4961 = load ptr, ptr %94, align 8, !tbaa !9
  %4962 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %4961, ptr noundef %99)
  %4963 = icmp eq i32 %4962, -1
  br i1 %4963, label %4964, label %5017

4964:                                             ; preds = %4958
  br label %4965

4965:                                             ; preds = %4964
  br label %4966

4966:                                             ; preds = %4965
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #9
  %4967 = call ptr @__errno_location() #10
  %4968 = load i32, ptr %4967, align 4, !tbaa !5
  store i32 %4968, ptr %100, align 4, !tbaa !5
  %4969 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4970 = call i32 @s2n_print_stacktrace(ptr noundef %4969)
  %4971 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %4972 = trunc i8 %4971 to i1
  br i1 %4972, label %4973, label %4995

4973:                                             ; preds = %4966
  %4974 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4975 = call i32 @fileno(ptr noundef %4974) #9
  %4976 = call i32 @isatty(i32 noundef %4975) #9
  %4977 = icmp ne i32 %4976, 0
  br i1 %4977, label %4978, label %4995

4978:                                             ; preds = %4973
  %4979 = load i32, ptr %100, align 4, !tbaa !5
  %4980 = call ptr @__errno_location() #10
  store i32 %4979, ptr %4980, align 4, !tbaa !5
  %4981 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4982 = load i32, ptr @test_count, align 4, !tbaa !5
  %4983 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4984 = load i32, ptr %4983, align 4, !tbaa !5
  %4985 = call ptr @s2n_strerror(i32 noundef %4984, ptr noundef @.str.8)
  %4986 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %4987 = load i32, ptr %4986, align 4, !tbaa !5
  %4988 = call ptr @s2n_strerror_debug(i32 noundef %4987, ptr noundef @.str.8)
  %4989 = call ptr @__errno_location() #10
  %4990 = load i32, ptr %4989, align 4, !tbaa !5
  %4991 = call ptr @strerror(i32 noundef %4990) #9
  %4992 = call ptr @__errno_location() #10
  %4993 = load i32, ptr %4992, align 4, !tbaa !5
  %4994 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4981, ptr noundef @.str.6, i32 noundef %4982, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 209, ptr noundef %4985, ptr noundef %4988, ptr noundef %4991, i32 noundef %4993) #9
  br label %5012

4995:                                             ; preds = %4973, %4966
  %4996 = load i32, ptr %100, align 4, !tbaa !5
  %4997 = call ptr @__errno_location() #10
  store i32 %4996, ptr %4997, align 4, !tbaa !5
  %4998 = load ptr, ptr @stderr, align 8, !tbaa !9
  %4999 = load i32, ptr @test_count, align 4, !tbaa !5
  %5000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5001 = load i32, ptr %5000, align 4, !tbaa !5
  %5002 = call ptr @s2n_strerror(i32 noundef %5001, ptr noundef @.str.8)
  %5003 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5004 = load i32, ptr %5003, align 4, !tbaa !5
  %5005 = call ptr @s2n_strerror_debug(i32 noundef %5004, ptr noundef @.str.8)
  %5006 = call ptr @__errno_location() #10
  %5007 = load i32, ptr %5006, align 4, !tbaa !5
  %5008 = call ptr @strerror(i32 noundef %5007) #9
  %5009 = call ptr @__errno_location() #10
  %5010 = load i32, ptr %5009, align 4, !tbaa !5
  %5011 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %4998, ptr noundef @.str.9, i32 noundef %4999, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 209, ptr noundef %5002, ptr noundef %5005, ptr noundef %5008, i32 noundef %5010) #9
  br label %5012

5012:                                             ; preds = %4995, %4978
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #9
  br label %5013

5013:                                             ; preds = %5012
  br label %5014

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

5015:                                             ; No predecessors!
  br label %5016

5016:                                             ; preds = %5015
  br label %5017

5017:                                             ; preds = %5016, %4958
  br label %5018

5018:                                             ; preds = %5017
  br label %5019

5019:                                             ; preds = %5018
  br label %5020

5020:                                             ; preds = %5019
  %5021 = load i32, ptr @test_count, align 4, !tbaa !5
  %5022 = add nsw i32 %5021, 1
  store i32 %5022, ptr @test_count, align 4, !tbaa !5
  %5023 = load ptr, ptr %99, align 8, !tbaa !9
  %5024 = icmp eq ptr %5023, null
  br i1 %5024, label %5025, label %5078

5025:                                             ; preds = %5020
  br label %5026

5026:                                             ; preds = %5025
  br label %5027

5027:                                             ; preds = %5026
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #9
  %5028 = call ptr @__errno_location() #10
  %5029 = load i32, ptr %5028, align 4, !tbaa !5
  store i32 %5029, ptr %101, align 4, !tbaa !5
  %5030 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5031 = call i32 @s2n_print_stacktrace(ptr noundef %5030)
  %5032 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5033 = trunc i8 %5032 to i1
  br i1 %5033, label %5034, label %5056

5034:                                             ; preds = %5027
  %5035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5036 = call i32 @fileno(ptr noundef %5035) #9
  %5037 = call i32 @isatty(i32 noundef %5036) #9
  %5038 = icmp ne i32 %5037, 0
  br i1 %5038, label %5039, label %5056

5039:                                             ; preds = %5034
  %5040 = load i32, ptr %101, align 4, !tbaa !5
  %5041 = call ptr @__errno_location() #10
  store i32 %5040, ptr %5041, align 4, !tbaa !5
  %5042 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5043 = load i32, ptr @test_count, align 4, !tbaa !5
  %5044 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5045 = load i32, ptr %5044, align 4, !tbaa !5
  %5046 = call ptr @s2n_strerror(i32 noundef %5045, ptr noundef @.str.8)
  %5047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5048 = load i32, ptr %5047, align 4, !tbaa !5
  %5049 = call ptr @s2n_strerror_debug(i32 noundef %5048, ptr noundef @.str.8)
  %5050 = call ptr @__errno_location() #10
  %5051 = load i32, ptr %5050, align 4, !tbaa !5
  %5052 = call ptr @strerror(i32 noundef %5051) #9
  %5053 = call ptr @__errno_location() #10
  %5054 = load i32, ptr %5053, align 4, !tbaa !5
  %5055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5042, ptr noundef @.str.6, i32 noundef %5043, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 210, ptr noundef %5046, ptr noundef %5049, ptr noundef %5052, i32 noundef %5054) #9
  br label %5073

5056:                                             ; preds = %5034, %5027
  %5057 = load i32, ptr %101, align 4, !tbaa !5
  %5058 = call ptr @__errno_location() #10
  store i32 %5057, ptr %5058, align 4, !tbaa !5
  %5059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5060 = load i32, ptr @test_count, align 4, !tbaa !5
  %5061 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5062 = load i32, ptr %5061, align 4, !tbaa !5
  %5063 = call ptr @s2n_strerror(i32 noundef %5062, ptr noundef @.str.8)
  %5064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5065 = load i32, ptr %5064, align 4, !tbaa !5
  %5066 = call ptr @s2n_strerror_debug(i32 noundef %5065, ptr noundef @.str.8)
  %5067 = call ptr @__errno_location() #10
  %5068 = load i32, ptr %5067, align 4, !tbaa !5
  %5069 = call ptr @strerror(i32 noundef %5068) #9
  %5070 = call ptr @__errno_location() #10
  %5071 = load i32, ptr %5070, align 4, !tbaa !5
  %5072 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5059, ptr noundef @.str.9, i32 noundef %5060, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 210, ptr noundef %5063, ptr noundef %5066, ptr noundef %5069, i32 noundef %5071) #9
  br label %5073

5073:                                             ; preds = %5056, %5039
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #9
  br label %5074

5074:                                             ; preds = %5073
  br label %5075

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

5076:                                             ; No predecessors!
  br label %5077

5077:                                             ; preds = %5076
  br label %5078

5078:                                             ; preds = %5077, %5020
  br label %5079

5079:                                             ; preds = %5078
  br label %5080

5080:                                             ; preds = %5079
  br label %5081

5081:                                             ; preds = %5080
  %5082 = load i32, ptr @test_count, align 4, !tbaa !5
  %5083 = add nsw i32 %5082, 1
  store i32 %5083, ptr @test_count, align 4, !tbaa !5
  %5084 = load ptr, ptr %99, align 8, !tbaa !9
  %5085 = icmp eq ptr %5084, %70
  br i1 %5085, label %5139, label %5086

5086:                                             ; preds = %5081
  br label %5087

5087:                                             ; preds = %5086
  br label %5088

5088:                                             ; preds = %5087
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #9
  %5089 = call ptr @__errno_location() #10
  %5090 = load i32, ptr %5089, align 4, !tbaa !5
  store i32 %5090, ptr %102, align 4, !tbaa !5
  %5091 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5092 = call i32 @s2n_print_stacktrace(ptr noundef %5091)
  %5093 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5094 = trunc i8 %5093 to i1
  br i1 %5094, label %5095, label %5117

5095:                                             ; preds = %5088
  %5096 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5097 = call i32 @fileno(ptr noundef %5096) #9
  %5098 = call i32 @isatty(i32 noundef %5097) #9
  %5099 = icmp ne i32 %5098, 0
  br i1 %5099, label %5100, label %5117

5100:                                             ; preds = %5095
  %5101 = load i32, ptr %102, align 4, !tbaa !5
  %5102 = call ptr @__errno_location() #10
  store i32 %5101, ptr %5102, align 4, !tbaa !5
  %5103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5104 = load i32, ptr @test_count, align 4, !tbaa !5
  %5105 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5106 = load i32, ptr %5105, align 4, !tbaa !5
  %5107 = call ptr @s2n_strerror(i32 noundef %5106, ptr noundef @.str.8)
  %5108 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5109 = load i32, ptr %5108, align 4, !tbaa !5
  %5110 = call ptr @s2n_strerror_debug(i32 noundef %5109, ptr noundef @.str.8)
  %5111 = call ptr @__errno_location() #10
  %5112 = load i32, ptr %5111, align 4, !tbaa !5
  %5113 = call ptr @strerror(i32 noundef %5112) #9
  %5114 = call ptr @__errno_location() #10
  %5115 = load i32, ptr %5114, align 4, !tbaa !5
  %5116 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5103, ptr noundef @.str.6, i32 noundef %5104, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 211, ptr noundef %5107, ptr noundef %5110, ptr noundef %5113, i32 noundef %5115) #9
  br label %5134

5117:                                             ; preds = %5095, %5088
  %5118 = load i32, ptr %102, align 4, !tbaa !5
  %5119 = call ptr @__errno_location() #10
  store i32 %5118, ptr %5119, align 4, !tbaa !5
  %5120 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5121 = load i32, ptr @test_count, align 4, !tbaa !5
  %5122 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5123 = load i32, ptr %5122, align 4, !tbaa !5
  %5124 = call ptr @s2n_strerror(i32 noundef %5123, ptr noundef @.str.8)
  %5125 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5126 = load i32, ptr %5125, align 4, !tbaa !5
  %5127 = call ptr @s2n_strerror_debug(i32 noundef %5126, ptr noundef @.str.8)
  %5128 = call ptr @__errno_location() #10
  %5129 = load i32, ptr %5128, align 4, !tbaa !5
  %5130 = call ptr @strerror(i32 noundef %5129) #9
  %5131 = call ptr @__errno_location() #10
  %5132 = load i32, ptr %5131, align 4, !tbaa !5
  %5133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5120, ptr noundef @.str.9, i32 noundef %5121, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 211, ptr noundef %5124, ptr noundef %5127, ptr noundef %5130, i32 noundef %5132) #9
  br label %5134

5134:                                             ; preds = %5117, %5100
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #9
  br label %5135

5135:                                             ; preds = %5134
  br label %5136

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

5137:                                             ; No predecessors!
  br label %5138

5138:                                             ; preds = %5137
  br label %5139

5139:                                             ; preds = %5138, %5081
  br label %5140

5140:                                             ; preds = %5139
  br label %5141

5141:                                             ; preds = %5140
  br label %5142

5142:                                             ; preds = %5141
  %5143 = load i32, ptr @test_count, align 4, !tbaa !5
  %5144 = add nsw i32 %5143, 1
  store i32 %5144, ptr @test_count, align 4, !tbaa !5
  %5145 = load ptr, ptr %94, align 8, !tbaa !9
  %5146 = getelementptr inbounds %struct.s2n_connection, ptr %5145, i32 0, i32 31
  %5147 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5146, i32 0, i32 4
  %5148 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5147, i32 0, i32 0
  %5149 = load ptr, ptr %5148, align 8, !tbaa !24
  %5150 = icmp eq ptr %5149, null
  br i1 %5150, label %5204, label %5151

5151:                                             ; preds = %5142
  br label %5152

5152:                                             ; preds = %5151
  br label %5153

5153:                                             ; preds = %5152
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #9
  %5154 = call ptr @__errno_location() #10
  %5155 = load i32, ptr %5154, align 4, !tbaa !5
  store i32 %5155, ptr %103, align 4, !tbaa !5
  %5156 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5157 = call i32 @s2n_print_stacktrace(ptr noundef %5156)
  %5158 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5159 = trunc i8 %5158 to i1
  br i1 %5159, label %5160, label %5182

5160:                                             ; preds = %5153
  %5161 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5162 = call i32 @fileno(ptr noundef %5161) #9
  %5163 = call i32 @isatty(i32 noundef %5162) #9
  %5164 = icmp ne i32 %5163, 0
  br i1 %5164, label %5165, label %5182

5165:                                             ; preds = %5160
  %5166 = load i32, ptr %103, align 4, !tbaa !5
  %5167 = call ptr @__errno_location() #10
  store i32 %5166, ptr %5167, align 4, !tbaa !5
  %5168 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5169 = load i32, ptr @test_count, align 4, !tbaa !5
  %5170 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5171 = load i32, ptr %5170, align 4, !tbaa !5
  %5172 = call ptr @s2n_strerror(i32 noundef %5171, ptr noundef @.str.8)
  %5173 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5174 = load i32, ptr %5173, align 4, !tbaa !5
  %5175 = call ptr @s2n_strerror_debug(i32 noundef %5174, ptr noundef @.str.8)
  %5176 = call ptr @__errno_location() #10
  %5177 = load i32, ptr %5176, align 4, !tbaa !5
  %5178 = call ptr @strerror(i32 noundef %5177) #9
  %5179 = call ptr @__errno_location() #10
  %5180 = load i32, ptr %5179, align 4, !tbaa !5
  %5181 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5168, ptr noundef @.str.6, i32 noundef %5169, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 213, ptr noundef %5172, ptr noundef %5175, ptr noundef %5178, i32 noundef %5180) #9
  br label %5199

5182:                                             ; preds = %5160, %5153
  %5183 = load i32, ptr %103, align 4, !tbaa !5
  %5184 = call ptr @__errno_location() #10
  store i32 %5183, ptr %5184, align 4, !tbaa !5
  %5185 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5186 = load i32, ptr @test_count, align 4, !tbaa !5
  %5187 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5188 = load i32, ptr %5187, align 4, !tbaa !5
  %5189 = call ptr @s2n_strerror(i32 noundef %5188, ptr noundef @.str.8)
  %5190 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5191 = load i32, ptr %5190, align 4, !tbaa !5
  %5192 = call ptr @s2n_strerror_debug(i32 noundef %5191, ptr noundef @.str.8)
  %5193 = call ptr @__errno_location() #10
  %5194 = load i32, ptr %5193, align 4, !tbaa !5
  %5195 = call ptr @strerror(i32 noundef %5194) #9
  %5196 = call ptr @__errno_location() #10
  %5197 = load i32, ptr %5196, align 4, !tbaa !5
  %5198 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5185, ptr noundef @.str.9, i32 noundef %5186, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 213, ptr noundef %5189, ptr noundef %5192, ptr noundef %5195, i32 noundef %5197) #9
  br label %5199

5199:                                             ; preds = %5182, %5165
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #9
  br label %5200

5200:                                             ; preds = %5199
  br label %5201

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

5202:                                             ; No predecessors!
  br label %5203

5203:                                             ; preds = %5202
  br label %5204

5204:                                             ; preds = %5203, %5142
  br label %5205

5205:                                             ; preds = %5204
  br label %5206

5206:                                             ; preds = %5205
  br label %5207

5207:                                             ; preds = %5206
  %5208 = load i32, ptr @test_count, align 4, !tbaa !5
  %5209 = add nsw i32 %5208, 1
  store i32 %5209, ptr @test_count, align 4, !tbaa !5
  %5210 = load ptr, ptr %94, align 8, !tbaa !9
  %5211 = getelementptr inbounds %struct.s2n_connection, ptr %5210, i32 0, i32 31
  %5212 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5211, i32 0, i32 4
  %5213 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5212, i32 0, i32 2
  %5214 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %5213, i32 0, i32 0
  %5215 = load ptr, ptr %5214, align 8, !tbaa !50
  %5216 = icmp eq ptr %5215, null
  br i1 %5216, label %5270, label %5217

5217:                                             ; preds = %5207
  br label %5218

5218:                                             ; preds = %5217
  br label %5219

5219:                                             ; preds = %5218
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #9
  %5220 = call ptr @__errno_location() #10
  %5221 = load i32, ptr %5220, align 4, !tbaa !5
  store i32 %5221, ptr %104, align 4, !tbaa !5
  %5222 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5223 = call i32 @s2n_print_stacktrace(ptr noundef %5222)
  %5224 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5225 = trunc i8 %5224 to i1
  br i1 %5225, label %5226, label %5248

5226:                                             ; preds = %5219
  %5227 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5228 = call i32 @fileno(ptr noundef %5227) #9
  %5229 = call i32 @isatty(i32 noundef %5228) #9
  %5230 = icmp ne i32 %5229, 0
  br i1 %5230, label %5231, label %5248

5231:                                             ; preds = %5226
  %5232 = load i32, ptr %104, align 4, !tbaa !5
  %5233 = call ptr @__errno_location() #10
  store i32 %5232, ptr %5233, align 4, !tbaa !5
  %5234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5235 = load i32, ptr @test_count, align 4, !tbaa !5
  %5236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5237 = load i32, ptr %5236, align 4, !tbaa !5
  %5238 = call ptr @s2n_strerror(i32 noundef %5237, ptr noundef @.str.8)
  %5239 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5240 = load i32, ptr %5239, align 4, !tbaa !5
  %5241 = call ptr @s2n_strerror_debug(i32 noundef %5240, ptr noundef @.str.8)
  %5242 = call ptr @__errno_location() #10
  %5243 = load i32, ptr %5242, align 4, !tbaa !5
  %5244 = call ptr @strerror(i32 noundef %5243) #9
  %5245 = call ptr @__errno_location() #10
  %5246 = load i32, ptr %5245, align 4, !tbaa !5
  %5247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5234, ptr noundef @.str.6, i32 noundef %5235, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 214, ptr noundef %5238, ptr noundef %5241, ptr noundef %5244, i32 noundef %5246) #9
  br label %5265

5248:                                             ; preds = %5226, %5219
  %5249 = load i32, ptr %104, align 4, !tbaa !5
  %5250 = call ptr @__errno_location() #10
  store i32 %5249, ptr %5250, align 4, !tbaa !5
  %5251 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5252 = load i32, ptr @test_count, align 4, !tbaa !5
  %5253 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5254 = load i32, ptr %5253, align 4, !tbaa !5
  %5255 = call ptr @s2n_strerror(i32 noundef %5254, ptr noundef @.str.8)
  %5256 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5257 = load i32, ptr %5256, align 4, !tbaa !5
  %5258 = call ptr @s2n_strerror_debug(i32 noundef %5257, ptr noundef @.str.8)
  %5259 = call ptr @__errno_location() #10
  %5260 = load i32, ptr %5259, align 4, !tbaa !5
  %5261 = call ptr @strerror(i32 noundef %5260) #9
  %5262 = call ptr @__errno_location() #10
  %5263 = load i32, ptr %5262, align 4, !tbaa !5
  %5264 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5251, ptr noundef @.str.9, i32 noundef %5252, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 214, ptr noundef %5255, ptr noundef %5258, ptr noundef %5261, i32 noundef %5263) #9
  br label %5265

5265:                                             ; preds = %5248, %5231
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #9
  br label %5266

5266:                                             ; preds = %5265
  br label %5267

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

5268:                                             ; No predecessors!
  br label %5269

5269:                                             ; preds = %5268
  br label %5270

5270:                                             ; preds = %5269, %5207
  br label %5271

5271:                                             ; preds = %5270
  br label %5272

5272:                                             ; preds = %5271
  br label %5273

5273:                                             ; preds = %5272
  %5274 = load i32, ptr @test_count, align 4, !tbaa !5
  %5275 = add nsw i32 %5274, 1
  store i32 %5275, ptr @test_count, align 4, !tbaa !5
  %5276 = load ptr, ptr %94, align 8, !tbaa !9
  %5277 = getelementptr inbounds %struct.s2n_connection, ptr %5276, i32 0, i32 31
  %5278 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5277, i32 0, i32 4
  %5279 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5278, i32 0, i32 1
  %5280 = getelementptr inbounds %struct.s2n_kem_params, ptr %5279, i32 0, i32 0
  %5281 = load ptr, ptr %5280, align 8, !tbaa !51
  %5282 = icmp eq ptr %5281, null
  br i1 %5282, label %5336, label %5283

5283:                                             ; preds = %5273
  br label %5284

5284:                                             ; preds = %5283
  br label %5285

5285:                                             ; preds = %5284
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #9
  %5286 = call ptr @__errno_location() #10
  %5287 = load i32, ptr %5286, align 4, !tbaa !5
  store i32 %5287, ptr %105, align 4, !tbaa !5
  %5288 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5289 = call i32 @s2n_print_stacktrace(ptr noundef %5288)
  %5290 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5291 = trunc i8 %5290 to i1
  br i1 %5291, label %5292, label %5314

5292:                                             ; preds = %5285
  %5293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5294 = call i32 @fileno(ptr noundef %5293) #9
  %5295 = call i32 @isatty(i32 noundef %5294) #9
  %5296 = icmp ne i32 %5295, 0
  br i1 %5296, label %5297, label %5314

5297:                                             ; preds = %5292
  %5298 = load i32, ptr %105, align 4, !tbaa !5
  %5299 = call ptr @__errno_location() #10
  store i32 %5298, ptr %5299, align 4, !tbaa !5
  %5300 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5301 = load i32, ptr @test_count, align 4, !tbaa !5
  %5302 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5303 = load i32, ptr %5302, align 4, !tbaa !5
  %5304 = call ptr @s2n_strerror(i32 noundef %5303, ptr noundef @.str.8)
  %5305 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5306 = load i32, ptr %5305, align 4, !tbaa !5
  %5307 = call ptr @s2n_strerror_debug(i32 noundef %5306, ptr noundef @.str.8)
  %5308 = call ptr @__errno_location() #10
  %5309 = load i32, ptr %5308, align 4, !tbaa !5
  %5310 = call ptr @strerror(i32 noundef %5309) #9
  %5311 = call ptr @__errno_location() #10
  %5312 = load i32, ptr %5311, align 4, !tbaa !5
  %5313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5300, ptr noundef @.str.6, i32 noundef %5301, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 215, ptr noundef %5304, ptr noundef %5307, ptr noundef %5310, i32 noundef %5312) #9
  br label %5331

5314:                                             ; preds = %5292, %5285
  %5315 = load i32, ptr %105, align 4, !tbaa !5
  %5316 = call ptr @__errno_location() #10
  store i32 %5315, ptr %5316, align 4, !tbaa !5
  %5317 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5318 = load i32, ptr @test_count, align 4, !tbaa !5
  %5319 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5320 = load i32, ptr %5319, align 4, !tbaa !5
  %5321 = call ptr @s2n_strerror(i32 noundef %5320, ptr noundef @.str.8)
  %5322 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5323 = load i32, ptr %5322, align 4, !tbaa !5
  %5324 = call ptr @s2n_strerror_debug(i32 noundef %5323, ptr noundef @.str.8)
  %5325 = call ptr @__errno_location() #10
  %5326 = load i32, ptr %5325, align 4, !tbaa !5
  %5327 = call ptr @strerror(i32 noundef %5326) #9
  %5328 = call ptr @__errno_location() #10
  %5329 = load i32, ptr %5328, align 4, !tbaa !5
  %5330 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5317, ptr noundef @.str.9, i32 noundef %5318, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 215, ptr noundef %5321, ptr noundef %5324, ptr noundef %5327, i32 noundef %5329) #9
  br label %5331

5331:                                             ; preds = %5314, %5297
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #9
  br label %5332

5332:                                             ; preds = %5331
  br label %5333

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

5334:                                             ; No predecessors!
  br label %5335

5335:                                             ; preds = %5334
  br label %5336

5336:                                             ; preds = %5335, %5273
  br label %5337

5337:                                             ; preds = %5336
  br label %5338

5338:                                             ; preds = %5337
  br label %5339

5339:                                             ; preds = %5338
  %5340 = load i32, ptr @test_count, align 4, !tbaa !5
  %5341 = add nsw i32 %5340, 1
  store i32 %5341, ptr @test_count, align 4, !tbaa !5
  %5342 = load ptr, ptr %94, align 8, !tbaa !9
  %5343 = getelementptr inbounds %struct.s2n_connection, ptr %5342, i32 0, i32 31
  %5344 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5343, i32 0, i32 1
  %5345 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %5344, i32 0, i32 0
  %5346 = load ptr, ptr %5345, align 8, !tbaa !52
  %5347 = icmp eq ptr %5346, null
  br i1 %5347, label %5401, label %5348

5348:                                             ; preds = %5339
  br label %5349

5349:                                             ; preds = %5348
  br label %5350

5350:                                             ; preds = %5349
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #9
  %5351 = call ptr @__errno_location() #10
  %5352 = load i32, ptr %5351, align 4, !tbaa !5
  store i32 %5352, ptr %106, align 4, !tbaa !5
  %5353 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5354 = call i32 @s2n_print_stacktrace(ptr noundef %5353)
  %5355 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5356 = trunc i8 %5355 to i1
  br i1 %5356, label %5357, label %5379

5357:                                             ; preds = %5350
  %5358 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5359 = call i32 @fileno(ptr noundef %5358) #9
  %5360 = call i32 @isatty(i32 noundef %5359) #9
  %5361 = icmp ne i32 %5360, 0
  br i1 %5361, label %5362, label %5379

5362:                                             ; preds = %5357
  %5363 = load i32, ptr %106, align 4, !tbaa !5
  %5364 = call ptr @__errno_location() #10
  store i32 %5363, ptr %5364, align 4, !tbaa !5
  %5365 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5366 = load i32, ptr @test_count, align 4, !tbaa !5
  %5367 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5368 = load i32, ptr %5367, align 4, !tbaa !5
  %5369 = call ptr @s2n_strerror(i32 noundef %5368, ptr noundef @.str.8)
  %5370 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5371 = load i32, ptr %5370, align 4, !tbaa !5
  %5372 = call ptr @s2n_strerror_debug(i32 noundef %5371, ptr noundef @.str.8)
  %5373 = call ptr @__errno_location() #10
  %5374 = load i32, ptr %5373, align 4, !tbaa !5
  %5375 = call ptr @strerror(i32 noundef %5374) #9
  %5376 = call ptr @__errno_location() #10
  %5377 = load i32, ptr %5376, align 4, !tbaa !5
  %5378 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5365, ptr noundef @.str.6, i32 noundef %5366, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 216, ptr noundef %5369, ptr noundef %5372, ptr noundef %5375, i32 noundef %5377) #9
  br label %5396

5379:                                             ; preds = %5357, %5350
  %5380 = load i32, ptr %106, align 4, !tbaa !5
  %5381 = call ptr @__errno_location() #10
  store i32 %5380, ptr %5381, align 4, !tbaa !5
  %5382 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5383 = load i32, ptr @test_count, align 4, !tbaa !5
  %5384 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5385 = load i32, ptr %5384, align 4, !tbaa !5
  %5386 = call ptr @s2n_strerror(i32 noundef %5385, ptr noundef @.str.8)
  %5387 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5388 = load i32, ptr %5387, align 4, !tbaa !5
  %5389 = call ptr @s2n_strerror_debug(i32 noundef %5388, ptr noundef @.str.8)
  %5390 = call ptr @__errno_location() #10
  %5391 = load i32, ptr %5390, align 4, !tbaa !5
  %5392 = call ptr @strerror(i32 noundef %5391) #9
  %5393 = call ptr @__errno_location() #10
  %5394 = load i32, ptr %5393, align 4, !tbaa !5
  %5395 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5382, ptr noundef @.str.9, i32 noundef %5383, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 216, ptr noundef %5386, ptr noundef %5389, ptr noundef %5392, i32 noundef %5394) #9
  br label %5396

5396:                                             ; preds = %5379, %5362
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #9
  br label %5397

5397:                                             ; preds = %5396
  br label %5398

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

5399:                                             ; No predecessors!
  br label %5400

5400:                                             ; preds = %5399
  br label %5401

5401:                                             ; preds = %5400, %5339
  br label %5402

5402:                                             ; preds = %5401
  br label %5403

5403:                                             ; preds = %5402
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #9
  store i64 0, ptr %107, align 8, !tbaa !15
  br label %5404

5404:                                             ; preds = %5424, %5403
  %5405 = load i64, ptr %107, align 8, !tbaa !15
  %5406 = load ptr, ptr %96, align 8, !tbaa !9
  %5407 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %5406, i32 0, i32 0
  %5408 = load i8, ptr %5407, align 8, !tbaa !17
  %5409 = zext i8 %5408 to i64
  %5410 = icmp ult i64 %5405, %5409
  br i1 %5410, label %5412, label %5411

5411:                                             ; preds = %5404
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  br label %5427

5412:                                             ; preds = %5404
  %5413 = load ptr, ptr %96, align 8, !tbaa !9
  %5414 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %5413, i32 0, i32 1
  %5415 = load ptr, ptr %5414, align 8, !tbaa !55
  %5416 = load i64, ptr %107, align 8, !tbaa !15
  %5417 = getelementptr inbounds ptr, ptr %5415, i64 %5416
  %5418 = load ptr, ptr %5417, align 8, !tbaa !9
  %5419 = load ptr, ptr %94, align 8, !tbaa !9
  %5420 = getelementptr inbounds %struct.s2n_connection, ptr %5419, i32 0, i32 31
  %5421 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5420, i32 0, i32 2
  %5422 = load i64, ptr %107, align 8, !tbaa !15
  %5423 = getelementptr inbounds [4 x ptr], ptr %5421, i64 0, i64 %5422
  store ptr %5418, ptr %5423, align 8, !tbaa !9
  br label %5424

5424:                                             ; preds = %5412
  %5425 = load i64, ptr %107, align 8, !tbaa !15
  %5426 = add i64 %5425, 1
  store i64 %5426, ptr %107, align 8, !tbaa !15
  br label %5404, !llvm.loop !71

5427:                                             ; preds = %5411
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #9
  store i64 0, ptr %108, align 8, !tbaa !15
  br label %5428

5428:                                             ; preds = %5448, %5427
  %5429 = load i64, ptr %108, align 8, !tbaa !15
  %5430 = load ptr, ptr %99, align 8, !tbaa !9
  %5431 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %5430, i32 0, i32 2
  %5432 = load i8, ptr %5431, align 8, !tbaa !21
  %5433 = zext i8 %5432 to i64
  %5434 = icmp ult i64 %5429, %5433
  br i1 %5434, label %5436, label %5435

5435:                                             ; preds = %5428
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #9
  br label %5451

5436:                                             ; preds = %5428
  %5437 = load ptr, ptr %99, align 8, !tbaa !9
  %5438 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %5437, i32 0, i32 3
  %5439 = load ptr, ptr %5438, align 8, !tbaa !58
  %5440 = load i64, ptr %108, align 8, !tbaa !15
  %5441 = getelementptr inbounds ptr, ptr %5439, i64 %5440
  %5442 = load ptr, ptr %5441, align 8, !tbaa !9
  %5443 = load ptr, ptr %94, align 8, !tbaa !9
  %5444 = getelementptr inbounds %struct.s2n_connection, ptr %5443, i32 0, i32 31
  %5445 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5444, i32 0, i32 6
  %5446 = load i64, ptr %108, align 8, !tbaa !15
  %5447 = getelementptr inbounds [8 x ptr], ptr %5445, i64 0, i64 %5446
  store ptr %5442, ptr %5447, align 8, !tbaa !9
  br label %5448

5448:                                             ; preds = %5436
  %5449 = load i64, ptr %108, align 8, !tbaa !15
  %5450 = add i64 %5449, 1
  store i64 %5450, ptr %108, align 8, !tbaa !15
  br label %5428, !llvm.loop !72

5451:                                             ; preds = %5435
  br label %5452

5452:                                             ; preds = %5451
  %5453 = load i32, ptr @test_count, align 4, !tbaa !5
  %5454 = add nsw i32 %5453, 1
  store i32 %5454, ptr @test_count, align 4, !tbaa !5
  %5455 = load ptr, ptr %94, align 8, !tbaa !9
  %5456 = call i32 @s2n_choose_supported_group(ptr noundef %5455)
  %5457 = icmp eq i32 %5456, -1
  br i1 %5457, label %5458, label %5511

5458:                                             ; preds = %5452
  br label %5459

5459:                                             ; preds = %5458
  br label %5460

5460:                                             ; preds = %5459
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #9
  %5461 = call ptr @__errno_location() #10
  %5462 = load i32, ptr %5461, align 4, !tbaa !5
  store i32 %5462, ptr %109, align 4, !tbaa !5
  %5463 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5464 = call i32 @s2n_print_stacktrace(ptr noundef %5463)
  %5465 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5466 = trunc i8 %5465 to i1
  br i1 %5466, label %5467, label %5489

5467:                                             ; preds = %5460
  %5468 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5469 = call i32 @fileno(ptr noundef %5468) #9
  %5470 = call i32 @isatty(i32 noundef %5469) #9
  %5471 = icmp ne i32 %5470, 0
  br i1 %5471, label %5472, label %5489

5472:                                             ; preds = %5467
  %5473 = load i32, ptr %109, align 4, !tbaa !5
  %5474 = call ptr @__errno_location() #10
  store i32 %5473, ptr %5474, align 4, !tbaa !5
  %5475 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5476 = load i32, ptr @test_count, align 4, !tbaa !5
  %5477 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5478 = load i32, ptr %5477, align 4, !tbaa !5
  %5479 = call ptr @s2n_strerror(i32 noundef %5478, ptr noundef @.str.8)
  %5480 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5481 = load i32, ptr %5480, align 4, !tbaa !5
  %5482 = call ptr @s2n_strerror_debug(i32 noundef %5481, ptr noundef @.str.8)
  %5483 = call ptr @__errno_location() #10
  %5484 = load i32, ptr %5483, align 4, !tbaa !5
  %5485 = call ptr @strerror(i32 noundef %5484) #9
  %5486 = call ptr @__errno_location() #10
  %5487 = load i32, ptr %5486, align 4, !tbaa !5
  %5488 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5475, ptr noundef @.str.6, i32 noundef %5476, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 226, ptr noundef %5479, ptr noundef %5482, ptr noundef %5485, i32 noundef %5487) #9
  br label %5506

5489:                                             ; preds = %5467, %5460
  %5490 = load i32, ptr %109, align 4, !tbaa !5
  %5491 = call ptr @__errno_location() #10
  store i32 %5490, ptr %5491, align 4, !tbaa !5
  %5492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5493 = load i32, ptr @test_count, align 4, !tbaa !5
  %5494 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5495 = load i32, ptr %5494, align 4, !tbaa !5
  %5496 = call ptr @s2n_strerror(i32 noundef %5495, ptr noundef @.str.8)
  %5497 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5498 = load i32, ptr %5497, align 4, !tbaa !5
  %5499 = call ptr @s2n_strerror_debug(i32 noundef %5498, ptr noundef @.str.8)
  %5500 = call ptr @__errno_location() #10
  %5501 = load i32, ptr %5500, align 4, !tbaa !5
  %5502 = call ptr @strerror(i32 noundef %5501) #9
  %5503 = call ptr @__errno_location() #10
  %5504 = load i32, ptr %5503, align 4, !tbaa !5
  %5505 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5492, ptr noundef @.str.9, i32 noundef %5493, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 226, ptr noundef %5496, ptr noundef %5499, ptr noundef %5502, i32 noundef %5504) #9
  br label %5506

5506:                                             ; preds = %5489, %5472
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  br label %5507

5507:                                             ; preds = %5506
  br label %5508

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

5509:                                             ; No predecessors!
  br label %5510

5510:                                             ; preds = %5509
  br label %5511

5511:                                             ; preds = %5510, %5452
  br label %5512

5512:                                             ; preds = %5511
  br label %5513

5513:                                             ; preds = %5512
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #9
  %5514 = load ptr, ptr %99, align 8, !tbaa !9
  %5515 = call ptr @s2n_kem_preferences_get_highest_priority_group(ptr noundef %5514)
  store ptr %5515, ptr %110, align 8, !tbaa !9
  %5516 = call zeroext i1 @s2n_pq_is_enabled()
  br i1 %5516, label %5517, label %5848

5517:                                             ; preds = %5513
  br label %5518

5518:                                             ; preds = %5517
  %5519 = load i32, ptr @test_count, align 4, !tbaa !5
  %5520 = add nsw i32 %5519, 1
  store i32 %5520, ptr @test_count, align 4, !tbaa !5
  %5521 = load ptr, ptr %110, align 8, !tbaa !9
  %5522 = icmp eq ptr %5521, null
  br i1 %5522, label %5523, label %5576

5523:                                             ; preds = %5518
  br label %5524

5524:                                             ; preds = %5523
  br label %5525

5525:                                             ; preds = %5524
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #9
  %5526 = call ptr @__errno_location() #10
  %5527 = load i32, ptr %5526, align 4, !tbaa !5
  store i32 %5527, ptr %111, align 4, !tbaa !5
  %5528 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5529 = call i32 @s2n_print_stacktrace(ptr noundef %5528)
  %5530 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5531 = trunc i8 %5530 to i1
  br i1 %5531, label %5532, label %5554

5532:                                             ; preds = %5525
  %5533 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5534 = call i32 @fileno(ptr noundef %5533) #9
  %5535 = call i32 @isatty(i32 noundef %5534) #9
  %5536 = icmp ne i32 %5535, 0
  br i1 %5536, label %5537, label %5554

5537:                                             ; preds = %5532
  %5538 = load i32, ptr %111, align 4, !tbaa !5
  %5539 = call ptr @__errno_location() #10
  store i32 %5538, ptr %5539, align 4, !tbaa !5
  %5540 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5541 = load i32, ptr @test_count, align 4, !tbaa !5
  %5542 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5543 = load i32, ptr %5542, align 4, !tbaa !5
  %5544 = call ptr @s2n_strerror(i32 noundef %5543, ptr noundef @.str.8)
  %5545 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5546 = load i32, ptr %5545, align 4, !tbaa !5
  %5547 = call ptr @s2n_strerror_debug(i32 noundef %5546, ptr noundef @.str.8)
  %5548 = call ptr @__errno_location() #10
  %5549 = load i32, ptr %5548, align 4, !tbaa !5
  %5550 = call ptr @strerror(i32 noundef %5549) #9
  %5551 = call ptr @__errno_location() #10
  %5552 = load i32, ptr %5551, align 4, !tbaa !5
  %5553 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5540, ptr noundef @.str.6, i32 noundef %5541, ptr noundef @.str.30, ptr noundef @.str.5, i32 noundef 230, ptr noundef %5544, ptr noundef %5547, ptr noundef %5550, i32 noundef %5552) #9
  br label %5571

5554:                                             ; preds = %5532, %5525
  %5555 = load i32, ptr %111, align 4, !tbaa !5
  %5556 = call ptr @__errno_location() #10
  store i32 %5555, ptr %5556, align 4, !tbaa !5
  %5557 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5558 = load i32, ptr @test_count, align 4, !tbaa !5
  %5559 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5560 = load i32, ptr %5559, align 4, !tbaa !5
  %5561 = call ptr @s2n_strerror(i32 noundef %5560, ptr noundef @.str.8)
  %5562 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5563 = load i32, ptr %5562, align 4, !tbaa !5
  %5564 = call ptr @s2n_strerror_debug(i32 noundef %5563, ptr noundef @.str.8)
  %5565 = call ptr @__errno_location() #10
  %5566 = load i32, ptr %5565, align 4, !tbaa !5
  %5567 = call ptr @strerror(i32 noundef %5566) #9
  %5568 = call ptr @__errno_location() #10
  %5569 = load i32, ptr %5568, align 4, !tbaa !5
  %5570 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5557, ptr noundef @.str.9, i32 noundef %5558, ptr noundef @.str.30, ptr noundef @.str.5, i32 noundef 230, ptr noundef %5561, ptr noundef %5564, ptr noundef %5567, i32 noundef %5569) #9
  br label %5571

5571:                                             ; preds = %5554, %5537
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #9
  br label %5572

5572:                                             ; preds = %5571
  br label %5573

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

5574:                                             ; No predecessors!
  br label %5575

5575:                                             ; preds = %5574
  br label %5576

5576:                                             ; preds = %5575, %5518
  br label %5577

5577:                                             ; preds = %5576
  br label %5578

5578:                                             ; preds = %5577
  br label %5579

5579:                                             ; preds = %5578
  %5580 = load i32, ptr @test_count, align 4, !tbaa !5
  %5581 = add nsw i32 %5580, 1
  store i32 %5581, ptr @test_count, align 4, !tbaa !5
  %5582 = load ptr, ptr %94, align 8, !tbaa !9
  %5583 = getelementptr inbounds %struct.s2n_connection, ptr %5582, i32 0, i32 31
  %5584 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5583, i32 0, i32 4
  %5585 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5584, i32 0, i32 0
  %5586 = load ptr, ptr %5585, align 8, !tbaa !24
  %5587 = load ptr, ptr %110, align 8, !tbaa !9
  %5588 = icmp eq ptr %5586, %5587
  br i1 %5588, label %5642, label %5589

5589:                                             ; preds = %5579
  br label %5590

5590:                                             ; preds = %5589
  br label %5591

5591:                                             ; preds = %5590
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #9
  %5592 = call ptr @__errno_location() #10
  %5593 = load i32, ptr %5592, align 4, !tbaa !5
  store i32 %5593, ptr %112, align 4, !tbaa !5
  %5594 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5595 = call i32 @s2n_print_stacktrace(ptr noundef %5594)
  %5596 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5597 = trunc i8 %5596 to i1
  br i1 %5597, label %5598, label %5620

5598:                                             ; preds = %5591
  %5599 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5600 = call i32 @fileno(ptr noundef %5599) #9
  %5601 = call i32 @isatty(i32 noundef %5600) #9
  %5602 = icmp ne i32 %5601, 0
  br i1 %5602, label %5603, label %5620

5603:                                             ; preds = %5598
  %5604 = load i32, ptr %112, align 4, !tbaa !5
  %5605 = call ptr @__errno_location() #10
  store i32 %5604, ptr %5605, align 4, !tbaa !5
  %5606 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5607 = load i32, ptr @test_count, align 4, !tbaa !5
  %5608 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5609 = load i32, ptr %5608, align 4, !tbaa !5
  %5610 = call ptr @s2n_strerror(i32 noundef %5609, ptr noundef @.str.8)
  %5611 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5612 = load i32, ptr %5611, align 4, !tbaa !5
  %5613 = call ptr @s2n_strerror_debug(i32 noundef %5612, ptr noundef @.str.8)
  %5614 = call ptr @__errno_location() #10
  %5615 = load i32, ptr %5614, align 4, !tbaa !5
  %5616 = call ptr @strerror(i32 noundef %5615) #9
  %5617 = call ptr @__errno_location() #10
  %5618 = load i32, ptr %5617, align 4, !tbaa !5
  %5619 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5606, ptr noundef @.str.6, i32 noundef %5607, ptr noundef @.str.31, ptr noundef @.str.5, i32 noundef 231, ptr noundef %5610, ptr noundef %5613, ptr noundef %5616, i32 noundef %5618) #9
  br label %5637

5620:                                             ; preds = %5598, %5591
  %5621 = load i32, ptr %112, align 4, !tbaa !5
  %5622 = call ptr @__errno_location() #10
  store i32 %5621, ptr %5622, align 4, !tbaa !5
  %5623 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5624 = load i32, ptr @test_count, align 4, !tbaa !5
  %5625 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5626 = load i32, ptr %5625, align 4, !tbaa !5
  %5627 = call ptr @s2n_strerror(i32 noundef %5626, ptr noundef @.str.8)
  %5628 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5629 = load i32, ptr %5628, align 4, !tbaa !5
  %5630 = call ptr @s2n_strerror_debug(i32 noundef %5629, ptr noundef @.str.8)
  %5631 = call ptr @__errno_location() #10
  %5632 = load i32, ptr %5631, align 4, !tbaa !5
  %5633 = call ptr @strerror(i32 noundef %5632) #9
  %5634 = call ptr @__errno_location() #10
  %5635 = load i32, ptr %5634, align 4, !tbaa !5
  %5636 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5623, ptr noundef @.str.9, i32 noundef %5624, ptr noundef @.str.31, ptr noundef @.str.5, i32 noundef 231, ptr noundef %5627, ptr noundef %5630, ptr noundef %5633, i32 noundef %5635) #9
  br label %5637

5637:                                             ; preds = %5620, %5603
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #9
  br label %5638

5638:                                             ; preds = %5637
  br label %5639

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

5640:                                             ; No predecessors!
  br label %5641

5641:                                             ; preds = %5640
  br label %5642

5642:                                             ; preds = %5641, %5579
  br label %5643

5643:                                             ; preds = %5642
  br label %5644

5644:                                             ; preds = %5643
  br label %5645

5645:                                             ; preds = %5644
  %5646 = load i32, ptr @test_count, align 4, !tbaa !5
  %5647 = add nsw i32 %5646, 1
  store i32 %5647, ptr @test_count, align 4, !tbaa !5
  %5648 = load ptr, ptr %94, align 8, !tbaa !9
  %5649 = getelementptr inbounds %struct.s2n_connection, ptr %5648, i32 0, i32 31
  %5650 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5649, i32 0, i32 4
  %5651 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5650, i32 0, i32 2
  %5652 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %5651, i32 0, i32 0
  %5653 = load ptr, ptr %5652, align 8, !tbaa !50
  %5654 = load ptr, ptr %110, align 8, !tbaa !9
  %5655 = getelementptr inbounds %struct.s2n_kem_group, ptr %5654, i32 0, i32 2
  %5656 = load ptr, ptr %5655, align 8, !tbaa !73
  %5657 = icmp eq ptr %5653, %5656
  br i1 %5657, label %5711, label %5658

5658:                                             ; preds = %5645
  br label %5659

5659:                                             ; preds = %5658
  br label %5660

5660:                                             ; preds = %5659
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #9
  %5661 = call ptr @__errno_location() #10
  %5662 = load i32, ptr %5661, align 4, !tbaa !5
  store i32 %5662, ptr %113, align 4, !tbaa !5
  %5663 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5664 = call i32 @s2n_print_stacktrace(ptr noundef %5663)
  %5665 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5666 = trunc i8 %5665 to i1
  br i1 %5666, label %5667, label %5689

5667:                                             ; preds = %5660
  %5668 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5669 = call i32 @fileno(ptr noundef %5668) #9
  %5670 = call i32 @isatty(i32 noundef %5669) #9
  %5671 = icmp ne i32 %5670, 0
  br i1 %5671, label %5672, label %5689

5672:                                             ; preds = %5667
  %5673 = load i32, ptr %113, align 4, !tbaa !5
  %5674 = call ptr @__errno_location() #10
  store i32 %5673, ptr %5674, align 4, !tbaa !5
  %5675 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5676 = load i32, ptr @test_count, align 4, !tbaa !5
  %5677 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5678 = load i32, ptr %5677, align 4, !tbaa !5
  %5679 = call ptr @s2n_strerror(i32 noundef %5678, ptr noundef @.str.8)
  %5680 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5681 = load i32, ptr %5680, align 4, !tbaa !5
  %5682 = call ptr @s2n_strerror_debug(i32 noundef %5681, ptr noundef @.str.8)
  %5683 = call ptr @__errno_location() #10
  %5684 = load i32, ptr %5683, align 4, !tbaa !5
  %5685 = call ptr @strerror(i32 noundef %5684) #9
  %5686 = call ptr @__errno_location() #10
  %5687 = load i32, ptr %5686, align 4, !tbaa !5
  %5688 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5675, ptr noundef @.str.6, i32 noundef %5676, ptr noundef @.str.32, ptr noundef @.str.5, i32 noundef 232, ptr noundef %5679, ptr noundef %5682, ptr noundef %5685, i32 noundef %5687) #9
  br label %5706

5689:                                             ; preds = %5667, %5660
  %5690 = load i32, ptr %113, align 4, !tbaa !5
  %5691 = call ptr @__errno_location() #10
  store i32 %5690, ptr %5691, align 4, !tbaa !5
  %5692 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5693 = load i32, ptr @test_count, align 4, !tbaa !5
  %5694 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5695 = load i32, ptr %5694, align 4, !tbaa !5
  %5696 = call ptr @s2n_strerror(i32 noundef %5695, ptr noundef @.str.8)
  %5697 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5698 = load i32, ptr %5697, align 4, !tbaa !5
  %5699 = call ptr @s2n_strerror_debug(i32 noundef %5698, ptr noundef @.str.8)
  %5700 = call ptr @__errno_location() #10
  %5701 = load i32, ptr %5700, align 4, !tbaa !5
  %5702 = call ptr @strerror(i32 noundef %5701) #9
  %5703 = call ptr @__errno_location() #10
  %5704 = load i32, ptr %5703, align 4, !tbaa !5
  %5705 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5692, ptr noundef @.str.9, i32 noundef %5693, ptr noundef @.str.32, ptr noundef @.str.5, i32 noundef 232, ptr noundef %5696, ptr noundef %5699, ptr noundef %5702, i32 noundef %5704) #9
  br label %5706

5706:                                             ; preds = %5689, %5672
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #9
  br label %5707

5707:                                             ; preds = %5706
  br label %5708

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

5709:                                             ; No predecessors!
  br label %5710

5710:                                             ; preds = %5709
  br label %5711

5711:                                             ; preds = %5710, %5645
  br label %5712

5712:                                             ; preds = %5711
  br label %5713

5713:                                             ; preds = %5712
  br label %5714

5714:                                             ; preds = %5713
  %5715 = load i32, ptr @test_count, align 4, !tbaa !5
  %5716 = add nsw i32 %5715, 1
  store i32 %5716, ptr @test_count, align 4, !tbaa !5
  %5717 = load ptr, ptr %94, align 8, !tbaa !9
  %5718 = getelementptr inbounds %struct.s2n_connection, ptr %5717, i32 0, i32 31
  %5719 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5718, i32 0, i32 4
  %5720 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %5719, i32 0, i32 1
  %5721 = getelementptr inbounds %struct.s2n_kem_params, ptr %5720, i32 0, i32 0
  %5722 = load ptr, ptr %5721, align 8, !tbaa !51
  %5723 = load ptr, ptr %110, align 8, !tbaa !9
  %5724 = getelementptr inbounds %struct.s2n_kem_group, ptr %5723, i32 0, i32 3
  %5725 = load ptr, ptr %5724, align 8, !tbaa !75
  %5726 = icmp eq ptr %5722, %5725
  br i1 %5726, label %5780, label %5727

5727:                                             ; preds = %5714
  br label %5728

5728:                                             ; preds = %5727
  br label %5729

5729:                                             ; preds = %5728
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #9
  %5730 = call ptr @__errno_location() #10
  %5731 = load i32, ptr %5730, align 4, !tbaa !5
  store i32 %5731, ptr %114, align 4, !tbaa !5
  %5732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5733 = call i32 @s2n_print_stacktrace(ptr noundef %5732)
  %5734 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5735 = trunc i8 %5734 to i1
  br i1 %5735, label %5736, label %5758

5736:                                             ; preds = %5729
  %5737 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5738 = call i32 @fileno(ptr noundef %5737) #9
  %5739 = call i32 @isatty(i32 noundef %5738) #9
  %5740 = icmp ne i32 %5739, 0
  br i1 %5740, label %5741, label %5758

5741:                                             ; preds = %5736
  %5742 = load i32, ptr %114, align 4, !tbaa !5
  %5743 = call ptr @__errno_location() #10
  store i32 %5742, ptr %5743, align 4, !tbaa !5
  %5744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5745 = load i32, ptr @test_count, align 4, !tbaa !5
  %5746 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5747 = load i32, ptr %5746, align 4, !tbaa !5
  %5748 = call ptr @s2n_strerror(i32 noundef %5747, ptr noundef @.str.8)
  %5749 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5750 = load i32, ptr %5749, align 4, !tbaa !5
  %5751 = call ptr @s2n_strerror_debug(i32 noundef %5750, ptr noundef @.str.8)
  %5752 = call ptr @__errno_location() #10
  %5753 = load i32, ptr %5752, align 4, !tbaa !5
  %5754 = call ptr @strerror(i32 noundef %5753) #9
  %5755 = call ptr @__errno_location() #10
  %5756 = load i32, ptr %5755, align 4, !tbaa !5
  %5757 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5744, ptr noundef @.str.6, i32 noundef %5745, ptr noundef @.str.33, ptr noundef @.str.5, i32 noundef 233, ptr noundef %5748, ptr noundef %5751, ptr noundef %5754, i32 noundef %5756) #9
  br label %5775

5758:                                             ; preds = %5736, %5729
  %5759 = load i32, ptr %114, align 4, !tbaa !5
  %5760 = call ptr @__errno_location() #10
  store i32 %5759, ptr %5760, align 4, !tbaa !5
  %5761 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5762 = load i32, ptr @test_count, align 4, !tbaa !5
  %5763 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5764 = load i32, ptr %5763, align 4, !tbaa !5
  %5765 = call ptr @s2n_strerror(i32 noundef %5764, ptr noundef @.str.8)
  %5766 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5767 = load i32, ptr %5766, align 4, !tbaa !5
  %5768 = call ptr @s2n_strerror_debug(i32 noundef %5767, ptr noundef @.str.8)
  %5769 = call ptr @__errno_location() #10
  %5770 = load i32, ptr %5769, align 4, !tbaa !5
  %5771 = call ptr @strerror(i32 noundef %5770) #9
  %5772 = call ptr @__errno_location() #10
  %5773 = load i32, ptr %5772, align 4, !tbaa !5
  %5774 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5761, ptr noundef @.str.9, i32 noundef %5762, ptr noundef @.str.33, ptr noundef @.str.5, i32 noundef 233, ptr noundef %5765, ptr noundef %5768, ptr noundef %5771, i32 noundef %5773) #9
  br label %5775

5775:                                             ; preds = %5758, %5741
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #9
  br label %5776

5776:                                             ; preds = %5775
  br label %5777

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

5778:                                             ; No predecessors!
  br label %5779

5779:                                             ; preds = %5778
  br label %5780

5780:                                             ; preds = %5779, %5714
  br label %5781

5781:                                             ; preds = %5780
  br label %5782

5782:                                             ; preds = %5781
  br label %5783

5783:                                             ; preds = %5782
  %5784 = load i32, ptr @test_count, align 4, !tbaa !5
  %5785 = add nsw i32 %5784, 1
  store i32 %5785, ptr @test_count, align 4, !tbaa !5
  %5786 = load ptr, ptr %94, align 8, !tbaa !9
  %5787 = getelementptr inbounds %struct.s2n_connection, ptr %5786, i32 0, i32 31
  %5788 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %5787, i32 0, i32 1
  %5789 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %5788, i32 0, i32 0
  %5790 = load ptr, ptr %5789, align 8, !tbaa !52
  %5791 = icmp eq ptr %5790, null
  br i1 %5791, label %5845, label %5792

5792:                                             ; preds = %5783
  br label %5793

5793:                                             ; preds = %5792
  br label %5794

5794:                                             ; preds = %5793
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #9
  %5795 = call ptr @__errno_location() #10
  %5796 = load i32, ptr %5795, align 4, !tbaa !5
  store i32 %5796, ptr %115, align 4, !tbaa !5
  %5797 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5798 = call i32 @s2n_print_stacktrace(ptr noundef %5797)
  %5799 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5800 = trunc i8 %5799 to i1
  br i1 %5800, label %5801, label %5823

5801:                                             ; preds = %5794
  %5802 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5803 = call i32 @fileno(ptr noundef %5802) #9
  %5804 = call i32 @isatty(i32 noundef %5803) #9
  %5805 = icmp ne i32 %5804, 0
  br i1 %5805, label %5806, label %5823

5806:                                             ; preds = %5801
  %5807 = load i32, ptr %115, align 4, !tbaa !5
  %5808 = call ptr @__errno_location() #10
  store i32 %5807, ptr %5808, align 4, !tbaa !5
  %5809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5810 = load i32, ptr @test_count, align 4, !tbaa !5
  %5811 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5812 = load i32, ptr %5811, align 4, !tbaa !5
  %5813 = call ptr @s2n_strerror(i32 noundef %5812, ptr noundef @.str.8)
  %5814 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5815 = load i32, ptr %5814, align 4, !tbaa !5
  %5816 = call ptr @s2n_strerror_debug(i32 noundef %5815, ptr noundef @.str.8)
  %5817 = call ptr @__errno_location() #10
  %5818 = load i32, ptr %5817, align 4, !tbaa !5
  %5819 = call ptr @strerror(i32 noundef %5818) #9
  %5820 = call ptr @__errno_location() #10
  %5821 = load i32, ptr %5820, align 4, !tbaa !5
  %5822 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5809, ptr noundef @.str.6, i32 noundef %5810, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 234, ptr noundef %5813, ptr noundef %5816, ptr noundef %5819, i32 noundef %5821) #9
  br label %5840

5823:                                             ; preds = %5801, %5794
  %5824 = load i32, ptr %115, align 4, !tbaa !5
  %5825 = call ptr @__errno_location() #10
  store i32 %5824, ptr %5825, align 4, !tbaa !5
  %5826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5827 = load i32, ptr @test_count, align 4, !tbaa !5
  %5828 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5829 = load i32, ptr %5828, align 4, !tbaa !5
  %5830 = call ptr @s2n_strerror(i32 noundef %5829, ptr noundef @.str.8)
  %5831 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5832 = load i32, ptr %5831, align 4, !tbaa !5
  %5833 = call ptr @s2n_strerror_debug(i32 noundef %5832, ptr noundef @.str.8)
  %5834 = call ptr @__errno_location() #10
  %5835 = load i32, ptr %5834, align 4, !tbaa !5
  %5836 = call ptr @strerror(i32 noundef %5835) #9
  %5837 = call ptr @__errno_location() #10
  %5838 = load i32, ptr %5837, align 4, !tbaa !5
  %5839 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5826, ptr noundef @.str.9, i32 noundef %5827, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 234, ptr noundef %5830, ptr noundef %5833, ptr noundef %5836, i32 noundef %5838) #9
  br label %5840

5840:                                             ; preds = %5823, %5806
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #9
  br label %5841

5841:                                             ; preds = %5840
  br label %5842

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

5843:                                             ; No predecessors!
  br label %5844

5844:                                             ; preds = %5843
  br label %5845

5845:                                             ; preds = %5844, %5783
  br label %5846

5846:                                             ; preds = %5845
  br label %5847

5847:                                             ; preds = %5846
  br label %5910

5848:                                             ; preds = %5513
  br label %5849

5849:                                             ; preds = %5848
  %5850 = load i32, ptr @test_count, align 4, !tbaa !5
  %5851 = add nsw i32 %5850, 1
  store i32 %5851, ptr @test_count, align 4, !tbaa !5
  %5852 = load ptr, ptr %110, align 8, !tbaa !9
  %5853 = icmp eq ptr %5852, null
  br i1 %5853, label %5907, label %5854

5854:                                             ; preds = %5849
  br label %5855

5855:                                             ; preds = %5854
  br label %5856

5856:                                             ; preds = %5855
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #9
  %5857 = call ptr @__errno_location() #10
  %5858 = load i32, ptr %5857, align 4, !tbaa !5
  store i32 %5858, ptr %116, align 4, !tbaa !5
  %5859 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5860 = call i32 @s2n_print_stacktrace(ptr noundef %5859)
  %5861 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5862 = trunc i8 %5861 to i1
  br i1 %5862, label %5863, label %5885

5863:                                             ; preds = %5856
  %5864 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5865 = call i32 @fileno(ptr noundef %5864) #9
  %5866 = call i32 @isatty(i32 noundef %5865) #9
  %5867 = icmp ne i32 %5866, 0
  br i1 %5867, label %5868, label %5885

5868:                                             ; preds = %5863
  %5869 = load i32, ptr %116, align 4, !tbaa !5
  %5870 = call ptr @__errno_location() #10
  store i32 %5869, ptr %5870, align 4, !tbaa !5
  %5871 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5872 = load i32, ptr @test_count, align 4, !tbaa !5
  %5873 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5874 = load i32, ptr %5873, align 4, !tbaa !5
  %5875 = call ptr @s2n_strerror(i32 noundef %5874, ptr noundef @.str.8)
  %5876 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5877 = load i32, ptr %5876, align 4, !tbaa !5
  %5878 = call ptr @s2n_strerror_debug(i32 noundef %5877, ptr noundef @.str.8)
  %5879 = call ptr @__errno_location() #10
  %5880 = load i32, ptr %5879, align 4, !tbaa !5
  %5881 = call ptr @strerror(i32 noundef %5880) #9
  %5882 = call ptr @__errno_location() #10
  %5883 = load i32, ptr %5882, align 4, !tbaa !5
  %5884 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5871, ptr noundef @.str.6, i32 noundef %5872, ptr noundef @.str.34, ptr noundef @.str.5, i32 noundef 236, ptr noundef %5875, ptr noundef %5878, ptr noundef %5881, i32 noundef %5883) #9
  br label %5902

5885:                                             ; preds = %5863, %5856
  %5886 = load i32, ptr %116, align 4, !tbaa !5
  %5887 = call ptr @__errno_location() #10
  store i32 %5886, ptr %5887, align 4, !tbaa !5
  %5888 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5889 = load i32, ptr @test_count, align 4, !tbaa !5
  %5890 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5891 = load i32, ptr %5890, align 4, !tbaa !5
  %5892 = call ptr @s2n_strerror(i32 noundef %5891, ptr noundef @.str.8)
  %5893 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5894 = load i32, ptr %5893, align 4, !tbaa !5
  %5895 = call ptr @s2n_strerror_debug(i32 noundef %5894, ptr noundef @.str.8)
  %5896 = call ptr @__errno_location() #10
  %5897 = load i32, ptr %5896, align 4, !tbaa !5
  %5898 = call ptr @strerror(i32 noundef %5897) #9
  %5899 = call ptr @__errno_location() #10
  %5900 = load i32, ptr %5899, align 4, !tbaa !5
  %5901 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5888, ptr noundef @.str.9, i32 noundef %5889, ptr noundef @.str.34, ptr noundef @.str.5, i32 noundef 236, ptr noundef %5892, ptr noundef %5895, ptr noundef %5898, i32 noundef %5900) #9
  br label %5902

5902:                                             ; preds = %5885, %5868
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #9
  br label %5903

5903:                                             ; preds = %5902
  br label %5904

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

5905:                                             ; No predecessors!
  br label %5906

5906:                                             ; preds = %5905
  br label %5907

5907:                                             ; preds = %5906, %5849
  br label %5908

5908:                                             ; preds = %5907
  br label %5909

5909:                                             ; preds = %5908
  br label %5910

5910:                                             ; preds = %5909, %5847
  br label %5911

5911:                                             ; preds = %5910
  %5912 = load i32, ptr @test_count, align 4, !tbaa !5
  %5913 = add nsw i32 %5912, 1
  store i32 %5913, ptr @test_count, align 4, !tbaa !5
  %5914 = load ptr, ptr %94, align 8, !tbaa !9
  %5915 = call i32 @s2n_connection_free(ptr noundef %5914)
  %5916 = icmp eq i32 %5915, -1
  br i1 %5916, label %5917, label %5970

5917:                                             ; preds = %5911
  br label %5918

5918:                                             ; preds = %5917
  br label %5919

5919:                                             ; preds = %5918
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #9
  %5920 = call ptr @__errno_location() #10
  %5921 = load i32, ptr %5920, align 4, !tbaa !5
  store i32 %5921, ptr %117, align 4, !tbaa !5
  %5922 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5923 = call i32 @s2n_print_stacktrace(ptr noundef %5922)
  %5924 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5925 = trunc i8 %5924 to i1
  br i1 %5925, label %5926, label %5948

5926:                                             ; preds = %5919
  %5927 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5928 = call i32 @fileno(ptr noundef %5927) #9
  %5929 = call i32 @isatty(i32 noundef %5928) #9
  %5930 = icmp ne i32 %5929, 0
  br i1 %5930, label %5931, label %5948

5931:                                             ; preds = %5926
  %5932 = load i32, ptr %117, align 4, !tbaa !5
  %5933 = call ptr @__errno_location() #10
  store i32 %5932, ptr %5933, align 4, !tbaa !5
  %5934 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5935 = load i32, ptr @test_count, align 4, !tbaa !5
  %5936 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5937 = load i32, ptr %5936, align 4, !tbaa !5
  %5938 = call ptr @s2n_strerror(i32 noundef %5937, ptr noundef @.str.8)
  %5939 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5940 = load i32, ptr %5939, align 4, !tbaa !5
  %5941 = call ptr @s2n_strerror_debug(i32 noundef %5940, ptr noundef @.str.8)
  %5942 = call ptr @__errno_location() #10
  %5943 = load i32, ptr %5942, align 4, !tbaa !5
  %5944 = call ptr @strerror(i32 noundef %5943) #9
  %5945 = call ptr @__errno_location() #10
  %5946 = load i32, ptr %5945, align 4, !tbaa !5
  %5947 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5934, ptr noundef @.str.6, i32 noundef %5935, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 238, ptr noundef %5938, ptr noundef %5941, ptr noundef %5944, i32 noundef %5946) #9
  br label %5965

5948:                                             ; preds = %5926, %5919
  %5949 = load i32, ptr %117, align 4, !tbaa !5
  %5950 = call ptr @__errno_location() #10
  store i32 %5949, ptr %5950, align 4, !tbaa !5
  %5951 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5952 = load i32, ptr @test_count, align 4, !tbaa !5
  %5953 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5954 = load i32, ptr %5953, align 4, !tbaa !5
  %5955 = call ptr @s2n_strerror(i32 noundef %5954, ptr noundef @.str.8)
  %5956 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %5957 = load i32, ptr %5956, align 4, !tbaa !5
  %5958 = call ptr @s2n_strerror_debug(i32 noundef %5957, ptr noundef @.str.8)
  %5959 = call ptr @__errno_location() #10
  %5960 = load i32, ptr %5959, align 4, !tbaa !5
  %5961 = call ptr @strerror(i32 noundef %5960) #9
  %5962 = call ptr @__errno_location() #10
  %5963 = load i32, ptr %5962, align 4, !tbaa !5
  %5964 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5951, ptr noundef @.str.9, i32 noundef %5952, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 238, ptr noundef %5955, ptr noundef %5958, ptr noundef %5961, i32 noundef %5963) #9
  br label %5965

5965:                                             ; preds = %5948, %5931
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #9
  br label %5966

5966:                                             ; preds = %5965
  br label %5967

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

5968:                                             ; No predecessors!
  br label %5969

5969:                                             ; preds = %5968
  br label %5970

5970:                                             ; preds = %5969, %5911
  br label %5971

5971:                                             ; preds = %5970
  br label %5972

5972:                                             ; preds = %5971
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #9
  store i32 0, ptr %118, align 4, !tbaa !5
  br label %5973

5973:                                             ; preds = %5972
  %5974 = load i32, ptr @test_count, align 4, !tbaa !5
  %5975 = add nsw i32 %5974, 1
  store i32 %5975, ptr @test_count, align 4, !tbaa !5
  %5976 = call i32 @s2n_kem_preferences_groups_available(ptr noundef @kem_preferences_all, ptr noundef %118)
  %5977 = getelementptr inbounds %struct.s2n_result, ptr %119, i32 0, i32 0
  store i32 %5976, ptr %5977, align 4
  %5978 = getelementptr inbounds %struct.s2n_result, ptr %119, i32 0, i32 0
  %5979 = load i32, ptr %5978, align 4
  %5980 = call zeroext i1 @s2n_result_is_ok(i32 %5979)
  br i1 %5980, label %6034, label %5981

5981:                                             ; preds = %5973
  br label %5982

5982:                                             ; preds = %5981
  br label %5983

5983:                                             ; preds = %5982
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #9
  %5984 = call ptr @__errno_location() #10
  %5985 = load i32, ptr %5984, align 4, !tbaa !5
  store i32 %5985, ptr %120, align 4, !tbaa !5
  %5986 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5987 = call i32 @s2n_print_stacktrace(ptr noundef %5986)
  %5988 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %5989 = trunc i8 %5988 to i1
  br i1 %5989, label %5990, label %6012

5990:                                             ; preds = %5983
  %5991 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5992 = call i32 @fileno(ptr noundef %5991) #9
  %5993 = call i32 @isatty(i32 noundef %5992) #9
  %5994 = icmp ne i32 %5993, 0
  br i1 %5994, label %5995, label %6012

5995:                                             ; preds = %5990
  %5996 = load i32, ptr %120, align 4, !tbaa !5
  %5997 = call ptr @__errno_location() #10
  store i32 %5996, ptr %5997, align 4, !tbaa !5
  %5998 = load ptr, ptr @stderr, align 8, !tbaa !9
  %5999 = load i32, ptr @test_count, align 4, !tbaa !5
  %6000 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6001 = load i32, ptr %6000, align 4, !tbaa !5
  %6002 = call ptr @s2n_strerror(i32 noundef %6001, ptr noundef @.str.8)
  %6003 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6004 = load i32, ptr %6003, align 4, !tbaa !5
  %6005 = call ptr @s2n_strerror_debug(i32 noundef %6004, ptr noundef @.str.8)
  %6006 = call ptr @__errno_location() #10
  %6007 = load i32, ptr %6006, align 4, !tbaa !5
  %6008 = call ptr @strerror(i32 noundef %6007) #9
  %6009 = call ptr @__errno_location() #10
  %6010 = load i32, ptr %6009, align 4, !tbaa !5
  %6011 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %5998, ptr noundef @.str.6, i32 noundef %5999, ptr noundef @.str.35, ptr noundef @.str.5, i32 noundef 244, ptr noundef %6002, ptr noundef %6005, ptr noundef %6008, i32 noundef %6010) #9
  br label %6029

6012:                                             ; preds = %5990, %5983
  %6013 = load i32, ptr %120, align 4, !tbaa !5
  %6014 = call ptr @__errno_location() #10
  store i32 %6013, ptr %6014, align 4, !tbaa !5
  %6015 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6016 = load i32, ptr @test_count, align 4, !tbaa !5
  %6017 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6018 = load i32, ptr %6017, align 4, !tbaa !5
  %6019 = call ptr @s2n_strerror(i32 noundef %6018, ptr noundef @.str.8)
  %6020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6021 = load i32, ptr %6020, align 4, !tbaa !5
  %6022 = call ptr @s2n_strerror_debug(i32 noundef %6021, ptr noundef @.str.8)
  %6023 = call ptr @__errno_location() #10
  %6024 = load i32, ptr %6023, align 4, !tbaa !5
  %6025 = call ptr @strerror(i32 noundef %6024) #9
  %6026 = call ptr @__errno_location() #10
  %6027 = load i32, ptr %6026, align 4, !tbaa !5
  %6028 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6015, ptr noundef @.str.9, i32 noundef %6016, ptr noundef @.str.35, ptr noundef @.str.5, i32 noundef 244, ptr noundef %6019, ptr noundef %6022, ptr noundef %6025, i32 noundef %6027) #9
  br label %6029

6029:                                             ; preds = %6012, %5995
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #9
  br label %6030

6030:                                             ; preds = %6029
  br label %6031

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

6032:                                             ; No predecessors!
  br label %6033

6033:                                             ; preds = %6032
  br label %6034

6034:                                             ; preds = %6033, %5973
  br label %6035

6035:                                             ; preds = %6034
  br label %6036

6036:                                             ; preds = %6035
  %6037 = load i32, ptr %118, align 4, !tbaa !5
  %6038 = icmp uge i32 %6037, 1
  br i1 %6038, label %6039, label %7236

6039:                                             ; preds = %6036
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #9
  store ptr null, ptr %121, align 8, !tbaa !9
  br label %6040

6040:                                             ; preds = %6039
  %6041 = load i32, ptr @test_count, align 4, !tbaa !5
  %6042 = add nsw i32 %6041, 1
  store i32 %6042, ptr @test_count, align 4, !tbaa !5
  %6043 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %6043, ptr %121, align 8, !tbaa !9
  %6044 = icmp eq ptr %6043, null
  br i1 %6044, label %6045, label %6098

6045:                                             ; preds = %6040
  br label %6046

6046:                                             ; preds = %6045
  br label %6047

6047:                                             ; preds = %6046
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #9
  %6048 = call ptr @__errno_location() #10
  %6049 = load i32, ptr %6048, align 4, !tbaa !5
  store i32 %6049, ptr %122, align 4, !tbaa !5
  %6050 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6051 = call i32 @s2n_print_stacktrace(ptr noundef %6050)
  %6052 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6053 = trunc i8 %6052 to i1
  br i1 %6053, label %6054, label %6076

6054:                                             ; preds = %6047
  %6055 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6056 = call i32 @fileno(ptr noundef %6055) #9
  %6057 = call i32 @isatty(i32 noundef %6056) #9
  %6058 = icmp ne i32 %6057, 0
  br i1 %6058, label %6059, label %6076

6059:                                             ; preds = %6054
  %6060 = load i32, ptr %122, align 4, !tbaa !5
  %6061 = call ptr @__errno_location() #10
  store i32 %6060, ptr %6061, align 4, !tbaa !5
  %6062 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6063 = load i32, ptr @test_count, align 4, !tbaa !5
  %6064 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6065 = load i32, ptr %6064, align 4, !tbaa !5
  %6066 = call ptr @s2n_strerror(i32 noundef %6065, ptr noundef @.str.8)
  %6067 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6068 = load i32, ptr %6067, align 4, !tbaa !5
  %6069 = call ptr @s2n_strerror_debug(i32 noundef %6068, ptr noundef @.str.8)
  %6070 = call ptr @__errno_location() #10
  %6071 = load i32, ptr %6070, align 4, !tbaa !5
  %6072 = call ptr @strerror(i32 noundef %6071) #9
  %6073 = call ptr @__errno_location() #10
  %6074 = load i32, ptr %6073, align 4, !tbaa !5
  %6075 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6062, ptr noundef @.str.6, i32 noundef %6063, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 247, ptr noundef %6066, ptr noundef %6069, ptr noundef %6072, i32 noundef %6074) #9
  br label %6093

6076:                                             ; preds = %6054, %6047
  %6077 = load i32, ptr %122, align 4, !tbaa !5
  %6078 = call ptr @__errno_location() #10
  store i32 %6077, ptr %6078, align 4, !tbaa !5
  %6079 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6080 = load i32, ptr @test_count, align 4, !tbaa !5
  %6081 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6082 = load i32, ptr %6081, align 4, !tbaa !5
  %6083 = call ptr @s2n_strerror(i32 noundef %6082, ptr noundef @.str.8)
  %6084 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6085 = load i32, ptr %6084, align 4, !tbaa !5
  %6086 = call ptr @s2n_strerror_debug(i32 noundef %6085, ptr noundef @.str.8)
  %6087 = call ptr @__errno_location() #10
  %6088 = load i32, ptr %6087, align 4, !tbaa !5
  %6089 = call ptr @strerror(i32 noundef %6088) #9
  %6090 = call ptr @__errno_location() #10
  %6091 = load i32, ptr %6090, align 4, !tbaa !5
  %6092 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6079, ptr noundef @.str.9, i32 noundef %6080, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 247, ptr noundef %6083, ptr noundef %6086, ptr noundef %6089, i32 noundef %6091) #9
  br label %6093

6093:                                             ; preds = %6076, %6059
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #9
  br label %6094

6094:                                             ; preds = %6093
  br label %6095

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

6096:                                             ; No predecessors!
  br label %6097

6097:                                             ; preds = %6096
  br label %6098

6098:                                             ; preds = %6097, %6040
  br label %6099

6099:                                             ; preds = %6098
  br label %6100

6100:                                             ; preds = %6099
  %6101 = load ptr, ptr %121, align 8, !tbaa !9
  %6102 = getelementptr inbounds %struct.s2n_connection, ptr %6101, i32 0, i32 2
  store ptr %71, ptr %6102, align 8, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #9
  store ptr null, ptr %123, align 8, !tbaa !9
  br label %6103

6103:                                             ; preds = %6100
  %6104 = load i32, ptr @test_count, align 4, !tbaa !5
  %6105 = add nsw i32 %6104, 1
  store i32 %6105, ptr @test_count, align 4, !tbaa !5
  %6106 = load ptr, ptr %121, align 8, !tbaa !9
  %6107 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %6106, ptr noundef %123)
  %6108 = icmp eq i32 %6107, -1
  br i1 %6108, label %6109, label %6162

6109:                                             ; preds = %6103
  br label %6110

6110:                                             ; preds = %6109
  br label %6111

6111:                                             ; preds = %6110
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #9
  %6112 = call ptr @__errno_location() #10
  %6113 = load i32, ptr %6112, align 4, !tbaa !5
  store i32 %6113, ptr %124, align 4, !tbaa !5
  %6114 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6115 = call i32 @s2n_print_stacktrace(ptr noundef %6114)
  %6116 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6117 = trunc i8 %6116 to i1
  br i1 %6117, label %6118, label %6140

6118:                                             ; preds = %6111
  %6119 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6120 = call i32 @fileno(ptr noundef %6119) #9
  %6121 = call i32 @isatty(i32 noundef %6120) #9
  %6122 = icmp ne i32 %6121, 0
  br i1 %6122, label %6123, label %6140

6123:                                             ; preds = %6118
  %6124 = load i32, ptr %124, align 4, !tbaa !5
  %6125 = call ptr @__errno_location() #10
  store i32 %6124, ptr %6125, align 4, !tbaa !5
  %6126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6127 = load i32, ptr @test_count, align 4, !tbaa !5
  %6128 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6129 = load i32, ptr %6128, align 4, !tbaa !5
  %6130 = call ptr @s2n_strerror(i32 noundef %6129, ptr noundef @.str.8)
  %6131 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6132 = load i32, ptr %6131, align 4, !tbaa !5
  %6133 = call ptr @s2n_strerror_debug(i32 noundef %6132, ptr noundef @.str.8)
  %6134 = call ptr @__errno_location() #10
  %6135 = load i32, ptr %6134, align 4, !tbaa !5
  %6136 = call ptr @strerror(i32 noundef %6135) #9
  %6137 = call ptr @__errno_location() #10
  %6138 = load i32, ptr %6137, align 4, !tbaa !5
  %6139 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6126, ptr noundef @.str.6, i32 noundef %6127, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 251, ptr noundef %6130, ptr noundef %6133, ptr noundef %6136, i32 noundef %6138) #9
  br label %6157

6140:                                             ; preds = %6118, %6111
  %6141 = load i32, ptr %124, align 4, !tbaa !5
  %6142 = call ptr @__errno_location() #10
  store i32 %6141, ptr %6142, align 4, !tbaa !5
  %6143 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6144 = load i32, ptr @test_count, align 4, !tbaa !5
  %6145 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6146 = load i32, ptr %6145, align 4, !tbaa !5
  %6147 = call ptr @s2n_strerror(i32 noundef %6146, ptr noundef @.str.8)
  %6148 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6149 = load i32, ptr %6148, align 4, !tbaa !5
  %6150 = call ptr @s2n_strerror_debug(i32 noundef %6149, ptr noundef @.str.8)
  %6151 = call ptr @__errno_location() #10
  %6152 = load i32, ptr %6151, align 4, !tbaa !5
  %6153 = call ptr @strerror(i32 noundef %6152) #9
  %6154 = call ptr @__errno_location() #10
  %6155 = load i32, ptr %6154, align 4, !tbaa !5
  %6156 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6143, ptr noundef @.str.9, i32 noundef %6144, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 251, ptr noundef %6147, ptr noundef %6150, ptr noundef %6153, i32 noundef %6155) #9
  br label %6157

6157:                                             ; preds = %6140, %6123
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  br label %6158

6158:                                             ; preds = %6157
  br label %6159

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

6160:                                             ; No predecessors!
  br label %6161

6161:                                             ; preds = %6160
  br label %6162

6162:                                             ; preds = %6161, %6103
  br label %6163

6163:                                             ; preds = %6162
  br label %6164

6164:                                             ; preds = %6163
  br label %6165

6165:                                             ; preds = %6164
  %6166 = load i32, ptr @test_count, align 4, !tbaa !5
  %6167 = add nsw i32 %6166, 1
  store i32 %6167, ptr @test_count, align 4, !tbaa !5
  %6168 = load ptr, ptr %123, align 8, !tbaa !9
  %6169 = icmp eq ptr %6168, null
  br i1 %6169, label %6170, label %6223

6170:                                             ; preds = %6165
  br label %6171

6171:                                             ; preds = %6170
  br label %6172

6172:                                             ; preds = %6171
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #9
  %6173 = call ptr @__errno_location() #10
  %6174 = load i32, ptr %6173, align 4, !tbaa !5
  store i32 %6174, ptr %125, align 4, !tbaa !5
  %6175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6176 = call i32 @s2n_print_stacktrace(ptr noundef %6175)
  %6177 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6178 = trunc i8 %6177 to i1
  br i1 %6178, label %6179, label %6201

6179:                                             ; preds = %6172
  %6180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6181 = call i32 @fileno(ptr noundef %6180) #9
  %6182 = call i32 @isatty(i32 noundef %6181) #9
  %6183 = icmp ne i32 %6182, 0
  br i1 %6183, label %6184, label %6201

6184:                                             ; preds = %6179
  %6185 = load i32, ptr %125, align 4, !tbaa !5
  %6186 = call ptr @__errno_location() #10
  store i32 %6185, ptr %6186, align 4, !tbaa !5
  %6187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6188 = load i32, ptr @test_count, align 4, !tbaa !5
  %6189 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6190 = load i32, ptr %6189, align 4, !tbaa !5
  %6191 = call ptr @s2n_strerror(i32 noundef %6190, ptr noundef @.str.8)
  %6192 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6193 = load i32, ptr %6192, align 4, !tbaa !5
  %6194 = call ptr @s2n_strerror_debug(i32 noundef %6193, ptr noundef @.str.8)
  %6195 = call ptr @__errno_location() #10
  %6196 = load i32, ptr %6195, align 4, !tbaa !5
  %6197 = call ptr @strerror(i32 noundef %6196) #9
  %6198 = call ptr @__errno_location() #10
  %6199 = load i32, ptr %6198, align 4, !tbaa !5
  %6200 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6187, ptr noundef @.str.6, i32 noundef %6188, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 252, ptr noundef %6191, ptr noundef %6194, ptr noundef %6197, i32 noundef %6199) #9
  br label %6218

6201:                                             ; preds = %6179, %6172
  %6202 = load i32, ptr %125, align 4, !tbaa !5
  %6203 = call ptr @__errno_location() #10
  store i32 %6202, ptr %6203, align 4, !tbaa !5
  %6204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6205 = load i32, ptr @test_count, align 4, !tbaa !5
  %6206 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6207 = load i32, ptr %6206, align 4, !tbaa !5
  %6208 = call ptr @s2n_strerror(i32 noundef %6207, ptr noundef @.str.8)
  %6209 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6210 = load i32, ptr %6209, align 4, !tbaa !5
  %6211 = call ptr @s2n_strerror_debug(i32 noundef %6210, ptr noundef @.str.8)
  %6212 = call ptr @__errno_location() #10
  %6213 = load i32, ptr %6212, align 4, !tbaa !5
  %6214 = call ptr @strerror(i32 noundef %6213) #9
  %6215 = call ptr @__errno_location() #10
  %6216 = load i32, ptr %6215, align 4, !tbaa !5
  %6217 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6204, ptr noundef @.str.9, i32 noundef %6205, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 252, ptr noundef %6208, ptr noundef %6211, ptr noundef %6214, i32 noundef %6216) #9
  br label %6218

6218:                                             ; preds = %6201, %6184
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #9
  br label %6219

6219:                                             ; preds = %6218
  br label %6220

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

6221:                                             ; No predecessors!
  br label %6222

6222:                                             ; preds = %6221
  br label %6223

6223:                                             ; preds = %6222, %6165
  br label %6224

6224:                                             ; preds = %6223
  br label %6225

6225:                                             ; preds = %6224
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #9
  store ptr null, ptr %126, align 8, !tbaa !9
  br label %6226

6226:                                             ; preds = %6225
  %6227 = load i32, ptr @test_count, align 4, !tbaa !5
  %6228 = add nsw i32 %6227, 1
  store i32 %6228, ptr @test_count, align 4, !tbaa !5
  %6229 = load ptr, ptr %121, align 8, !tbaa !9
  %6230 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %6229, ptr noundef %126)
  %6231 = icmp eq i32 %6230, -1
  br i1 %6231, label %6232, label %6285

6232:                                             ; preds = %6226
  br label %6233

6233:                                             ; preds = %6232
  br label %6234

6234:                                             ; preds = %6233
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #9
  %6235 = call ptr @__errno_location() #10
  %6236 = load i32, ptr %6235, align 4, !tbaa !5
  store i32 %6236, ptr %127, align 4, !tbaa !5
  %6237 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6238 = call i32 @s2n_print_stacktrace(ptr noundef %6237)
  %6239 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6240 = trunc i8 %6239 to i1
  br i1 %6240, label %6241, label %6263

6241:                                             ; preds = %6234
  %6242 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6243 = call i32 @fileno(ptr noundef %6242) #9
  %6244 = call i32 @isatty(i32 noundef %6243) #9
  %6245 = icmp ne i32 %6244, 0
  br i1 %6245, label %6246, label %6263

6246:                                             ; preds = %6241
  %6247 = load i32, ptr %127, align 4, !tbaa !5
  %6248 = call ptr @__errno_location() #10
  store i32 %6247, ptr %6248, align 4, !tbaa !5
  %6249 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6250 = load i32, ptr @test_count, align 4, !tbaa !5
  %6251 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6252 = load i32, ptr %6251, align 4, !tbaa !5
  %6253 = call ptr @s2n_strerror(i32 noundef %6252, ptr noundef @.str.8)
  %6254 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6255 = load i32, ptr %6254, align 4, !tbaa !5
  %6256 = call ptr @s2n_strerror_debug(i32 noundef %6255, ptr noundef @.str.8)
  %6257 = call ptr @__errno_location() #10
  %6258 = load i32, ptr %6257, align 4, !tbaa !5
  %6259 = call ptr @strerror(i32 noundef %6258) #9
  %6260 = call ptr @__errno_location() #10
  %6261 = load i32, ptr %6260, align 4, !tbaa !5
  %6262 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6249, ptr noundef @.str.6, i32 noundef %6250, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 255, ptr noundef %6253, ptr noundef %6256, ptr noundef %6259, i32 noundef %6261) #9
  br label %6280

6263:                                             ; preds = %6241, %6234
  %6264 = load i32, ptr %127, align 4, !tbaa !5
  %6265 = call ptr @__errno_location() #10
  store i32 %6264, ptr %6265, align 4, !tbaa !5
  %6266 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6267 = load i32, ptr @test_count, align 4, !tbaa !5
  %6268 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6269 = load i32, ptr %6268, align 4, !tbaa !5
  %6270 = call ptr @s2n_strerror(i32 noundef %6269, ptr noundef @.str.8)
  %6271 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6272 = load i32, ptr %6271, align 4, !tbaa !5
  %6273 = call ptr @s2n_strerror_debug(i32 noundef %6272, ptr noundef @.str.8)
  %6274 = call ptr @__errno_location() #10
  %6275 = load i32, ptr %6274, align 4, !tbaa !5
  %6276 = call ptr @strerror(i32 noundef %6275) #9
  %6277 = call ptr @__errno_location() #10
  %6278 = load i32, ptr %6277, align 4, !tbaa !5
  %6279 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6266, ptr noundef @.str.9, i32 noundef %6267, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 255, ptr noundef %6270, ptr noundef %6273, ptr noundef %6276, i32 noundef %6278) #9
  br label %6280

6280:                                             ; preds = %6263, %6246
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #9
  br label %6281

6281:                                             ; preds = %6280
  br label %6282

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

6283:                                             ; No predecessors!
  br label %6284

6284:                                             ; preds = %6283
  br label %6285

6285:                                             ; preds = %6284, %6226
  br label %6286

6286:                                             ; preds = %6285
  br label %6287

6287:                                             ; preds = %6286
  br label %6288

6288:                                             ; preds = %6287
  %6289 = load i32, ptr @test_count, align 4, !tbaa !5
  %6290 = add nsw i32 %6289, 1
  store i32 %6290, ptr @test_count, align 4, !tbaa !5
  %6291 = load ptr, ptr %126, align 8, !tbaa !9
  %6292 = icmp eq ptr %6291, null
  br i1 %6292, label %6293, label %6346

6293:                                             ; preds = %6288
  br label %6294

6294:                                             ; preds = %6293
  br label %6295

6295:                                             ; preds = %6294
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #9
  %6296 = call ptr @__errno_location() #10
  %6297 = load i32, ptr %6296, align 4, !tbaa !5
  store i32 %6297, ptr %128, align 4, !tbaa !5
  %6298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6299 = call i32 @s2n_print_stacktrace(ptr noundef %6298)
  %6300 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6301 = trunc i8 %6300 to i1
  br i1 %6301, label %6302, label %6324

6302:                                             ; preds = %6295
  %6303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6304 = call i32 @fileno(ptr noundef %6303) #9
  %6305 = call i32 @isatty(i32 noundef %6304) #9
  %6306 = icmp ne i32 %6305, 0
  br i1 %6306, label %6307, label %6324

6307:                                             ; preds = %6302
  %6308 = load i32, ptr %128, align 4, !tbaa !5
  %6309 = call ptr @__errno_location() #10
  store i32 %6308, ptr %6309, align 4, !tbaa !5
  %6310 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6311 = load i32, ptr @test_count, align 4, !tbaa !5
  %6312 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6313 = load i32, ptr %6312, align 4, !tbaa !5
  %6314 = call ptr @s2n_strerror(i32 noundef %6313, ptr noundef @.str.8)
  %6315 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6316 = load i32, ptr %6315, align 4, !tbaa !5
  %6317 = call ptr @s2n_strerror_debug(i32 noundef %6316, ptr noundef @.str.8)
  %6318 = call ptr @__errno_location() #10
  %6319 = load i32, ptr %6318, align 4, !tbaa !5
  %6320 = call ptr @strerror(i32 noundef %6319) #9
  %6321 = call ptr @__errno_location() #10
  %6322 = load i32, ptr %6321, align 4, !tbaa !5
  %6323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6310, ptr noundef @.str.6, i32 noundef %6311, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 256, ptr noundef %6314, ptr noundef %6317, ptr noundef %6320, i32 noundef %6322) #9
  br label %6341

6324:                                             ; preds = %6302, %6295
  %6325 = load i32, ptr %128, align 4, !tbaa !5
  %6326 = call ptr @__errno_location() #10
  store i32 %6325, ptr %6326, align 4, !tbaa !5
  %6327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6328 = load i32, ptr @test_count, align 4, !tbaa !5
  %6329 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6330 = load i32, ptr %6329, align 4, !tbaa !5
  %6331 = call ptr @s2n_strerror(i32 noundef %6330, ptr noundef @.str.8)
  %6332 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6333 = load i32, ptr %6332, align 4, !tbaa !5
  %6334 = call ptr @s2n_strerror_debug(i32 noundef %6333, ptr noundef @.str.8)
  %6335 = call ptr @__errno_location() #10
  %6336 = load i32, ptr %6335, align 4, !tbaa !5
  %6337 = call ptr @strerror(i32 noundef %6336) #9
  %6338 = call ptr @__errno_location() #10
  %6339 = load i32, ptr %6338, align 4, !tbaa !5
  %6340 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6327, ptr noundef @.str.9, i32 noundef %6328, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 256, ptr noundef %6331, ptr noundef %6334, ptr noundef %6337, i32 noundef %6339) #9
  br label %6341

6341:                                             ; preds = %6324, %6307
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #9
  br label %6342

6342:                                             ; preds = %6341
  br label %6343

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

6344:                                             ; No predecessors!
  br label %6345

6345:                                             ; preds = %6344
  br label %6346

6346:                                             ; preds = %6345, %6288
  br label %6347

6347:                                             ; preds = %6346
  br label %6348

6348:                                             ; preds = %6347
  br label %6349

6349:                                             ; preds = %6348
  %6350 = load i32, ptr @test_count, align 4, !tbaa !5
  %6351 = add nsw i32 %6350, 1
  store i32 %6351, ptr @test_count, align 4, !tbaa !5
  %6352 = load ptr, ptr %126, align 8, !tbaa !9
  %6353 = icmp eq ptr %6352, %70
  br i1 %6353, label %6407, label %6354

6354:                                             ; preds = %6349
  br label %6355

6355:                                             ; preds = %6354
  br label %6356

6356:                                             ; preds = %6355
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #9
  %6357 = call ptr @__errno_location() #10
  %6358 = load i32, ptr %6357, align 4, !tbaa !5
  store i32 %6358, ptr %129, align 4, !tbaa !5
  %6359 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6360 = call i32 @s2n_print_stacktrace(ptr noundef %6359)
  %6361 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6362 = trunc i8 %6361 to i1
  br i1 %6362, label %6363, label %6385

6363:                                             ; preds = %6356
  %6364 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6365 = call i32 @fileno(ptr noundef %6364) #9
  %6366 = call i32 @isatty(i32 noundef %6365) #9
  %6367 = icmp ne i32 %6366, 0
  br i1 %6367, label %6368, label %6385

6368:                                             ; preds = %6363
  %6369 = load i32, ptr %129, align 4, !tbaa !5
  %6370 = call ptr @__errno_location() #10
  store i32 %6369, ptr %6370, align 4, !tbaa !5
  %6371 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6372 = load i32, ptr @test_count, align 4, !tbaa !5
  %6373 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6374 = load i32, ptr %6373, align 4, !tbaa !5
  %6375 = call ptr @s2n_strerror(i32 noundef %6374, ptr noundef @.str.8)
  %6376 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6377 = load i32, ptr %6376, align 4, !tbaa !5
  %6378 = call ptr @s2n_strerror_debug(i32 noundef %6377, ptr noundef @.str.8)
  %6379 = call ptr @__errno_location() #10
  %6380 = load i32, ptr %6379, align 4, !tbaa !5
  %6381 = call ptr @strerror(i32 noundef %6380) #9
  %6382 = call ptr @__errno_location() #10
  %6383 = load i32, ptr %6382, align 4, !tbaa !5
  %6384 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6371, ptr noundef @.str.6, i32 noundef %6372, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 257, ptr noundef %6375, ptr noundef %6378, ptr noundef %6381, i32 noundef %6383) #9
  br label %6402

6385:                                             ; preds = %6363, %6356
  %6386 = load i32, ptr %129, align 4, !tbaa !5
  %6387 = call ptr @__errno_location() #10
  store i32 %6386, ptr %6387, align 4, !tbaa !5
  %6388 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6389 = load i32, ptr @test_count, align 4, !tbaa !5
  %6390 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6391 = load i32, ptr %6390, align 4, !tbaa !5
  %6392 = call ptr @s2n_strerror(i32 noundef %6391, ptr noundef @.str.8)
  %6393 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6394 = load i32, ptr %6393, align 4, !tbaa !5
  %6395 = call ptr @s2n_strerror_debug(i32 noundef %6394, ptr noundef @.str.8)
  %6396 = call ptr @__errno_location() #10
  %6397 = load i32, ptr %6396, align 4, !tbaa !5
  %6398 = call ptr @strerror(i32 noundef %6397) #9
  %6399 = call ptr @__errno_location() #10
  %6400 = load i32, ptr %6399, align 4, !tbaa !5
  %6401 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6388, ptr noundef @.str.9, i32 noundef %6389, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 257, ptr noundef %6392, ptr noundef %6395, ptr noundef %6398, i32 noundef %6400) #9
  br label %6402

6402:                                             ; preds = %6385, %6368
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #9
  br label %6403

6403:                                             ; preds = %6402
  br label %6404

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

6405:                                             ; No predecessors!
  br label %6406

6406:                                             ; preds = %6405
  br label %6407

6407:                                             ; preds = %6406, %6349
  br label %6408

6408:                                             ; preds = %6407
  br label %6409

6409:                                             ; preds = %6408
  br label %6410

6410:                                             ; preds = %6409
  %6411 = load i32, ptr @test_count, align 4, !tbaa !5
  %6412 = add nsw i32 %6411, 1
  store i32 %6412, ptr @test_count, align 4, !tbaa !5
  %6413 = load ptr, ptr %121, align 8, !tbaa !9
  %6414 = getelementptr inbounds %struct.s2n_connection, ptr %6413, i32 0, i32 31
  %6415 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6414, i32 0, i32 4
  %6416 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6415, i32 0, i32 0
  %6417 = load ptr, ptr %6416, align 8, !tbaa !24
  %6418 = icmp eq ptr %6417, null
  br i1 %6418, label %6472, label %6419

6419:                                             ; preds = %6410
  br label %6420

6420:                                             ; preds = %6419
  br label %6421

6421:                                             ; preds = %6420
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #9
  %6422 = call ptr @__errno_location() #10
  %6423 = load i32, ptr %6422, align 4, !tbaa !5
  store i32 %6423, ptr %130, align 4, !tbaa !5
  %6424 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6425 = call i32 @s2n_print_stacktrace(ptr noundef %6424)
  %6426 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6427 = trunc i8 %6426 to i1
  br i1 %6427, label %6428, label %6450

6428:                                             ; preds = %6421
  %6429 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6430 = call i32 @fileno(ptr noundef %6429) #9
  %6431 = call i32 @isatty(i32 noundef %6430) #9
  %6432 = icmp ne i32 %6431, 0
  br i1 %6432, label %6433, label %6450

6433:                                             ; preds = %6428
  %6434 = load i32, ptr %130, align 4, !tbaa !5
  %6435 = call ptr @__errno_location() #10
  store i32 %6434, ptr %6435, align 4, !tbaa !5
  %6436 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6437 = load i32, ptr @test_count, align 4, !tbaa !5
  %6438 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6439 = load i32, ptr %6438, align 4, !tbaa !5
  %6440 = call ptr @s2n_strerror(i32 noundef %6439, ptr noundef @.str.8)
  %6441 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6442 = load i32, ptr %6441, align 4, !tbaa !5
  %6443 = call ptr @s2n_strerror_debug(i32 noundef %6442, ptr noundef @.str.8)
  %6444 = call ptr @__errno_location() #10
  %6445 = load i32, ptr %6444, align 4, !tbaa !5
  %6446 = call ptr @strerror(i32 noundef %6445) #9
  %6447 = call ptr @__errno_location() #10
  %6448 = load i32, ptr %6447, align 4, !tbaa !5
  %6449 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6436, ptr noundef @.str.6, i32 noundef %6437, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 259, ptr noundef %6440, ptr noundef %6443, ptr noundef %6446, i32 noundef %6448) #9
  br label %6467

6450:                                             ; preds = %6428, %6421
  %6451 = load i32, ptr %130, align 4, !tbaa !5
  %6452 = call ptr @__errno_location() #10
  store i32 %6451, ptr %6452, align 4, !tbaa !5
  %6453 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6454 = load i32, ptr @test_count, align 4, !tbaa !5
  %6455 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6456 = load i32, ptr %6455, align 4, !tbaa !5
  %6457 = call ptr @s2n_strerror(i32 noundef %6456, ptr noundef @.str.8)
  %6458 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6459 = load i32, ptr %6458, align 4, !tbaa !5
  %6460 = call ptr @s2n_strerror_debug(i32 noundef %6459, ptr noundef @.str.8)
  %6461 = call ptr @__errno_location() #10
  %6462 = load i32, ptr %6461, align 4, !tbaa !5
  %6463 = call ptr @strerror(i32 noundef %6462) #9
  %6464 = call ptr @__errno_location() #10
  %6465 = load i32, ptr %6464, align 4, !tbaa !5
  %6466 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6453, ptr noundef @.str.9, i32 noundef %6454, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 259, ptr noundef %6457, ptr noundef %6460, ptr noundef %6463, i32 noundef %6465) #9
  br label %6467

6467:                                             ; preds = %6450, %6433
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #9
  br label %6468

6468:                                             ; preds = %6467
  br label %6469

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

6470:                                             ; No predecessors!
  br label %6471

6471:                                             ; preds = %6470
  br label %6472

6472:                                             ; preds = %6471, %6410
  br label %6473

6473:                                             ; preds = %6472
  br label %6474

6474:                                             ; preds = %6473
  br label %6475

6475:                                             ; preds = %6474
  %6476 = load i32, ptr @test_count, align 4, !tbaa !5
  %6477 = add nsw i32 %6476, 1
  store i32 %6477, ptr @test_count, align 4, !tbaa !5
  %6478 = load ptr, ptr %121, align 8, !tbaa !9
  %6479 = getelementptr inbounds %struct.s2n_connection, ptr %6478, i32 0, i32 31
  %6480 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6479, i32 0, i32 4
  %6481 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6480, i32 0, i32 2
  %6482 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %6481, i32 0, i32 0
  %6483 = load ptr, ptr %6482, align 8, !tbaa !50
  %6484 = icmp eq ptr %6483, null
  br i1 %6484, label %6538, label %6485

6485:                                             ; preds = %6475
  br label %6486

6486:                                             ; preds = %6485
  br label %6487

6487:                                             ; preds = %6486
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #9
  %6488 = call ptr @__errno_location() #10
  %6489 = load i32, ptr %6488, align 4, !tbaa !5
  store i32 %6489, ptr %131, align 4, !tbaa !5
  %6490 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6491 = call i32 @s2n_print_stacktrace(ptr noundef %6490)
  %6492 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6493 = trunc i8 %6492 to i1
  br i1 %6493, label %6494, label %6516

6494:                                             ; preds = %6487
  %6495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6496 = call i32 @fileno(ptr noundef %6495) #9
  %6497 = call i32 @isatty(i32 noundef %6496) #9
  %6498 = icmp ne i32 %6497, 0
  br i1 %6498, label %6499, label %6516

6499:                                             ; preds = %6494
  %6500 = load i32, ptr %131, align 4, !tbaa !5
  %6501 = call ptr @__errno_location() #10
  store i32 %6500, ptr %6501, align 4, !tbaa !5
  %6502 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6503 = load i32, ptr @test_count, align 4, !tbaa !5
  %6504 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6505 = load i32, ptr %6504, align 4, !tbaa !5
  %6506 = call ptr @s2n_strerror(i32 noundef %6505, ptr noundef @.str.8)
  %6507 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6508 = load i32, ptr %6507, align 4, !tbaa !5
  %6509 = call ptr @s2n_strerror_debug(i32 noundef %6508, ptr noundef @.str.8)
  %6510 = call ptr @__errno_location() #10
  %6511 = load i32, ptr %6510, align 4, !tbaa !5
  %6512 = call ptr @strerror(i32 noundef %6511) #9
  %6513 = call ptr @__errno_location() #10
  %6514 = load i32, ptr %6513, align 4, !tbaa !5
  %6515 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6502, ptr noundef @.str.6, i32 noundef %6503, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 260, ptr noundef %6506, ptr noundef %6509, ptr noundef %6512, i32 noundef %6514) #9
  br label %6533

6516:                                             ; preds = %6494, %6487
  %6517 = load i32, ptr %131, align 4, !tbaa !5
  %6518 = call ptr @__errno_location() #10
  store i32 %6517, ptr %6518, align 4, !tbaa !5
  %6519 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6520 = load i32, ptr @test_count, align 4, !tbaa !5
  %6521 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6522 = load i32, ptr %6521, align 4, !tbaa !5
  %6523 = call ptr @s2n_strerror(i32 noundef %6522, ptr noundef @.str.8)
  %6524 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6525 = load i32, ptr %6524, align 4, !tbaa !5
  %6526 = call ptr @s2n_strerror_debug(i32 noundef %6525, ptr noundef @.str.8)
  %6527 = call ptr @__errno_location() #10
  %6528 = load i32, ptr %6527, align 4, !tbaa !5
  %6529 = call ptr @strerror(i32 noundef %6528) #9
  %6530 = call ptr @__errno_location() #10
  %6531 = load i32, ptr %6530, align 4, !tbaa !5
  %6532 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6519, ptr noundef @.str.9, i32 noundef %6520, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 260, ptr noundef %6523, ptr noundef %6526, ptr noundef %6529, i32 noundef %6531) #9
  br label %6533

6533:                                             ; preds = %6516, %6499
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #9
  br label %6534

6534:                                             ; preds = %6533
  br label %6535

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

6536:                                             ; No predecessors!
  br label %6537

6537:                                             ; preds = %6536
  br label %6538

6538:                                             ; preds = %6537, %6475
  br label %6539

6539:                                             ; preds = %6538
  br label %6540

6540:                                             ; preds = %6539
  br label %6541

6541:                                             ; preds = %6540
  %6542 = load i32, ptr @test_count, align 4, !tbaa !5
  %6543 = add nsw i32 %6542, 1
  store i32 %6543, ptr @test_count, align 4, !tbaa !5
  %6544 = load ptr, ptr %121, align 8, !tbaa !9
  %6545 = getelementptr inbounds %struct.s2n_connection, ptr %6544, i32 0, i32 31
  %6546 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6545, i32 0, i32 4
  %6547 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6546, i32 0, i32 1
  %6548 = getelementptr inbounds %struct.s2n_kem_params, ptr %6547, i32 0, i32 0
  %6549 = load ptr, ptr %6548, align 8, !tbaa !51
  %6550 = icmp eq ptr %6549, null
  br i1 %6550, label %6604, label %6551

6551:                                             ; preds = %6541
  br label %6552

6552:                                             ; preds = %6551
  br label %6553

6553:                                             ; preds = %6552
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #9
  %6554 = call ptr @__errno_location() #10
  %6555 = load i32, ptr %6554, align 4, !tbaa !5
  store i32 %6555, ptr %132, align 4, !tbaa !5
  %6556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6557 = call i32 @s2n_print_stacktrace(ptr noundef %6556)
  %6558 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6559 = trunc i8 %6558 to i1
  br i1 %6559, label %6560, label %6582

6560:                                             ; preds = %6553
  %6561 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6562 = call i32 @fileno(ptr noundef %6561) #9
  %6563 = call i32 @isatty(i32 noundef %6562) #9
  %6564 = icmp ne i32 %6563, 0
  br i1 %6564, label %6565, label %6582

6565:                                             ; preds = %6560
  %6566 = load i32, ptr %132, align 4, !tbaa !5
  %6567 = call ptr @__errno_location() #10
  store i32 %6566, ptr %6567, align 4, !tbaa !5
  %6568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6569 = load i32, ptr @test_count, align 4, !tbaa !5
  %6570 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6571 = load i32, ptr %6570, align 4, !tbaa !5
  %6572 = call ptr @s2n_strerror(i32 noundef %6571, ptr noundef @.str.8)
  %6573 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6574 = load i32, ptr %6573, align 4, !tbaa !5
  %6575 = call ptr @s2n_strerror_debug(i32 noundef %6574, ptr noundef @.str.8)
  %6576 = call ptr @__errno_location() #10
  %6577 = load i32, ptr %6576, align 4, !tbaa !5
  %6578 = call ptr @strerror(i32 noundef %6577) #9
  %6579 = call ptr @__errno_location() #10
  %6580 = load i32, ptr %6579, align 4, !tbaa !5
  %6581 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6568, ptr noundef @.str.6, i32 noundef %6569, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 261, ptr noundef %6572, ptr noundef %6575, ptr noundef %6578, i32 noundef %6580) #9
  br label %6599

6582:                                             ; preds = %6560, %6553
  %6583 = load i32, ptr %132, align 4, !tbaa !5
  %6584 = call ptr @__errno_location() #10
  store i32 %6583, ptr %6584, align 4, !tbaa !5
  %6585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6586 = load i32, ptr @test_count, align 4, !tbaa !5
  %6587 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6588 = load i32, ptr %6587, align 4, !tbaa !5
  %6589 = call ptr @s2n_strerror(i32 noundef %6588, ptr noundef @.str.8)
  %6590 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6591 = load i32, ptr %6590, align 4, !tbaa !5
  %6592 = call ptr @s2n_strerror_debug(i32 noundef %6591, ptr noundef @.str.8)
  %6593 = call ptr @__errno_location() #10
  %6594 = load i32, ptr %6593, align 4, !tbaa !5
  %6595 = call ptr @strerror(i32 noundef %6594) #9
  %6596 = call ptr @__errno_location() #10
  %6597 = load i32, ptr %6596, align 4, !tbaa !5
  %6598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6585, ptr noundef @.str.9, i32 noundef %6586, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 261, ptr noundef %6589, ptr noundef %6592, ptr noundef %6595, i32 noundef %6597) #9
  br label %6599

6599:                                             ; preds = %6582, %6565
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #9
  br label %6600

6600:                                             ; preds = %6599
  br label %6601

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

6602:                                             ; No predecessors!
  br label %6603

6603:                                             ; preds = %6602
  br label %6604

6604:                                             ; preds = %6603, %6541
  br label %6605

6605:                                             ; preds = %6604
  br label %6606

6606:                                             ; preds = %6605
  br label %6607

6607:                                             ; preds = %6606
  %6608 = load i32, ptr @test_count, align 4, !tbaa !5
  %6609 = add nsw i32 %6608, 1
  store i32 %6609, ptr @test_count, align 4, !tbaa !5
  %6610 = load ptr, ptr %121, align 8, !tbaa !9
  %6611 = getelementptr inbounds %struct.s2n_connection, ptr %6610, i32 0, i32 31
  %6612 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6611, i32 0, i32 1
  %6613 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %6612, i32 0, i32 0
  %6614 = load ptr, ptr %6613, align 8, !tbaa !52
  %6615 = icmp eq ptr %6614, null
  br i1 %6615, label %6669, label %6616

6616:                                             ; preds = %6607
  br label %6617

6617:                                             ; preds = %6616
  br label %6618

6618:                                             ; preds = %6617
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #9
  %6619 = call ptr @__errno_location() #10
  %6620 = load i32, ptr %6619, align 4, !tbaa !5
  store i32 %6620, ptr %133, align 4, !tbaa !5
  %6621 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6622 = call i32 @s2n_print_stacktrace(ptr noundef %6621)
  %6623 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6624 = trunc i8 %6623 to i1
  br i1 %6624, label %6625, label %6647

6625:                                             ; preds = %6618
  %6626 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6627 = call i32 @fileno(ptr noundef %6626) #9
  %6628 = call i32 @isatty(i32 noundef %6627) #9
  %6629 = icmp ne i32 %6628, 0
  br i1 %6629, label %6630, label %6647

6630:                                             ; preds = %6625
  %6631 = load i32, ptr %133, align 4, !tbaa !5
  %6632 = call ptr @__errno_location() #10
  store i32 %6631, ptr %6632, align 4, !tbaa !5
  %6633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6634 = load i32, ptr @test_count, align 4, !tbaa !5
  %6635 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6636 = load i32, ptr %6635, align 4, !tbaa !5
  %6637 = call ptr @s2n_strerror(i32 noundef %6636, ptr noundef @.str.8)
  %6638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6639 = load i32, ptr %6638, align 4, !tbaa !5
  %6640 = call ptr @s2n_strerror_debug(i32 noundef %6639, ptr noundef @.str.8)
  %6641 = call ptr @__errno_location() #10
  %6642 = load i32, ptr %6641, align 4, !tbaa !5
  %6643 = call ptr @strerror(i32 noundef %6642) #9
  %6644 = call ptr @__errno_location() #10
  %6645 = load i32, ptr %6644, align 4, !tbaa !5
  %6646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6633, ptr noundef @.str.6, i32 noundef %6634, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 262, ptr noundef %6637, ptr noundef %6640, ptr noundef %6643, i32 noundef %6645) #9
  br label %6664

6647:                                             ; preds = %6625, %6618
  %6648 = load i32, ptr %133, align 4, !tbaa !5
  %6649 = call ptr @__errno_location() #10
  store i32 %6648, ptr %6649, align 4, !tbaa !5
  %6650 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6651 = load i32, ptr @test_count, align 4, !tbaa !5
  %6652 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6653 = load i32, ptr %6652, align 4, !tbaa !5
  %6654 = call ptr @s2n_strerror(i32 noundef %6653, ptr noundef @.str.8)
  %6655 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6656 = load i32, ptr %6655, align 4, !tbaa !5
  %6657 = call ptr @s2n_strerror_debug(i32 noundef %6656, ptr noundef @.str.8)
  %6658 = call ptr @__errno_location() #10
  %6659 = load i32, ptr %6658, align 4, !tbaa !5
  %6660 = call ptr @strerror(i32 noundef %6659) #9
  %6661 = call ptr @__errno_location() #10
  %6662 = load i32, ptr %6661, align 4, !tbaa !5
  %6663 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6650, ptr noundef @.str.9, i32 noundef %6651, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 262, ptr noundef %6654, ptr noundef %6657, ptr noundef %6660, i32 noundef %6662) #9
  br label %6664

6664:                                             ; preds = %6647, %6630
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #9
  br label %6665

6665:                                             ; preds = %6664
  br label %6666

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

6667:                                             ; No predecessors!
  br label %6668

6668:                                             ; preds = %6667
  br label %6669

6669:                                             ; preds = %6668, %6607
  br label %6670

6670:                                             ; preds = %6669
  br label %6671

6671:                                             ; preds = %6670
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #9
  store i64 0, ptr %134, align 8, !tbaa !15
  br label %6672

6672:                                             ; preds = %6692, %6671
  %6673 = load i64, ptr %134, align 8, !tbaa !15
  %6674 = load ptr, ptr %123, align 8, !tbaa !9
  %6675 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %6674, i32 0, i32 0
  %6676 = load i8, ptr %6675, align 8, !tbaa !17
  %6677 = zext i8 %6676 to i64
  %6678 = icmp ult i64 %6673, %6677
  br i1 %6678, label %6680, label %6679

6679:                                             ; preds = %6672
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  br label %6695

6680:                                             ; preds = %6672
  %6681 = load ptr, ptr %123, align 8, !tbaa !9
  %6682 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %6681, i32 0, i32 1
  %6683 = load ptr, ptr %6682, align 8, !tbaa !55
  %6684 = load i64, ptr %134, align 8, !tbaa !15
  %6685 = getelementptr inbounds ptr, ptr %6683, i64 %6684
  %6686 = load ptr, ptr %6685, align 8, !tbaa !9
  %6687 = load ptr, ptr %121, align 8, !tbaa !9
  %6688 = getelementptr inbounds %struct.s2n_connection, ptr %6687, i32 0, i32 31
  %6689 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6688, i32 0, i32 2
  %6690 = load i64, ptr %134, align 8, !tbaa !15
  %6691 = getelementptr inbounds [4 x ptr], ptr %6689, i64 0, i64 %6690
  store ptr %6686, ptr %6691, align 8, !tbaa !9
  br label %6692

6692:                                             ; preds = %6680
  %6693 = load i64, ptr %134, align 8, !tbaa !15
  %6694 = add i64 %6693, 1
  store i64 %6694, ptr %134, align 8, !tbaa !15
  br label %6672, !llvm.loop !76

6695:                                             ; preds = %6679
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #9
  store i64 0, ptr %135, align 8, !tbaa !15
  br label %6696

6696:                                             ; preds = %6771, %6695
  %6697 = load i64, ptr %135, align 8, !tbaa !15
  %6698 = load ptr, ptr %126, align 8, !tbaa !9
  %6699 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %6698, i32 0, i32 2
  %6700 = load i8, ptr %6699, align 8, !tbaa !21
  %6701 = zext i8 %6700 to i64
  %6702 = icmp ult i64 %6697, %6701
  br i1 %6702, label %6704, label %6703

6703:                                             ; preds = %6696
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #9
  br label %6774

6704:                                             ; preds = %6696
  br label %6705

6705:                                             ; preds = %6704
  %6706 = load i32, ptr @test_count, align 4, !tbaa !5
  %6707 = add nsw i32 %6706, 1
  store i32 %6707, ptr @test_count, align 4, !tbaa !5
  %6708 = load ptr, ptr %121, align 8, !tbaa !9
  %6709 = getelementptr inbounds %struct.s2n_connection, ptr %6708, i32 0, i32 31
  %6710 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6709, i32 0, i32 6
  %6711 = load i64, ptr %135, align 8, !tbaa !15
  %6712 = getelementptr inbounds [8 x ptr], ptr %6710, i64 0, i64 %6711
  %6713 = load ptr, ptr %6712, align 8, !tbaa !9
  %6714 = icmp eq ptr %6713, null
  br i1 %6714, label %6768, label %6715

6715:                                             ; preds = %6705
  br label %6716

6716:                                             ; preds = %6715
  br label %6717

6717:                                             ; preds = %6716
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #9
  %6718 = call ptr @__errno_location() #10
  %6719 = load i32, ptr %6718, align 4, !tbaa !5
  store i32 %6719, ptr %136, align 4, !tbaa !5
  %6720 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6721 = call i32 @s2n_print_stacktrace(ptr noundef %6720)
  %6722 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6723 = trunc i8 %6722 to i1
  br i1 %6723, label %6724, label %6746

6724:                                             ; preds = %6717
  %6725 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6726 = call i32 @fileno(ptr noundef %6725) #9
  %6727 = call i32 @isatty(i32 noundef %6726) #9
  %6728 = icmp ne i32 %6727, 0
  br i1 %6728, label %6729, label %6746

6729:                                             ; preds = %6724
  %6730 = load i32, ptr %136, align 4, !tbaa !5
  %6731 = call ptr @__errno_location() #10
  store i32 %6730, ptr %6731, align 4, !tbaa !5
  %6732 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6733 = load i32, ptr @test_count, align 4, !tbaa !5
  %6734 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6735 = load i32, ptr %6734, align 4, !tbaa !5
  %6736 = call ptr @s2n_strerror(i32 noundef %6735, ptr noundef @.str.8)
  %6737 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6738 = load i32, ptr %6737, align 4, !tbaa !5
  %6739 = call ptr @s2n_strerror_debug(i32 noundef %6738, ptr noundef @.str.8)
  %6740 = call ptr @__errno_location() #10
  %6741 = load i32, ptr %6740, align 4, !tbaa !5
  %6742 = call ptr @strerror(i32 noundef %6741) #9
  %6743 = call ptr @__errno_location() #10
  %6744 = load i32, ptr %6743, align 4, !tbaa !5
  %6745 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6732, ptr noundef @.str.6, i32 noundef %6733, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 269, ptr noundef %6736, ptr noundef %6739, ptr noundef %6742, i32 noundef %6744) #9
  br label %6763

6746:                                             ; preds = %6724, %6717
  %6747 = load i32, ptr %136, align 4, !tbaa !5
  %6748 = call ptr @__errno_location() #10
  store i32 %6747, ptr %6748, align 4, !tbaa !5
  %6749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6750 = load i32, ptr @test_count, align 4, !tbaa !5
  %6751 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6752 = load i32, ptr %6751, align 4, !tbaa !5
  %6753 = call ptr @s2n_strerror(i32 noundef %6752, ptr noundef @.str.8)
  %6754 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6755 = load i32, ptr %6754, align 4, !tbaa !5
  %6756 = call ptr @s2n_strerror_debug(i32 noundef %6755, ptr noundef @.str.8)
  %6757 = call ptr @__errno_location() #10
  %6758 = load i32, ptr %6757, align 4, !tbaa !5
  %6759 = call ptr @strerror(i32 noundef %6758) #9
  %6760 = call ptr @__errno_location() #10
  %6761 = load i32, ptr %6760, align 4, !tbaa !5
  %6762 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6749, ptr noundef @.str.9, i32 noundef %6750, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 269, ptr noundef %6753, ptr noundef %6756, ptr noundef %6759, i32 noundef %6761) #9
  br label %6763

6763:                                             ; preds = %6746, %6729
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #9
  br label %6764

6764:                                             ; preds = %6763
  br label %6765

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

6766:                                             ; No predecessors!
  br label %6767

6767:                                             ; preds = %6766
  br label %6768

6768:                                             ; preds = %6767, %6705
  br label %6769

6769:                                             ; preds = %6768
  br label %6770

6770:                                             ; preds = %6769
  br label %6771

6771:                                             ; preds = %6770
  %6772 = load i64, ptr %135, align 8, !tbaa !15
  %6773 = add i64 %6772, 1
  store i64 %6773, ptr %135, align 8, !tbaa !15
  br label %6696, !llvm.loop !77

6774:                                             ; preds = %6703
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #9
  %6775 = load ptr, ptr %126, align 8, !tbaa !9
  %6776 = call ptr @s2n_kem_preferences_get_highest_priority_group(ptr noundef %6775)
  store ptr %6776, ptr %137, align 8, !tbaa !9
  br label %6777

6777:                                             ; preds = %6774
  %6778 = load i32, ptr @test_count, align 4, !tbaa !5
  %6779 = add nsw i32 %6778, 1
  store i32 %6779, ptr @test_count, align 4, !tbaa !5
  %6780 = load ptr, ptr %137, align 8, !tbaa !9
  %6781 = icmp eq ptr %6780, null
  br i1 %6781, label %6782, label %6835

6782:                                             ; preds = %6777
  br label %6783

6783:                                             ; preds = %6782
  br label %6784

6784:                                             ; preds = %6783
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #9
  %6785 = call ptr @__errno_location() #10
  %6786 = load i32, ptr %6785, align 4, !tbaa !5
  store i32 %6786, ptr %138, align 4, !tbaa !5
  %6787 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6788 = call i32 @s2n_print_stacktrace(ptr noundef %6787)
  %6789 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6790 = trunc i8 %6789 to i1
  br i1 %6790, label %6791, label %6813

6791:                                             ; preds = %6784
  %6792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6793 = call i32 @fileno(ptr noundef %6792) #9
  %6794 = call i32 @isatty(i32 noundef %6793) #9
  %6795 = icmp ne i32 %6794, 0
  br i1 %6795, label %6796, label %6813

6796:                                             ; preds = %6791
  %6797 = load i32, ptr %138, align 4, !tbaa !5
  %6798 = call ptr @__errno_location() #10
  store i32 %6797, ptr %6798, align 4, !tbaa !5
  %6799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6800 = load i32, ptr @test_count, align 4, !tbaa !5
  %6801 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6802 = load i32, ptr %6801, align 4, !tbaa !5
  %6803 = call ptr @s2n_strerror(i32 noundef %6802, ptr noundef @.str.8)
  %6804 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6805 = load i32, ptr %6804, align 4, !tbaa !5
  %6806 = call ptr @s2n_strerror_debug(i32 noundef %6805, ptr noundef @.str.8)
  %6807 = call ptr @__errno_location() #10
  %6808 = load i32, ptr %6807, align 4, !tbaa !5
  %6809 = call ptr @strerror(i32 noundef %6808) #9
  %6810 = call ptr @__errno_location() #10
  %6811 = load i32, ptr %6810, align 4, !tbaa !5
  %6812 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6799, ptr noundef @.str.6, i32 noundef %6800, ptr noundef @.str.36, ptr noundef @.str.5, i32 noundef 273, ptr noundef %6803, ptr noundef %6806, ptr noundef %6809, i32 noundef %6811) #9
  br label %6830

6813:                                             ; preds = %6791, %6784
  %6814 = load i32, ptr %138, align 4, !tbaa !5
  %6815 = call ptr @__errno_location() #10
  store i32 %6814, ptr %6815, align 4, !tbaa !5
  %6816 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6817 = load i32, ptr @test_count, align 4, !tbaa !5
  %6818 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6819 = load i32, ptr %6818, align 4, !tbaa !5
  %6820 = call ptr @s2n_strerror(i32 noundef %6819, ptr noundef @.str.8)
  %6821 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6822 = load i32, ptr %6821, align 4, !tbaa !5
  %6823 = call ptr @s2n_strerror_debug(i32 noundef %6822, ptr noundef @.str.8)
  %6824 = call ptr @__errno_location() #10
  %6825 = load i32, ptr %6824, align 4, !tbaa !5
  %6826 = call ptr @strerror(i32 noundef %6825) #9
  %6827 = call ptr @__errno_location() #10
  %6828 = load i32, ptr %6827, align 4, !tbaa !5
  %6829 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6816, ptr noundef @.str.9, i32 noundef %6817, ptr noundef @.str.36, ptr noundef @.str.5, i32 noundef 273, ptr noundef %6820, ptr noundef %6823, ptr noundef %6826, i32 noundef %6828) #9
  br label %6830

6830:                                             ; preds = %6813, %6796
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #9
  br label %6831

6831:                                             ; preds = %6830
  br label %6832

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

6833:                                             ; No predecessors!
  br label %6834

6834:                                             ; preds = %6833
  br label %6835

6835:                                             ; preds = %6834, %6777
  br label %6836

6836:                                             ; preds = %6835
  br label %6837

6837:                                             ; preds = %6836
  %6838 = load ptr, ptr %137, align 8, !tbaa !9
  %6839 = load ptr, ptr %121, align 8, !tbaa !9
  %6840 = getelementptr inbounds %struct.s2n_connection, ptr %6839, i32 0, i32 31
  %6841 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6840, i32 0, i32 6
  %6842 = getelementptr inbounds [8 x ptr], ptr %6841, i64 0, i64 0
  store ptr %6838, ptr %6842, align 8, !tbaa !9
  br label %6843

6843:                                             ; preds = %6837
  %6844 = load i32, ptr @test_count, align 4, !tbaa !5
  %6845 = add nsw i32 %6844, 1
  store i32 %6845, ptr @test_count, align 4, !tbaa !5
  %6846 = load ptr, ptr %121, align 8, !tbaa !9
  %6847 = call i32 @s2n_choose_supported_group(ptr noundef %6846)
  %6848 = icmp eq i32 %6847, -1
  br i1 %6848, label %6849, label %6902

6849:                                             ; preds = %6843
  br label %6850

6850:                                             ; preds = %6849
  br label %6851

6851:                                             ; preds = %6850
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #9
  %6852 = call ptr @__errno_location() #10
  %6853 = load i32, ptr %6852, align 4, !tbaa !5
  store i32 %6853, ptr %139, align 4, !tbaa !5
  %6854 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6855 = call i32 @s2n_print_stacktrace(ptr noundef %6854)
  %6856 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6857 = trunc i8 %6856 to i1
  br i1 %6857, label %6858, label %6880

6858:                                             ; preds = %6851
  %6859 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6860 = call i32 @fileno(ptr noundef %6859) #9
  %6861 = call i32 @isatty(i32 noundef %6860) #9
  %6862 = icmp ne i32 %6861, 0
  br i1 %6862, label %6863, label %6880

6863:                                             ; preds = %6858
  %6864 = load i32, ptr %139, align 4, !tbaa !5
  %6865 = call ptr @__errno_location() #10
  store i32 %6864, ptr %6865, align 4, !tbaa !5
  %6866 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6867 = load i32, ptr @test_count, align 4, !tbaa !5
  %6868 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6869 = load i32, ptr %6868, align 4, !tbaa !5
  %6870 = call ptr @s2n_strerror(i32 noundef %6869, ptr noundef @.str.8)
  %6871 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6872 = load i32, ptr %6871, align 4, !tbaa !5
  %6873 = call ptr @s2n_strerror_debug(i32 noundef %6872, ptr noundef @.str.8)
  %6874 = call ptr @__errno_location() #10
  %6875 = load i32, ptr %6874, align 4, !tbaa !5
  %6876 = call ptr @strerror(i32 noundef %6875) #9
  %6877 = call ptr @__errno_location() #10
  %6878 = load i32, ptr %6877, align 4, !tbaa !5
  %6879 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6866, ptr noundef @.str.6, i32 noundef %6867, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 275, ptr noundef %6870, ptr noundef %6873, ptr noundef %6876, i32 noundef %6878) #9
  br label %6897

6880:                                             ; preds = %6858, %6851
  %6881 = load i32, ptr %139, align 4, !tbaa !5
  %6882 = call ptr @__errno_location() #10
  store i32 %6881, ptr %6882, align 4, !tbaa !5
  %6883 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6884 = load i32, ptr @test_count, align 4, !tbaa !5
  %6885 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6886 = load i32, ptr %6885, align 4, !tbaa !5
  %6887 = call ptr @s2n_strerror(i32 noundef %6886, ptr noundef @.str.8)
  %6888 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6889 = load i32, ptr %6888, align 4, !tbaa !5
  %6890 = call ptr @s2n_strerror_debug(i32 noundef %6889, ptr noundef @.str.8)
  %6891 = call ptr @__errno_location() #10
  %6892 = load i32, ptr %6891, align 4, !tbaa !5
  %6893 = call ptr @strerror(i32 noundef %6892) #9
  %6894 = call ptr @__errno_location() #10
  %6895 = load i32, ptr %6894, align 4, !tbaa !5
  %6896 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6883, ptr noundef @.str.9, i32 noundef %6884, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 275, ptr noundef %6887, ptr noundef %6890, ptr noundef %6893, i32 noundef %6895) #9
  br label %6897

6897:                                             ; preds = %6880, %6863
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #9
  br label %6898

6898:                                             ; preds = %6897
  br label %6899

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

6900:                                             ; No predecessors!
  br label %6901

6901:                                             ; preds = %6900
  br label %6902

6902:                                             ; preds = %6901, %6843
  br label %6903

6903:                                             ; preds = %6902
  br label %6904

6904:                                             ; preds = %6903
  br label %6905

6905:                                             ; preds = %6904
  %6906 = load i32, ptr @test_count, align 4, !tbaa !5
  %6907 = add nsw i32 %6906, 1
  store i32 %6907, ptr @test_count, align 4, !tbaa !5
  %6908 = load ptr, ptr %121, align 8, !tbaa !9
  %6909 = getelementptr inbounds %struct.s2n_connection, ptr %6908, i32 0, i32 31
  %6910 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6909, i32 0, i32 4
  %6911 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6910, i32 0, i32 0
  %6912 = load ptr, ptr %6911, align 8, !tbaa !24
  %6913 = load ptr, ptr %137, align 8, !tbaa !9
  %6914 = icmp eq ptr %6912, %6913
  br i1 %6914, label %6968, label %6915

6915:                                             ; preds = %6905
  br label %6916

6916:                                             ; preds = %6915
  br label %6917

6917:                                             ; preds = %6916
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #9
  %6918 = call ptr @__errno_location() #10
  %6919 = load i32, ptr %6918, align 4, !tbaa !5
  store i32 %6919, ptr %140, align 4, !tbaa !5
  %6920 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6921 = call i32 @s2n_print_stacktrace(ptr noundef %6920)
  %6922 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6923 = trunc i8 %6922 to i1
  br i1 %6923, label %6924, label %6946

6924:                                             ; preds = %6917
  %6925 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6926 = call i32 @fileno(ptr noundef %6925) #9
  %6927 = call i32 @isatty(i32 noundef %6926) #9
  %6928 = icmp ne i32 %6927, 0
  br i1 %6928, label %6929, label %6946

6929:                                             ; preds = %6924
  %6930 = load i32, ptr %140, align 4, !tbaa !5
  %6931 = call ptr @__errno_location() #10
  store i32 %6930, ptr %6931, align 4, !tbaa !5
  %6932 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6933 = load i32, ptr @test_count, align 4, !tbaa !5
  %6934 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6935 = load i32, ptr %6934, align 4, !tbaa !5
  %6936 = call ptr @s2n_strerror(i32 noundef %6935, ptr noundef @.str.8)
  %6937 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6938 = load i32, ptr %6937, align 4, !tbaa !5
  %6939 = call ptr @s2n_strerror_debug(i32 noundef %6938, ptr noundef @.str.8)
  %6940 = call ptr @__errno_location() #10
  %6941 = load i32, ptr %6940, align 4, !tbaa !5
  %6942 = call ptr @strerror(i32 noundef %6941) #9
  %6943 = call ptr @__errno_location() #10
  %6944 = load i32, ptr %6943, align 4, !tbaa !5
  %6945 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6932, ptr noundef @.str.6, i32 noundef %6933, ptr noundef @.str.37, ptr noundef @.str.5, i32 noundef 277, ptr noundef %6936, ptr noundef %6939, ptr noundef %6942, i32 noundef %6944) #9
  br label %6963

6946:                                             ; preds = %6924, %6917
  %6947 = load i32, ptr %140, align 4, !tbaa !5
  %6948 = call ptr @__errno_location() #10
  store i32 %6947, ptr %6948, align 4, !tbaa !5
  %6949 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6950 = load i32, ptr @test_count, align 4, !tbaa !5
  %6951 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6952 = load i32, ptr %6951, align 4, !tbaa !5
  %6953 = call ptr @s2n_strerror(i32 noundef %6952, ptr noundef @.str.8)
  %6954 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %6955 = load i32, ptr %6954, align 4, !tbaa !5
  %6956 = call ptr @s2n_strerror_debug(i32 noundef %6955, ptr noundef @.str.8)
  %6957 = call ptr @__errno_location() #10
  %6958 = load i32, ptr %6957, align 4, !tbaa !5
  %6959 = call ptr @strerror(i32 noundef %6958) #9
  %6960 = call ptr @__errno_location() #10
  %6961 = load i32, ptr %6960, align 4, !tbaa !5
  %6962 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %6949, ptr noundef @.str.9, i32 noundef %6950, ptr noundef @.str.37, ptr noundef @.str.5, i32 noundef 277, ptr noundef %6953, ptr noundef %6956, ptr noundef %6959, i32 noundef %6961) #9
  br label %6963

6963:                                             ; preds = %6946, %6929
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #9
  br label %6964

6964:                                             ; preds = %6963
  br label %6965

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

6966:                                             ; No predecessors!
  br label %6967

6967:                                             ; preds = %6966
  br label %6968

6968:                                             ; preds = %6967, %6905
  br label %6969

6969:                                             ; preds = %6968
  br label %6970

6970:                                             ; preds = %6969
  br label %6971

6971:                                             ; preds = %6970
  %6972 = load i32, ptr @test_count, align 4, !tbaa !5
  %6973 = add nsw i32 %6972, 1
  store i32 %6973, ptr @test_count, align 4, !tbaa !5
  %6974 = load ptr, ptr %121, align 8, !tbaa !9
  %6975 = getelementptr inbounds %struct.s2n_connection, ptr %6974, i32 0, i32 31
  %6976 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %6975, i32 0, i32 4
  %6977 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %6976, i32 0, i32 2
  %6978 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %6977, i32 0, i32 0
  %6979 = load ptr, ptr %6978, align 8, !tbaa !50
  %6980 = load ptr, ptr %137, align 8, !tbaa !9
  %6981 = getelementptr inbounds %struct.s2n_kem_group, ptr %6980, i32 0, i32 2
  %6982 = load ptr, ptr %6981, align 8, !tbaa !73
  %6983 = icmp eq ptr %6979, %6982
  br i1 %6983, label %7037, label %6984

6984:                                             ; preds = %6971
  br label %6985

6985:                                             ; preds = %6984
  br label %6986

6986:                                             ; preds = %6985
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #9
  %6987 = call ptr @__errno_location() #10
  %6988 = load i32, ptr %6987, align 4, !tbaa !5
  store i32 %6988, ptr %141, align 4, !tbaa !5
  %6989 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6990 = call i32 @s2n_print_stacktrace(ptr noundef %6989)
  %6991 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %6992 = trunc i8 %6991 to i1
  br i1 %6992, label %6993, label %7015

6993:                                             ; preds = %6986
  %6994 = load ptr, ptr @stderr, align 8, !tbaa !9
  %6995 = call i32 @fileno(ptr noundef %6994) #9
  %6996 = call i32 @isatty(i32 noundef %6995) #9
  %6997 = icmp ne i32 %6996, 0
  br i1 %6997, label %6998, label %7015

6998:                                             ; preds = %6993
  %6999 = load i32, ptr %141, align 4, !tbaa !5
  %7000 = call ptr @__errno_location() #10
  store i32 %6999, ptr %7000, align 4, !tbaa !5
  %7001 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7002 = load i32, ptr @test_count, align 4, !tbaa !5
  %7003 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7004 = load i32, ptr %7003, align 4, !tbaa !5
  %7005 = call ptr @s2n_strerror(i32 noundef %7004, ptr noundef @.str.8)
  %7006 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7007 = load i32, ptr %7006, align 4, !tbaa !5
  %7008 = call ptr @s2n_strerror_debug(i32 noundef %7007, ptr noundef @.str.8)
  %7009 = call ptr @__errno_location() #10
  %7010 = load i32, ptr %7009, align 4, !tbaa !5
  %7011 = call ptr @strerror(i32 noundef %7010) #9
  %7012 = call ptr @__errno_location() #10
  %7013 = load i32, ptr %7012, align 4, !tbaa !5
  %7014 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7001, ptr noundef @.str.6, i32 noundef %7002, ptr noundef @.str.38, ptr noundef @.str.5, i32 noundef 278, ptr noundef %7005, ptr noundef %7008, ptr noundef %7011, i32 noundef %7013) #9
  br label %7032

7015:                                             ; preds = %6993, %6986
  %7016 = load i32, ptr %141, align 4, !tbaa !5
  %7017 = call ptr @__errno_location() #10
  store i32 %7016, ptr %7017, align 4, !tbaa !5
  %7018 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7019 = load i32, ptr @test_count, align 4, !tbaa !5
  %7020 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7021 = load i32, ptr %7020, align 4, !tbaa !5
  %7022 = call ptr @s2n_strerror(i32 noundef %7021, ptr noundef @.str.8)
  %7023 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7024 = load i32, ptr %7023, align 4, !tbaa !5
  %7025 = call ptr @s2n_strerror_debug(i32 noundef %7024, ptr noundef @.str.8)
  %7026 = call ptr @__errno_location() #10
  %7027 = load i32, ptr %7026, align 4, !tbaa !5
  %7028 = call ptr @strerror(i32 noundef %7027) #9
  %7029 = call ptr @__errno_location() #10
  %7030 = load i32, ptr %7029, align 4, !tbaa !5
  %7031 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7018, ptr noundef @.str.9, i32 noundef %7019, ptr noundef @.str.38, ptr noundef @.str.5, i32 noundef 278, ptr noundef %7022, ptr noundef %7025, ptr noundef %7028, i32 noundef %7030) #9
  br label %7032

7032:                                             ; preds = %7015, %6998
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #9
  br label %7033

7033:                                             ; preds = %7032
  br label %7034

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

7035:                                             ; No predecessors!
  br label %7036

7036:                                             ; preds = %7035
  br label %7037

7037:                                             ; preds = %7036, %6971
  br label %7038

7038:                                             ; preds = %7037
  br label %7039

7039:                                             ; preds = %7038
  br label %7040

7040:                                             ; preds = %7039
  %7041 = load i32, ptr @test_count, align 4, !tbaa !5
  %7042 = add nsw i32 %7041, 1
  store i32 %7042, ptr @test_count, align 4, !tbaa !5
  %7043 = load ptr, ptr %121, align 8, !tbaa !9
  %7044 = getelementptr inbounds %struct.s2n_connection, ptr %7043, i32 0, i32 31
  %7045 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7044, i32 0, i32 4
  %7046 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7045, i32 0, i32 1
  %7047 = getelementptr inbounds %struct.s2n_kem_params, ptr %7046, i32 0, i32 0
  %7048 = load ptr, ptr %7047, align 8, !tbaa !51
  %7049 = load ptr, ptr %137, align 8, !tbaa !9
  %7050 = getelementptr inbounds %struct.s2n_kem_group, ptr %7049, i32 0, i32 3
  %7051 = load ptr, ptr %7050, align 8, !tbaa !75
  %7052 = icmp eq ptr %7048, %7051
  br i1 %7052, label %7106, label %7053

7053:                                             ; preds = %7040
  br label %7054

7054:                                             ; preds = %7053
  br label %7055

7055:                                             ; preds = %7054
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #9
  %7056 = call ptr @__errno_location() #10
  %7057 = load i32, ptr %7056, align 4, !tbaa !5
  store i32 %7057, ptr %142, align 4, !tbaa !5
  %7058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7059 = call i32 @s2n_print_stacktrace(ptr noundef %7058)
  %7060 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7061 = trunc i8 %7060 to i1
  br i1 %7061, label %7062, label %7084

7062:                                             ; preds = %7055
  %7063 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7064 = call i32 @fileno(ptr noundef %7063) #9
  %7065 = call i32 @isatty(i32 noundef %7064) #9
  %7066 = icmp ne i32 %7065, 0
  br i1 %7066, label %7067, label %7084

7067:                                             ; preds = %7062
  %7068 = load i32, ptr %142, align 4, !tbaa !5
  %7069 = call ptr @__errno_location() #10
  store i32 %7068, ptr %7069, align 4, !tbaa !5
  %7070 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7071 = load i32, ptr @test_count, align 4, !tbaa !5
  %7072 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7073 = load i32, ptr %7072, align 4, !tbaa !5
  %7074 = call ptr @s2n_strerror(i32 noundef %7073, ptr noundef @.str.8)
  %7075 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7076 = load i32, ptr %7075, align 4, !tbaa !5
  %7077 = call ptr @s2n_strerror_debug(i32 noundef %7076, ptr noundef @.str.8)
  %7078 = call ptr @__errno_location() #10
  %7079 = load i32, ptr %7078, align 4, !tbaa !5
  %7080 = call ptr @strerror(i32 noundef %7079) #9
  %7081 = call ptr @__errno_location() #10
  %7082 = load i32, ptr %7081, align 4, !tbaa !5
  %7083 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7070, ptr noundef @.str.6, i32 noundef %7071, ptr noundef @.str.39, ptr noundef @.str.5, i32 noundef 279, ptr noundef %7074, ptr noundef %7077, ptr noundef %7080, i32 noundef %7082) #9
  br label %7101

7084:                                             ; preds = %7062, %7055
  %7085 = load i32, ptr %142, align 4, !tbaa !5
  %7086 = call ptr @__errno_location() #10
  store i32 %7085, ptr %7086, align 4, !tbaa !5
  %7087 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7088 = load i32, ptr @test_count, align 4, !tbaa !5
  %7089 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7090 = load i32, ptr %7089, align 4, !tbaa !5
  %7091 = call ptr @s2n_strerror(i32 noundef %7090, ptr noundef @.str.8)
  %7092 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7093 = load i32, ptr %7092, align 4, !tbaa !5
  %7094 = call ptr @s2n_strerror_debug(i32 noundef %7093, ptr noundef @.str.8)
  %7095 = call ptr @__errno_location() #10
  %7096 = load i32, ptr %7095, align 4, !tbaa !5
  %7097 = call ptr @strerror(i32 noundef %7096) #9
  %7098 = call ptr @__errno_location() #10
  %7099 = load i32, ptr %7098, align 4, !tbaa !5
  %7100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7087, ptr noundef @.str.9, i32 noundef %7088, ptr noundef @.str.39, ptr noundef @.str.5, i32 noundef 279, ptr noundef %7091, ptr noundef %7094, ptr noundef %7097, i32 noundef %7099) #9
  br label %7101

7101:                                             ; preds = %7084, %7067
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #9
  br label %7102

7102:                                             ; preds = %7101
  br label %7103

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

7104:                                             ; No predecessors!
  br label %7105

7105:                                             ; preds = %7104
  br label %7106

7106:                                             ; preds = %7105, %7040
  br label %7107

7107:                                             ; preds = %7106
  br label %7108

7108:                                             ; preds = %7107
  br label %7109

7109:                                             ; preds = %7108
  %7110 = load i32, ptr @test_count, align 4, !tbaa !5
  %7111 = add nsw i32 %7110, 1
  store i32 %7111, ptr @test_count, align 4, !tbaa !5
  %7112 = load ptr, ptr %121, align 8, !tbaa !9
  %7113 = getelementptr inbounds %struct.s2n_connection, ptr %7112, i32 0, i32 31
  %7114 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7113, i32 0, i32 1
  %7115 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %7114, i32 0, i32 0
  %7116 = load ptr, ptr %7115, align 8, !tbaa !52
  %7117 = icmp eq ptr %7116, null
  br i1 %7117, label %7171, label %7118

7118:                                             ; preds = %7109
  br label %7119

7119:                                             ; preds = %7118
  br label %7120

7120:                                             ; preds = %7119
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #9
  %7121 = call ptr @__errno_location() #10
  %7122 = load i32, ptr %7121, align 4, !tbaa !5
  store i32 %7122, ptr %143, align 4, !tbaa !5
  %7123 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7124 = call i32 @s2n_print_stacktrace(ptr noundef %7123)
  %7125 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7126 = trunc i8 %7125 to i1
  br i1 %7126, label %7127, label %7149

7127:                                             ; preds = %7120
  %7128 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7129 = call i32 @fileno(ptr noundef %7128) #9
  %7130 = call i32 @isatty(i32 noundef %7129) #9
  %7131 = icmp ne i32 %7130, 0
  br i1 %7131, label %7132, label %7149

7132:                                             ; preds = %7127
  %7133 = load i32, ptr %143, align 4, !tbaa !5
  %7134 = call ptr @__errno_location() #10
  store i32 %7133, ptr %7134, align 4, !tbaa !5
  %7135 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7136 = load i32, ptr @test_count, align 4, !tbaa !5
  %7137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7138 = load i32, ptr %7137, align 4, !tbaa !5
  %7139 = call ptr @s2n_strerror(i32 noundef %7138, ptr noundef @.str.8)
  %7140 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7141 = load i32, ptr %7140, align 4, !tbaa !5
  %7142 = call ptr @s2n_strerror_debug(i32 noundef %7141, ptr noundef @.str.8)
  %7143 = call ptr @__errno_location() #10
  %7144 = load i32, ptr %7143, align 4, !tbaa !5
  %7145 = call ptr @strerror(i32 noundef %7144) #9
  %7146 = call ptr @__errno_location() #10
  %7147 = load i32, ptr %7146, align 4, !tbaa !5
  %7148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7135, ptr noundef @.str.6, i32 noundef %7136, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 280, ptr noundef %7139, ptr noundef %7142, ptr noundef %7145, i32 noundef %7147) #9
  br label %7166

7149:                                             ; preds = %7127, %7120
  %7150 = load i32, ptr %143, align 4, !tbaa !5
  %7151 = call ptr @__errno_location() #10
  store i32 %7150, ptr %7151, align 4, !tbaa !5
  %7152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7153 = load i32, ptr @test_count, align 4, !tbaa !5
  %7154 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7155 = load i32, ptr %7154, align 4, !tbaa !5
  %7156 = call ptr @s2n_strerror(i32 noundef %7155, ptr noundef @.str.8)
  %7157 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7158 = load i32, ptr %7157, align 4, !tbaa !5
  %7159 = call ptr @s2n_strerror_debug(i32 noundef %7158, ptr noundef @.str.8)
  %7160 = call ptr @__errno_location() #10
  %7161 = load i32, ptr %7160, align 4, !tbaa !5
  %7162 = call ptr @strerror(i32 noundef %7161) #9
  %7163 = call ptr @__errno_location() #10
  %7164 = load i32, ptr %7163, align 4, !tbaa !5
  %7165 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7152, ptr noundef @.str.9, i32 noundef %7153, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 280, ptr noundef %7156, ptr noundef %7159, ptr noundef %7162, i32 noundef %7164) #9
  br label %7166

7166:                                             ; preds = %7149, %7132
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #9
  br label %7167

7167:                                             ; preds = %7166
  br label %7168

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

7169:                                             ; No predecessors!
  br label %7170

7170:                                             ; preds = %7169
  br label %7171

7171:                                             ; preds = %7170, %7109
  br label %7172

7172:                                             ; preds = %7171
  br label %7173

7173:                                             ; preds = %7172
  br label %7174

7174:                                             ; preds = %7173
  %7175 = load i32, ptr @test_count, align 4, !tbaa !5
  %7176 = add nsw i32 %7175, 1
  store i32 %7176, ptr @test_count, align 4, !tbaa !5
  %7177 = load ptr, ptr %121, align 8, !tbaa !9
  %7178 = call i32 @s2n_connection_free(ptr noundef %7177)
  %7179 = icmp eq i32 %7178, -1
  br i1 %7179, label %7180, label %7233

7180:                                             ; preds = %7174
  br label %7181

7181:                                             ; preds = %7180
  br label %7182

7182:                                             ; preds = %7181
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #9
  %7183 = call ptr @__errno_location() #10
  %7184 = load i32, ptr %7183, align 4, !tbaa !5
  store i32 %7184, ptr %144, align 4, !tbaa !5
  %7185 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7186 = call i32 @s2n_print_stacktrace(ptr noundef %7185)
  %7187 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7188 = trunc i8 %7187 to i1
  br i1 %7188, label %7189, label %7211

7189:                                             ; preds = %7182
  %7190 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7191 = call i32 @fileno(ptr noundef %7190) #9
  %7192 = call i32 @isatty(i32 noundef %7191) #9
  %7193 = icmp ne i32 %7192, 0
  br i1 %7193, label %7194, label %7211

7194:                                             ; preds = %7189
  %7195 = load i32, ptr %144, align 4, !tbaa !5
  %7196 = call ptr @__errno_location() #10
  store i32 %7195, ptr %7196, align 4, !tbaa !5
  %7197 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7198 = load i32, ptr @test_count, align 4, !tbaa !5
  %7199 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7200 = load i32, ptr %7199, align 4, !tbaa !5
  %7201 = call ptr @s2n_strerror(i32 noundef %7200, ptr noundef @.str.8)
  %7202 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7203 = load i32, ptr %7202, align 4, !tbaa !5
  %7204 = call ptr @s2n_strerror_debug(i32 noundef %7203, ptr noundef @.str.8)
  %7205 = call ptr @__errno_location() #10
  %7206 = load i32, ptr %7205, align 4, !tbaa !5
  %7207 = call ptr @strerror(i32 noundef %7206) #9
  %7208 = call ptr @__errno_location() #10
  %7209 = load i32, ptr %7208, align 4, !tbaa !5
  %7210 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7197, ptr noundef @.str.6, i32 noundef %7198, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 281, ptr noundef %7201, ptr noundef %7204, ptr noundef %7207, i32 noundef %7209) #9
  br label %7228

7211:                                             ; preds = %7189, %7182
  %7212 = load i32, ptr %144, align 4, !tbaa !5
  %7213 = call ptr @__errno_location() #10
  store i32 %7212, ptr %7213, align 4, !tbaa !5
  %7214 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7215 = load i32, ptr @test_count, align 4, !tbaa !5
  %7216 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7217 = load i32, ptr %7216, align 4, !tbaa !5
  %7218 = call ptr @s2n_strerror(i32 noundef %7217, ptr noundef @.str.8)
  %7219 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7220 = load i32, ptr %7219, align 4, !tbaa !5
  %7221 = call ptr @s2n_strerror_debug(i32 noundef %7220, ptr noundef @.str.8)
  %7222 = call ptr @__errno_location() #10
  %7223 = load i32, ptr %7222, align 4, !tbaa !5
  %7224 = call ptr @strerror(i32 noundef %7223) #9
  %7225 = call ptr @__errno_location() #10
  %7226 = load i32, ptr %7225, align 4, !tbaa !5
  %7227 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7214, ptr noundef @.str.9, i32 noundef %7215, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 281, ptr noundef %7218, ptr noundef %7221, ptr noundef %7224, i32 noundef %7226) #9
  br label %7228

7228:                                             ; preds = %7211, %7194
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #9
  br label %7229

7229:                                             ; preds = %7228
  br label %7230

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

7231:                                             ; No predecessors!
  br label %7232

7232:                                             ; preds = %7231
  br label %7233

7233:                                             ; preds = %7232, %7174
  br label %7234

7234:                                             ; preds = %7233
  br label %7235

7235:                                             ; preds = %7234
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  br label %7236

7236:                                             ; preds = %7235, %6036
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #9
  store ptr null, ptr %145, align 8, !tbaa !9
  br label %7237

7237:                                             ; preds = %7236
  %7238 = load i32, ptr @test_count, align 4, !tbaa !5
  %7239 = add nsw i32 %7238, 1
  store i32 %7239, ptr @test_count, align 4, !tbaa !5
  %7240 = call ptr @s2n_connection_new(i32 noundef 0)
  store ptr %7240, ptr %145, align 8, !tbaa !9
  %7241 = icmp eq ptr %7240, null
  br i1 %7241, label %7242, label %7295

7242:                                             ; preds = %7237
  br label %7243

7243:                                             ; preds = %7242
  br label %7244

7244:                                             ; preds = %7243
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #9
  %7245 = call ptr @__errno_location() #10
  %7246 = load i32, ptr %7245, align 4, !tbaa !5
  store i32 %7246, ptr %146, align 4, !tbaa !5
  %7247 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7248 = call i32 @s2n_print_stacktrace(ptr noundef %7247)
  %7249 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7250 = trunc i8 %7249 to i1
  br i1 %7250, label %7251, label %7273

7251:                                             ; preds = %7244
  %7252 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7253 = call i32 @fileno(ptr noundef %7252) #9
  %7254 = call i32 @isatty(i32 noundef %7253) #9
  %7255 = icmp ne i32 %7254, 0
  br i1 %7255, label %7256, label %7273

7256:                                             ; preds = %7251
  %7257 = load i32, ptr %146, align 4, !tbaa !5
  %7258 = call ptr @__errno_location() #10
  store i32 %7257, ptr %7258, align 4, !tbaa !5
  %7259 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7260 = load i32, ptr @test_count, align 4, !tbaa !5
  %7261 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7262 = load i32, ptr %7261, align 4, !tbaa !5
  %7263 = call ptr @s2n_strerror(i32 noundef %7262, ptr noundef @.str.8)
  %7264 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7265 = load i32, ptr %7264, align 4, !tbaa !5
  %7266 = call ptr @s2n_strerror_debug(i32 noundef %7265, ptr noundef @.str.8)
  %7267 = call ptr @__errno_location() #10
  %7268 = load i32, ptr %7267, align 4, !tbaa !5
  %7269 = call ptr @strerror(i32 noundef %7268) #9
  %7270 = call ptr @__errno_location() #10
  %7271 = load i32, ptr %7270, align 4, !tbaa !5
  %7272 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7259, ptr noundef @.str.6, i32 noundef %7260, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 286, ptr noundef %7263, ptr noundef %7266, ptr noundef %7269, i32 noundef %7271) #9
  br label %7290

7273:                                             ; preds = %7251, %7244
  %7274 = load i32, ptr %146, align 4, !tbaa !5
  %7275 = call ptr @__errno_location() #10
  store i32 %7274, ptr %7275, align 4, !tbaa !5
  %7276 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7277 = load i32, ptr @test_count, align 4, !tbaa !5
  %7278 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7279 = load i32, ptr %7278, align 4, !tbaa !5
  %7280 = call ptr @s2n_strerror(i32 noundef %7279, ptr noundef @.str.8)
  %7281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7282 = load i32, ptr %7281, align 4, !tbaa !5
  %7283 = call ptr @s2n_strerror_debug(i32 noundef %7282, ptr noundef @.str.8)
  %7284 = call ptr @__errno_location() #10
  %7285 = load i32, ptr %7284, align 4, !tbaa !5
  %7286 = call ptr @strerror(i32 noundef %7285) #9
  %7287 = call ptr @__errno_location() #10
  %7288 = load i32, ptr %7287, align 4, !tbaa !5
  %7289 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7276, ptr noundef @.str.9, i32 noundef %7277, ptr noundef @.str.13, ptr noundef @.str.5, i32 noundef 286, ptr noundef %7280, ptr noundef %7283, ptr noundef %7286, i32 noundef %7288) #9
  br label %7290

7290:                                             ; preds = %7273, %7256
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #9
  br label %7291

7291:                                             ; preds = %7290
  br label %7292

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

7293:                                             ; No predecessors!
  br label %7294

7294:                                             ; preds = %7293
  br label %7295

7295:                                             ; preds = %7294, %7237
  br label %7296

7296:                                             ; preds = %7295
  br label %7297

7297:                                             ; preds = %7296
  %7298 = load ptr, ptr %145, align 8, !tbaa !9
  %7299 = getelementptr inbounds %struct.s2n_connection, ptr %7298, i32 0, i32 2
  store ptr %71, ptr %7299, align 8, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #9
  store ptr null, ptr %147, align 8, !tbaa !9
  br label %7300

7300:                                             ; preds = %7297
  %7301 = load i32, ptr @test_count, align 4, !tbaa !5
  %7302 = add nsw i32 %7301, 1
  store i32 %7302, ptr @test_count, align 4, !tbaa !5
  %7303 = load ptr, ptr %145, align 8, !tbaa !9
  %7304 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef %7303, ptr noundef %147)
  %7305 = icmp eq i32 %7304, -1
  br i1 %7305, label %7306, label %7359

7306:                                             ; preds = %7300
  br label %7307

7307:                                             ; preds = %7306
  br label %7308

7308:                                             ; preds = %7307
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #9
  %7309 = call ptr @__errno_location() #10
  %7310 = load i32, ptr %7309, align 4, !tbaa !5
  store i32 %7310, ptr %148, align 4, !tbaa !5
  %7311 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7312 = call i32 @s2n_print_stacktrace(ptr noundef %7311)
  %7313 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7314 = trunc i8 %7313 to i1
  br i1 %7314, label %7315, label %7337

7315:                                             ; preds = %7308
  %7316 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7317 = call i32 @fileno(ptr noundef %7316) #9
  %7318 = call i32 @isatty(i32 noundef %7317) #9
  %7319 = icmp ne i32 %7318, 0
  br i1 %7319, label %7320, label %7337

7320:                                             ; preds = %7315
  %7321 = load i32, ptr %148, align 4, !tbaa !5
  %7322 = call ptr @__errno_location() #10
  store i32 %7321, ptr %7322, align 4, !tbaa !5
  %7323 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7324 = load i32, ptr @test_count, align 4, !tbaa !5
  %7325 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7326 = load i32, ptr %7325, align 4, !tbaa !5
  %7327 = call ptr @s2n_strerror(i32 noundef %7326, ptr noundef @.str.8)
  %7328 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7329 = load i32, ptr %7328, align 4, !tbaa !5
  %7330 = call ptr @s2n_strerror_debug(i32 noundef %7329, ptr noundef @.str.8)
  %7331 = call ptr @__errno_location() #10
  %7332 = load i32, ptr %7331, align 4, !tbaa !5
  %7333 = call ptr @strerror(i32 noundef %7332) #9
  %7334 = call ptr @__errno_location() #10
  %7335 = load i32, ptr %7334, align 4, !tbaa !5
  %7336 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7323, ptr noundef @.str.6, i32 noundef %7324, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 290, ptr noundef %7327, ptr noundef %7330, ptr noundef %7333, i32 noundef %7335) #9
  br label %7354

7337:                                             ; preds = %7315, %7308
  %7338 = load i32, ptr %148, align 4, !tbaa !5
  %7339 = call ptr @__errno_location() #10
  store i32 %7338, ptr %7339, align 4, !tbaa !5
  %7340 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7341 = load i32, ptr @test_count, align 4, !tbaa !5
  %7342 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7343 = load i32, ptr %7342, align 4, !tbaa !5
  %7344 = call ptr @s2n_strerror(i32 noundef %7343, ptr noundef @.str.8)
  %7345 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7346 = load i32, ptr %7345, align 4, !tbaa !5
  %7347 = call ptr @s2n_strerror_debug(i32 noundef %7346, ptr noundef @.str.8)
  %7348 = call ptr @__errno_location() #10
  %7349 = load i32, ptr %7348, align 4, !tbaa !5
  %7350 = call ptr @strerror(i32 noundef %7349) #9
  %7351 = call ptr @__errno_location() #10
  %7352 = load i32, ptr %7351, align 4, !tbaa !5
  %7353 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7340, ptr noundef @.str.9, i32 noundef %7341, ptr noundef @.str.14, ptr noundef @.str.5, i32 noundef 290, ptr noundef %7344, ptr noundef %7347, ptr noundef %7350, i32 noundef %7352) #9
  br label %7354

7354:                                             ; preds = %7337, %7320
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #9
  br label %7355

7355:                                             ; preds = %7354
  br label %7356

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

7357:                                             ; No predecessors!
  br label %7358

7358:                                             ; preds = %7357
  br label %7359

7359:                                             ; preds = %7358, %7300
  br label %7360

7360:                                             ; preds = %7359
  br label %7361

7361:                                             ; preds = %7360
  br label %7362

7362:                                             ; preds = %7361
  %7363 = load i32, ptr @test_count, align 4, !tbaa !5
  %7364 = add nsw i32 %7363, 1
  store i32 %7364, ptr @test_count, align 4, !tbaa !5
  %7365 = load ptr, ptr %147, align 8, !tbaa !9
  %7366 = icmp eq ptr %7365, null
  br i1 %7366, label %7367, label %7420

7367:                                             ; preds = %7362
  br label %7368

7368:                                             ; preds = %7367
  br label %7369

7369:                                             ; preds = %7368
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #9
  %7370 = call ptr @__errno_location() #10
  %7371 = load i32, ptr %7370, align 4, !tbaa !5
  store i32 %7371, ptr %149, align 4, !tbaa !5
  %7372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7373 = call i32 @s2n_print_stacktrace(ptr noundef %7372)
  %7374 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7375 = trunc i8 %7374 to i1
  br i1 %7375, label %7376, label %7398

7376:                                             ; preds = %7369
  %7377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7378 = call i32 @fileno(ptr noundef %7377) #9
  %7379 = call i32 @isatty(i32 noundef %7378) #9
  %7380 = icmp ne i32 %7379, 0
  br i1 %7380, label %7381, label %7398

7381:                                             ; preds = %7376
  %7382 = load i32, ptr %149, align 4, !tbaa !5
  %7383 = call ptr @__errno_location() #10
  store i32 %7382, ptr %7383, align 4, !tbaa !5
  %7384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7385 = load i32, ptr @test_count, align 4, !tbaa !5
  %7386 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7387 = load i32, ptr %7386, align 4, !tbaa !5
  %7388 = call ptr @s2n_strerror(i32 noundef %7387, ptr noundef @.str.8)
  %7389 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7390 = load i32, ptr %7389, align 4, !tbaa !5
  %7391 = call ptr @s2n_strerror_debug(i32 noundef %7390, ptr noundef @.str.8)
  %7392 = call ptr @__errno_location() #10
  %7393 = load i32, ptr %7392, align 4, !tbaa !5
  %7394 = call ptr @strerror(i32 noundef %7393) #9
  %7395 = call ptr @__errno_location() #10
  %7396 = load i32, ptr %7395, align 4, !tbaa !5
  %7397 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7384, ptr noundef @.str.6, i32 noundef %7385, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 291, ptr noundef %7388, ptr noundef %7391, ptr noundef %7394, i32 noundef %7396) #9
  br label %7415

7398:                                             ; preds = %7376, %7369
  %7399 = load i32, ptr %149, align 4, !tbaa !5
  %7400 = call ptr @__errno_location() #10
  store i32 %7399, ptr %7400, align 4, !tbaa !5
  %7401 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7402 = load i32, ptr @test_count, align 4, !tbaa !5
  %7403 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7404 = load i32, ptr %7403, align 4, !tbaa !5
  %7405 = call ptr @s2n_strerror(i32 noundef %7404, ptr noundef @.str.8)
  %7406 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7407 = load i32, ptr %7406, align 4, !tbaa !5
  %7408 = call ptr @s2n_strerror_debug(i32 noundef %7407, ptr noundef @.str.8)
  %7409 = call ptr @__errno_location() #10
  %7410 = load i32, ptr %7409, align 4, !tbaa !5
  %7411 = call ptr @strerror(i32 noundef %7410) #9
  %7412 = call ptr @__errno_location() #10
  %7413 = load i32, ptr %7412, align 4, !tbaa !5
  %7414 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7401, ptr noundef @.str.9, i32 noundef %7402, ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 291, ptr noundef %7405, ptr noundef %7408, ptr noundef %7411, i32 noundef %7413) #9
  br label %7415

7415:                                             ; preds = %7398, %7381
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #9
  br label %7416

7416:                                             ; preds = %7415
  br label %7417

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

7418:                                             ; No predecessors!
  br label %7419

7419:                                             ; preds = %7418
  br label %7420

7420:                                             ; preds = %7419, %7362
  br label %7421

7421:                                             ; preds = %7420
  br label %7422

7422:                                             ; preds = %7421
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #9
  store ptr null, ptr %150, align 8, !tbaa !9
  br label %7423

7423:                                             ; preds = %7422
  %7424 = load i32, ptr @test_count, align 4, !tbaa !5
  %7425 = add nsw i32 %7424, 1
  store i32 %7425, ptr @test_count, align 4, !tbaa !5
  %7426 = load ptr, ptr %145, align 8, !tbaa !9
  %7427 = call i32 @s2n_connection_get_kem_preferences(ptr noundef %7426, ptr noundef %150)
  %7428 = icmp eq i32 %7427, -1
  br i1 %7428, label %7429, label %7482

7429:                                             ; preds = %7423
  br label %7430

7430:                                             ; preds = %7429
  br label %7431

7431:                                             ; preds = %7430
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #9
  %7432 = call ptr @__errno_location() #10
  %7433 = load i32, ptr %7432, align 4, !tbaa !5
  store i32 %7433, ptr %151, align 4, !tbaa !5
  %7434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7435 = call i32 @s2n_print_stacktrace(ptr noundef %7434)
  %7436 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7437 = trunc i8 %7436 to i1
  br i1 %7437, label %7438, label %7460

7438:                                             ; preds = %7431
  %7439 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7440 = call i32 @fileno(ptr noundef %7439) #9
  %7441 = call i32 @isatty(i32 noundef %7440) #9
  %7442 = icmp ne i32 %7441, 0
  br i1 %7442, label %7443, label %7460

7443:                                             ; preds = %7438
  %7444 = load i32, ptr %151, align 4, !tbaa !5
  %7445 = call ptr @__errno_location() #10
  store i32 %7444, ptr %7445, align 4, !tbaa !5
  %7446 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7447 = load i32, ptr @test_count, align 4, !tbaa !5
  %7448 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7449 = load i32, ptr %7448, align 4, !tbaa !5
  %7450 = call ptr @s2n_strerror(i32 noundef %7449, ptr noundef @.str.8)
  %7451 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7452 = load i32, ptr %7451, align 4, !tbaa !5
  %7453 = call ptr @s2n_strerror_debug(i32 noundef %7452, ptr noundef @.str.8)
  %7454 = call ptr @__errno_location() #10
  %7455 = load i32, ptr %7454, align 4, !tbaa !5
  %7456 = call ptr @strerror(i32 noundef %7455) #9
  %7457 = call ptr @__errno_location() #10
  %7458 = load i32, ptr %7457, align 4, !tbaa !5
  %7459 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7446, ptr noundef @.str.6, i32 noundef %7447, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 294, ptr noundef %7450, ptr noundef %7453, ptr noundef %7456, i32 noundef %7458) #9
  br label %7477

7460:                                             ; preds = %7438, %7431
  %7461 = load i32, ptr %151, align 4, !tbaa !5
  %7462 = call ptr @__errno_location() #10
  store i32 %7461, ptr %7462, align 4, !tbaa !5
  %7463 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7464 = load i32, ptr @test_count, align 4, !tbaa !5
  %7465 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7466 = load i32, ptr %7465, align 4, !tbaa !5
  %7467 = call ptr @s2n_strerror(i32 noundef %7466, ptr noundef @.str.8)
  %7468 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7469 = load i32, ptr %7468, align 4, !tbaa !5
  %7470 = call ptr @s2n_strerror_debug(i32 noundef %7469, ptr noundef @.str.8)
  %7471 = call ptr @__errno_location() #10
  %7472 = load i32, ptr %7471, align 4, !tbaa !5
  %7473 = call ptr @strerror(i32 noundef %7472) #9
  %7474 = call ptr @__errno_location() #10
  %7475 = load i32, ptr %7474, align 4, !tbaa !5
  %7476 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7463, ptr noundef @.str.9, i32 noundef %7464, ptr noundef @.str.16, ptr noundef @.str.5, i32 noundef 294, ptr noundef %7467, ptr noundef %7470, ptr noundef %7473, i32 noundef %7475) #9
  br label %7477

7477:                                             ; preds = %7460, %7443
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #9
  br label %7478

7478:                                             ; preds = %7477
  br label %7479

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

7480:                                             ; No predecessors!
  br label %7481

7481:                                             ; preds = %7480
  br label %7482

7482:                                             ; preds = %7481, %7423
  br label %7483

7483:                                             ; preds = %7482
  br label %7484

7484:                                             ; preds = %7483
  br label %7485

7485:                                             ; preds = %7484
  %7486 = load i32, ptr @test_count, align 4, !tbaa !5
  %7487 = add nsw i32 %7486, 1
  store i32 %7487, ptr @test_count, align 4, !tbaa !5
  %7488 = load ptr, ptr %150, align 8, !tbaa !9
  %7489 = icmp eq ptr %7488, null
  br i1 %7489, label %7490, label %7543

7490:                                             ; preds = %7485
  br label %7491

7491:                                             ; preds = %7490
  br label %7492

7492:                                             ; preds = %7491
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #9
  %7493 = call ptr @__errno_location() #10
  %7494 = load i32, ptr %7493, align 4, !tbaa !5
  store i32 %7494, ptr %152, align 4, !tbaa !5
  %7495 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7496 = call i32 @s2n_print_stacktrace(ptr noundef %7495)
  %7497 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7498 = trunc i8 %7497 to i1
  br i1 %7498, label %7499, label %7521

7499:                                             ; preds = %7492
  %7500 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7501 = call i32 @fileno(ptr noundef %7500) #9
  %7502 = call i32 @isatty(i32 noundef %7501) #9
  %7503 = icmp ne i32 %7502, 0
  br i1 %7503, label %7504, label %7521

7504:                                             ; preds = %7499
  %7505 = load i32, ptr %152, align 4, !tbaa !5
  %7506 = call ptr @__errno_location() #10
  store i32 %7505, ptr %7506, align 4, !tbaa !5
  %7507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7508 = load i32, ptr @test_count, align 4, !tbaa !5
  %7509 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7510 = load i32, ptr %7509, align 4, !tbaa !5
  %7511 = call ptr @s2n_strerror(i32 noundef %7510, ptr noundef @.str.8)
  %7512 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7513 = load i32, ptr %7512, align 4, !tbaa !5
  %7514 = call ptr @s2n_strerror_debug(i32 noundef %7513, ptr noundef @.str.8)
  %7515 = call ptr @__errno_location() #10
  %7516 = load i32, ptr %7515, align 4, !tbaa !5
  %7517 = call ptr @strerror(i32 noundef %7516) #9
  %7518 = call ptr @__errno_location() #10
  %7519 = load i32, ptr %7518, align 4, !tbaa !5
  %7520 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7507, ptr noundef @.str.6, i32 noundef %7508, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 295, ptr noundef %7511, ptr noundef %7514, ptr noundef %7517, i32 noundef %7519) #9
  br label %7538

7521:                                             ; preds = %7499, %7492
  %7522 = load i32, ptr %152, align 4, !tbaa !5
  %7523 = call ptr @__errno_location() #10
  store i32 %7522, ptr %7523, align 4, !tbaa !5
  %7524 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7525 = load i32, ptr @test_count, align 4, !tbaa !5
  %7526 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7527 = load i32, ptr %7526, align 4, !tbaa !5
  %7528 = call ptr @s2n_strerror(i32 noundef %7527, ptr noundef @.str.8)
  %7529 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7530 = load i32, ptr %7529, align 4, !tbaa !5
  %7531 = call ptr @s2n_strerror_debug(i32 noundef %7530, ptr noundef @.str.8)
  %7532 = call ptr @__errno_location() #10
  %7533 = load i32, ptr %7532, align 4, !tbaa !5
  %7534 = call ptr @strerror(i32 noundef %7533) #9
  %7535 = call ptr @__errno_location() #10
  %7536 = load i32, ptr %7535, align 4, !tbaa !5
  %7537 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7524, ptr noundef @.str.9, i32 noundef %7525, ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 295, ptr noundef %7528, ptr noundef %7531, ptr noundef %7534, i32 noundef %7536) #9
  br label %7538

7538:                                             ; preds = %7521, %7504
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #9
  br label %7539

7539:                                             ; preds = %7538
  br label %7540

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

7541:                                             ; No predecessors!
  br label %7542

7542:                                             ; preds = %7541
  br label %7543

7543:                                             ; preds = %7542, %7485
  br label %7544

7544:                                             ; preds = %7543
  br label %7545

7545:                                             ; preds = %7544
  br label %7546

7546:                                             ; preds = %7545
  %7547 = load i32, ptr @test_count, align 4, !tbaa !5
  %7548 = add nsw i32 %7547, 1
  store i32 %7548, ptr @test_count, align 4, !tbaa !5
  %7549 = load ptr, ptr %150, align 8, !tbaa !9
  %7550 = icmp eq ptr %7549, %70
  br i1 %7550, label %7604, label %7551

7551:                                             ; preds = %7546
  br label %7552

7552:                                             ; preds = %7551
  br label %7553

7553:                                             ; preds = %7552
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #9
  %7554 = call ptr @__errno_location() #10
  %7555 = load i32, ptr %7554, align 4, !tbaa !5
  store i32 %7555, ptr %153, align 4, !tbaa !5
  %7556 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7557 = call i32 @s2n_print_stacktrace(ptr noundef %7556)
  %7558 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7559 = trunc i8 %7558 to i1
  br i1 %7559, label %7560, label %7582

7560:                                             ; preds = %7553
  %7561 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7562 = call i32 @fileno(ptr noundef %7561) #9
  %7563 = call i32 @isatty(i32 noundef %7562) #9
  %7564 = icmp ne i32 %7563, 0
  br i1 %7564, label %7565, label %7582

7565:                                             ; preds = %7560
  %7566 = load i32, ptr %153, align 4, !tbaa !5
  %7567 = call ptr @__errno_location() #10
  store i32 %7566, ptr %7567, align 4, !tbaa !5
  %7568 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7569 = load i32, ptr @test_count, align 4, !tbaa !5
  %7570 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7571 = load i32, ptr %7570, align 4, !tbaa !5
  %7572 = call ptr @s2n_strerror(i32 noundef %7571, ptr noundef @.str.8)
  %7573 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7574 = load i32, ptr %7573, align 4, !tbaa !5
  %7575 = call ptr @s2n_strerror_debug(i32 noundef %7574, ptr noundef @.str.8)
  %7576 = call ptr @__errno_location() #10
  %7577 = load i32, ptr %7576, align 4, !tbaa !5
  %7578 = call ptr @strerror(i32 noundef %7577) #9
  %7579 = call ptr @__errno_location() #10
  %7580 = load i32, ptr %7579, align 4, !tbaa !5
  %7581 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7568, ptr noundef @.str.6, i32 noundef %7569, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 296, ptr noundef %7572, ptr noundef %7575, ptr noundef %7578, i32 noundef %7580) #9
  br label %7599

7582:                                             ; preds = %7560, %7553
  %7583 = load i32, ptr %153, align 4, !tbaa !5
  %7584 = call ptr @__errno_location() #10
  store i32 %7583, ptr %7584, align 4, !tbaa !5
  %7585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7586 = load i32, ptr @test_count, align 4, !tbaa !5
  %7587 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7588 = load i32, ptr %7587, align 4, !tbaa !5
  %7589 = call ptr @s2n_strerror(i32 noundef %7588, ptr noundef @.str.8)
  %7590 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7591 = load i32, ptr %7590, align 4, !tbaa !5
  %7592 = call ptr @s2n_strerror_debug(i32 noundef %7591, ptr noundef @.str.8)
  %7593 = call ptr @__errno_location() #10
  %7594 = load i32, ptr %7593, align 4, !tbaa !5
  %7595 = call ptr @strerror(i32 noundef %7594) #9
  %7596 = call ptr @__errno_location() #10
  %7597 = load i32, ptr %7596, align 4, !tbaa !5
  %7598 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7585, ptr noundef @.str.9, i32 noundef %7586, ptr noundef @.str.29, ptr noundef @.str.5, i32 noundef 296, ptr noundef %7589, ptr noundef %7592, ptr noundef %7595, i32 noundef %7597) #9
  br label %7599

7599:                                             ; preds = %7582, %7565
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #9
  br label %7600

7600:                                             ; preds = %7599
  br label %7601

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

7602:                                             ; No predecessors!
  br label %7603

7603:                                             ; preds = %7602
  br label %7604

7604:                                             ; preds = %7603, %7546
  br label %7605

7605:                                             ; preds = %7604
  br label %7606

7606:                                             ; preds = %7605
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #9
  store i64 0, ptr %154, align 8, !tbaa !15
  br label %7607

7607:                                             ; preds = %7682, %7606
  %7608 = load i64, ptr %154, align 8, !tbaa !15
  %7609 = load ptr, ptr %147, align 8, !tbaa !9
  %7610 = getelementptr inbounds %struct.s2n_ecc_preferences, ptr %7609, i32 0, i32 0
  %7611 = load i8, ptr %7610, align 8, !tbaa !17
  %7612 = zext i8 %7611 to i64
  %7613 = icmp ult i64 %7608, %7612
  br i1 %7613, label %7615, label %7614

7614:                                             ; preds = %7607
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #9
  br label %7685

7615:                                             ; preds = %7607
  br label %7616

7616:                                             ; preds = %7615
  %7617 = load i32, ptr @test_count, align 4, !tbaa !5
  %7618 = add nsw i32 %7617, 1
  store i32 %7618, ptr @test_count, align 4, !tbaa !5
  %7619 = load ptr, ptr %145, align 8, !tbaa !9
  %7620 = getelementptr inbounds %struct.s2n_connection, ptr %7619, i32 0, i32 31
  %7621 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7620, i32 0, i32 2
  %7622 = load i64, ptr %154, align 8, !tbaa !15
  %7623 = getelementptr inbounds [4 x ptr], ptr %7621, i64 0, i64 %7622
  %7624 = load ptr, ptr %7623, align 8, !tbaa !9
  %7625 = icmp eq ptr %7624, null
  br i1 %7625, label %7679, label %7626

7626:                                             ; preds = %7616
  br label %7627

7627:                                             ; preds = %7626
  br label %7628

7628:                                             ; preds = %7627
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #9
  %7629 = call ptr @__errno_location() #10
  %7630 = load i32, ptr %7629, align 4, !tbaa !5
  store i32 %7630, ptr %155, align 4, !tbaa !5
  %7631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7632 = call i32 @s2n_print_stacktrace(ptr noundef %7631)
  %7633 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7634 = trunc i8 %7633 to i1
  br i1 %7634, label %7635, label %7657

7635:                                             ; preds = %7628
  %7636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7637 = call i32 @fileno(ptr noundef %7636) #9
  %7638 = call i32 @isatty(i32 noundef %7637) #9
  %7639 = icmp ne i32 %7638, 0
  br i1 %7639, label %7640, label %7657

7640:                                             ; preds = %7635
  %7641 = load i32, ptr %155, align 4, !tbaa !5
  %7642 = call ptr @__errno_location() #10
  store i32 %7641, ptr %7642, align 4, !tbaa !5
  %7643 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7644 = load i32, ptr @test_count, align 4, !tbaa !5
  %7645 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7646 = load i32, ptr %7645, align 4, !tbaa !5
  %7647 = call ptr @s2n_strerror(i32 noundef %7646, ptr noundef @.str.8)
  %7648 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7649 = load i32, ptr %7648, align 4, !tbaa !5
  %7650 = call ptr @s2n_strerror_debug(i32 noundef %7649, ptr noundef @.str.8)
  %7651 = call ptr @__errno_location() #10
  %7652 = load i32, ptr %7651, align 4, !tbaa !5
  %7653 = call ptr @strerror(i32 noundef %7652) #9
  %7654 = call ptr @__errno_location() #10
  %7655 = load i32, ptr %7654, align 4, !tbaa !5
  %7656 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7643, ptr noundef @.str.6, i32 noundef %7644, ptr noundef @.str.19, ptr noundef @.str.5, i32 noundef 299, ptr noundef %7647, ptr noundef %7650, ptr noundef %7653, i32 noundef %7655) #9
  br label %7674

7657:                                             ; preds = %7635, %7628
  %7658 = load i32, ptr %155, align 4, !tbaa !5
  %7659 = call ptr @__errno_location() #10
  store i32 %7658, ptr %7659, align 4, !tbaa !5
  %7660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7661 = load i32, ptr @test_count, align 4, !tbaa !5
  %7662 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7663 = load i32, ptr %7662, align 4, !tbaa !5
  %7664 = call ptr @s2n_strerror(i32 noundef %7663, ptr noundef @.str.8)
  %7665 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7666 = load i32, ptr %7665, align 4, !tbaa !5
  %7667 = call ptr @s2n_strerror_debug(i32 noundef %7666, ptr noundef @.str.8)
  %7668 = call ptr @__errno_location() #10
  %7669 = load i32, ptr %7668, align 4, !tbaa !5
  %7670 = call ptr @strerror(i32 noundef %7669) #9
  %7671 = call ptr @__errno_location() #10
  %7672 = load i32, ptr %7671, align 4, !tbaa !5
  %7673 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7660, ptr noundef @.str.9, i32 noundef %7661, ptr noundef @.str.19, ptr noundef @.str.5, i32 noundef 299, ptr noundef %7664, ptr noundef %7667, ptr noundef %7670, i32 noundef %7672) #9
  br label %7674

7674:                                             ; preds = %7657, %7640
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #9
  br label %7675

7675:                                             ; preds = %7674
  br label %7676

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

7677:                                             ; No predecessors!
  br label %7678

7678:                                             ; preds = %7677
  br label %7679

7679:                                             ; preds = %7678, %7616
  br label %7680

7680:                                             ; preds = %7679
  br label %7681

7681:                                             ; preds = %7680
  br label %7682

7682:                                             ; preds = %7681
  %7683 = load i64, ptr %154, align 8, !tbaa !15
  %7684 = add i64 %7683, 1
  store i64 %7684, ptr %154, align 8, !tbaa !15
  br label %7607, !llvm.loop !78

7685:                                             ; preds = %7614
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #9
  store i64 0, ptr %156, align 8, !tbaa !15
  br label %7686

7686:                                             ; preds = %7761, %7685
  %7687 = load i64, ptr %156, align 8, !tbaa !15
  %7688 = load ptr, ptr %150, align 8, !tbaa !9
  %7689 = getelementptr inbounds %struct.s2n_kem_preferences, ptr %7688, i32 0, i32 2
  %7690 = load i8, ptr %7689, align 8, !tbaa !21
  %7691 = zext i8 %7690 to i64
  %7692 = icmp ult i64 %7687, %7691
  br i1 %7692, label %7694, label %7693

7693:                                             ; preds = %7686
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #9
  br label %7764

7694:                                             ; preds = %7686
  br label %7695

7695:                                             ; preds = %7694
  %7696 = load i32, ptr @test_count, align 4, !tbaa !5
  %7697 = add nsw i32 %7696, 1
  store i32 %7697, ptr @test_count, align 4, !tbaa !5
  %7698 = load ptr, ptr %145, align 8, !tbaa !9
  %7699 = getelementptr inbounds %struct.s2n_connection, ptr %7698, i32 0, i32 31
  %7700 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7699, i32 0, i32 6
  %7701 = load i64, ptr %156, align 8, !tbaa !15
  %7702 = getelementptr inbounds [8 x ptr], ptr %7700, i64 0, i64 %7701
  %7703 = load ptr, ptr %7702, align 8, !tbaa !9
  %7704 = icmp eq ptr %7703, null
  br i1 %7704, label %7758, label %7705

7705:                                             ; preds = %7695
  br label %7706

7706:                                             ; preds = %7705
  br label %7707

7707:                                             ; preds = %7706
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #9
  %7708 = call ptr @__errno_location() #10
  %7709 = load i32, ptr %7708, align 4, !tbaa !5
  store i32 %7709, ptr %157, align 4, !tbaa !5
  %7710 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7711 = call i32 @s2n_print_stacktrace(ptr noundef %7710)
  %7712 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7713 = trunc i8 %7712 to i1
  br i1 %7713, label %7714, label %7736

7714:                                             ; preds = %7707
  %7715 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7716 = call i32 @fileno(ptr noundef %7715) #9
  %7717 = call i32 @isatty(i32 noundef %7716) #9
  %7718 = icmp ne i32 %7717, 0
  br i1 %7718, label %7719, label %7736

7719:                                             ; preds = %7714
  %7720 = load i32, ptr %157, align 4, !tbaa !5
  %7721 = call ptr @__errno_location() #10
  store i32 %7720, ptr %7721, align 4, !tbaa !5
  %7722 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7723 = load i32, ptr @test_count, align 4, !tbaa !5
  %7724 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7725 = load i32, ptr %7724, align 4, !tbaa !5
  %7726 = call ptr @s2n_strerror(i32 noundef %7725, ptr noundef @.str.8)
  %7727 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7728 = load i32, ptr %7727, align 4, !tbaa !5
  %7729 = call ptr @s2n_strerror_debug(i32 noundef %7728, ptr noundef @.str.8)
  %7730 = call ptr @__errno_location() #10
  %7731 = load i32, ptr %7730, align 4, !tbaa !5
  %7732 = call ptr @strerror(i32 noundef %7731) #9
  %7733 = call ptr @__errno_location() #10
  %7734 = load i32, ptr %7733, align 4, !tbaa !5
  %7735 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7722, ptr noundef @.str.6, i32 noundef %7723, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 303, ptr noundef %7726, ptr noundef %7729, ptr noundef %7732, i32 noundef %7734) #9
  br label %7753

7736:                                             ; preds = %7714, %7707
  %7737 = load i32, ptr %157, align 4, !tbaa !5
  %7738 = call ptr @__errno_location() #10
  store i32 %7737, ptr %7738, align 4, !tbaa !5
  %7739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7740 = load i32, ptr @test_count, align 4, !tbaa !5
  %7741 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7742 = load i32, ptr %7741, align 4, !tbaa !5
  %7743 = call ptr @s2n_strerror(i32 noundef %7742, ptr noundef @.str.8)
  %7744 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7745 = load i32, ptr %7744, align 4, !tbaa !5
  %7746 = call ptr @s2n_strerror_debug(i32 noundef %7745, ptr noundef @.str.8)
  %7747 = call ptr @__errno_location() #10
  %7748 = load i32, ptr %7747, align 4, !tbaa !5
  %7749 = call ptr @strerror(i32 noundef %7748) #9
  %7750 = call ptr @__errno_location() #10
  %7751 = load i32, ptr %7750, align 4, !tbaa !5
  %7752 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7739, ptr noundef @.str.9, i32 noundef %7740, ptr noundef @.str.20, ptr noundef @.str.5, i32 noundef 303, ptr noundef %7743, ptr noundef %7746, ptr noundef %7749, i32 noundef %7751) #9
  br label %7753

7753:                                             ; preds = %7736, %7719
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #9
  br label %7754

7754:                                             ; preds = %7753
  br label %7755

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

7756:                                             ; No predecessors!
  br label %7757

7757:                                             ; preds = %7756
  br label %7758

7758:                                             ; preds = %7757, %7695
  br label %7759

7759:                                             ; preds = %7758
  br label %7760

7760:                                             ; preds = %7759
  br label %7761

7761:                                             ; preds = %7760
  %7762 = load i64, ptr %156, align 8, !tbaa !15
  %7763 = add i64 %7762, 1
  store i64 %7763, ptr %156, align 8, !tbaa !15
  br label %7686, !llvm.loop !79

7764:                                             ; preds = %7693
  br label %7765

7765:                                             ; preds = %7764
  %7766 = load i32, ptr @test_count, align 4, !tbaa !5
  %7767 = add nsw i32 %7766, 1
  store i32 %7767, ptr @test_count, align 4, !tbaa !5
  %7768 = load ptr, ptr %145, align 8, !tbaa !9
  %7769 = getelementptr inbounds %struct.s2n_connection, ptr %7768, i32 0, i32 31
  %7770 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7769, i32 0, i32 4
  %7771 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7770, i32 0, i32 0
  %7772 = load ptr, ptr %7771, align 8, !tbaa !24
  %7773 = icmp eq ptr %7772, null
  br i1 %7773, label %7827, label %7774

7774:                                             ; preds = %7765
  br label %7775

7775:                                             ; preds = %7774
  br label %7776

7776:                                             ; preds = %7775
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #9
  %7777 = call ptr @__errno_location() #10
  %7778 = load i32, ptr %7777, align 4, !tbaa !5
  store i32 %7778, ptr %158, align 4, !tbaa !5
  %7779 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7780 = call i32 @s2n_print_stacktrace(ptr noundef %7779)
  %7781 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7782 = trunc i8 %7781 to i1
  br i1 %7782, label %7783, label %7805

7783:                                             ; preds = %7776
  %7784 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7785 = call i32 @fileno(ptr noundef %7784) #9
  %7786 = call i32 @isatty(i32 noundef %7785) #9
  %7787 = icmp ne i32 %7786, 0
  br i1 %7787, label %7788, label %7805

7788:                                             ; preds = %7783
  %7789 = load i32, ptr %158, align 4, !tbaa !5
  %7790 = call ptr @__errno_location() #10
  store i32 %7789, ptr %7790, align 4, !tbaa !5
  %7791 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7792 = load i32, ptr @test_count, align 4, !tbaa !5
  %7793 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7794 = load i32, ptr %7793, align 4, !tbaa !5
  %7795 = call ptr @s2n_strerror(i32 noundef %7794, ptr noundef @.str.8)
  %7796 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7797 = load i32, ptr %7796, align 4, !tbaa !5
  %7798 = call ptr @s2n_strerror_debug(i32 noundef %7797, ptr noundef @.str.8)
  %7799 = call ptr @__errno_location() #10
  %7800 = load i32, ptr %7799, align 4, !tbaa !5
  %7801 = call ptr @strerror(i32 noundef %7800) #9
  %7802 = call ptr @__errno_location() #10
  %7803 = load i32, ptr %7802, align 4, !tbaa !5
  %7804 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7791, ptr noundef @.str.6, i32 noundef %7792, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 306, ptr noundef %7795, ptr noundef %7798, ptr noundef %7801, i32 noundef %7803) #9
  br label %7822

7805:                                             ; preds = %7783, %7776
  %7806 = load i32, ptr %158, align 4, !tbaa !5
  %7807 = call ptr @__errno_location() #10
  store i32 %7806, ptr %7807, align 4, !tbaa !5
  %7808 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7809 = load i32, ptr @test_count, align 4, !tbaa !5
  %7810 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7811 = load i32, ptr %7810, align 4, !tbaa !5
  %7812 = call ptr @s2n_strerror(i32 noundef %7811, ptr noundef @.str.8)
  %7813 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7814 = load i32, ptr %7813, align 4, !tbaa !5
  %7815 = call ptr @s2n_strerror_debug(i32 noundef %7814, ptr noundef @.str.8)
  %7816 = call ptr @__errno_location() #10
  %7817 = load i32, ptr %7816, align 4, !tbaa !5
  %7818 = call ptr @strerror(i32 noundef %7817) #9
  %7819 = call ptr @__errno_location() #10
  %7820 = load i32, ptr %7819, align 4, !tbaa !5
  %7821 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7808, ptr noundef @.str.9, i32 noundef %7809, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 306, ptr noundef %7812, ptr noundef %7815, ptr noundef %7818, i32 noundef %7820) #9
  br label %7822

7822:                                             ; preds = %7805, %7788
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #9
  br label %7823

7823:                                             ; preds = %7822
  br label %7824

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

7825:                                             ; No predecessors!
  br label %7826

7826:                                             ; preds = %7825
  br label %7827

7827:                                             ; preds = %7826, %7765
  br label %7828

7828:                                             ; preds = %7827
  br label %7829

7829:                                             ; preds = %7828
  br label %7830

7830:                                             ; preds = %7829
  %7831 = load i32, ptr @test_count, align 4, !tbaa !5
  %7832 = add nsw i32 %7831, 1
  store i32 %7832, ptr @test_count, align 4, !tbaa !5
  %7833 = load ptr, ptr %145, align 8, !tbaa !9
  %7834 = getelementptr inbounds %struct.s2n_connection, ptr %7833, i32 0, i32 31
  %7835 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7834, i32 0, i32 4
  %7836 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7835, i32 0, i32 2
  %7837 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %7836, i32 0, i32 0
  %7838 = load ptr, ptr %7837, align 8, !tbaa !50
  %7839 = icmp eq ptr %7838, null
  br i1 %7839, label %7893, label %7840

7840:                                             ; preds = %7830
  br label %7841

7841:                                             ; preds = %7840
  br label %7842

7842:                                             ; preds = %7841
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #9
  %7843 = call ptr @__errno_location() #10
  %7844 = load i32, ptr %7843, align 4, !tbaa !5
  store i32 %7844, ptr %159, align 4, !tbaa !5
  %7845 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7846 = call i32 @s2n_print_stacktrace(ptr noundef %7845)
  %7847 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7848 = trunc i8 %7847 to i1
  br i1 %7848, label %7849, label %7871

7849:                                             ; preds = %7842
  %7850 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7851 = call i32 @fileno(ptr noundef %7850) #9
  %7852 = call i32 @isatty(i32 noundef %7851) #9
  %7853 = icmp ne i32 %7852, 0
  br i1 %7853, label %7854, label %7871

7854:                                             ; preds = %7849
  %7855 = load i32, ptr %159, align 4, !tbaa !5
  %7856 = call ptr @__errno_location() #10
  store i32 %7855, ptr %7856, align 4, !tbaa !5
  %7857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7858 = load i32, ptr @test_count, align 4, !tbaa !5
  %7859 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7860 = load i32, ptr %7859, align 4, !tbaa !5
  %7861 = call ptr @s2n_strerror(i32 noundef %7860, ptr noundef @.str.8)
  %7862 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7863 = load i32, ptr %7862, align 4, !tbaa !5
  %7864 = call ptr @s2n_strerror_debug(i32 noundef %7863, ptr noundef @.str.8)
  %7865 = call ptr @__errno_location() #10
  %7866 = load i32, ptr %7865, align 4, !tbaa !5
  %7867 = call ptr @strerror(i32 noundef %7866) #9
  %7868 = call ptr @__errno_location() #10
  %7869 = load i32, ptr %7868, align 4, !tbaa !5
  %7870 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7857, ptr noundef @.str.6, i32 noundef %7858, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 307, ptr noundef %7861, ptr noundef %7864, ptr noundef %7867, i32 noundef %7869) #9
  br label %7888

7871:                                             ; preds = %7849, %7842
  %7872 = load i32, ptr %159, align 4, !tbaa !5
  %7873 = call ptr @__errno_location() #10
  store i32 %7872, ptr %7873, align 4, !tbaa !5
  %7874 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7875 = load i32, ptr @test_count, align 4, !tbaa !5
  %7876 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7877 = load i32, ptr %7876, align 4, !tbaa !5
  %7878 = call ptr @s2n_strerror(i32 noundef %7877, ptr noundef @.str.8)
  %7879 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7880 = load i32, ptr %7879, align 4, !tbaa !5
  %7881 = call ptr @s2n_strerror_debug(i32 noundef %7880, ptr noundef @.str.8)
  %7882 = call ptr @__errno_location() #10
  %7883 = load i32, ptr %7882, align 4, !tbaa !5
  %7884 = call ptr @strerror(i32 noundef %7883) #9
  %7885 = call ptr @__errno_location() #10
  %7886 = load i32, ptr %7885, align 4, !tbaa !5
  %7887 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7874, ptr noundef @.str.9, i32 noundef %7875, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 307, ptr noundef %7878, ptr noundef %7881, ptr noundef %7884, i32 noundef %7886) #9
  br label %7888

7888:                                             ; preds = %7871, %7854
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #9
  br label %7889

7889:                                             ; preds = %7888
  br label %7890

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

7891:                                             ; No predecessors!
  br label %7892

7892:                                             ; preds = %7891
  br label %7893

7893:                                             ; preds = %7892, %7830
  br label %7894

7894:                                             ; preds = %7893
  br label %7895

7895:                                             ; preds = %7894
  br label %7896

7896:                                             ; preds = %7895
  %7897 = load i32, ptr @test_count, align 4, !tbaa !5
  %7898 = add nsw i32 %7897, 1
  store i32 %7898, ptr @test_count, align 4, !tbaa !5
  %7899 = load ptr, ptr %145, align 8, !tbaa !9
  %7900 = getelementptr inbounds %struct.s2n_connection, ptr %7899, i32 0, i32 31
  %7901 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7900, i32 0, i32 4
  %7902 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %7901, i32 0, i32 1
  %7903 = getelementptr inbounds %struct.s2n_kem_params, ptr %7902, i32 0, i32 0
  %7904 = load ptr, ptr %7903, align 8, !tbaa !51
  %7905 = icmp eq ptr %7904, null
  br i1 %7905, label %7959, label %7906

7906:                                             ; preds = %7896
  br label %7907

7907:                                             ; preds = %7906
  br label %7908

7908:                                             ; preds = %7907
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #9
  %7909 = call ptr @__errno_location() #10
  %7910 = load i32, ptr %7909, align 4, !tbaa !5
  store i32 %7910, ptr %160, align 4, !tbaa !5
  %7911 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7912 = call i32 @s2n_print_stacktrace(ptr noundef %7911)
  %7913 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7914 = trunc i8 %7913 to i1
  br i1 %7914, label %7915, label %7937

7915:                                             ; preds = %7908
  %7916 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7917 = call i32 @fileno(ptr noundef %7916) #9
  %7918 = call i32 @isatty(i32 noundef %7917) #9
  %7919 = icmp ne i32 %7918, 0
  br i1 %7919, label %7920, label %7937

7920:                                             ; preds = %7915
  %7921 = load i32, ptr %160, align 4, !tbaa !5
  %7922 = call ptr @__errno_location() #10
  store i32 %7921, ptr %7922, align 4, !tbaa !5
  %7923 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7924 = load i32, ptr @test_count, align 4, !tbaa !5
  %7925 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7926 = load i32, ptr %7925, align 4, !tbaa !5
  %7927 = call ptr @s2n_strerror(i32 noundef %7926, ptr noundef @.str.8)
  %7928 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7929 = load i32, ptr %7928, align 4, !tbaa !5
  %7930 = call ptr @s2n_strerror_debug(i32 noundef %7929, ptr noundef @.str.8)
  %7931 = call ptr @__errno_location() #10
  %7932 = load i32, ptr %7931, align 4, !tbaa !5
  %7933 = call ptr @strerror(i32 noundef %7932) #9
  %7934 = call ptr @__errno_location() #10
  %7935 = load i32, ptr %7934, align 4, !tbaa !5
  %7936 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7923, ptr noundef @.str.6, i32 noundef %7924, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 308, ptr noundef %7927, ptr noundef %7930, ptr noundef %7933, i32 noundef %7935) #9
  br label %7954

7937:                                             ; preds = %7915, %7908
  %7938 = load i32, ptr %160, align 4, !tbaa !5
  %7939 = call ptr @__errno_location() #10
  store i32 %7938, ptr %7939, align 4, !tbaa !5
  %7940 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7941 = load i32, ptr @test_count, align 4, !tbaa !5
  %7942 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7943 = load i32, ptr %7942, align 4, !tbaa !5
  %7944 = call ptr @s2n_strerror(i32 noundef %7943, ptr noundef @.str.8)
  %7945 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7946 = load i32, ptr %7945, align 4, !tbaa !5
  %7947 = call ptr @s2n_strerror_debug(i32 noundef %7946, ptr noundef @.str.8)
  %7948 = call ptr @__errno_location() #10
  %7949 = load i32, ptr %7948, align 4, !tbaa !5
  %7950 = call ptr @strerror(i32 noundef %7949) #9
  %7951 = call ptr @__errno_location() #10
  %7952 = load i32, ptr %7951, align 4, !tbaa !5
  %7953 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7940, ptr noundef @.str.9, i32 noundef %7941, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 308, ptr noundef %7944, ptr noundef %7947, ptr noundef %7950, i32 noundef %7952) #9
  br label %7954

7954:                                             ; preds = %7937, %7920
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #9
  br label %7955

7955:                                             ; preds = %7954
  br label %7956

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

7957:                                             ; No predecessors!
  br label %7958

7958:                                             ; preds = %7957
  br label %7959

7959:                                             ; preds = %7958, %7896
  br label %7960

7960:                                             ; preds = %7959
  br label %7961

7961:                                             ; preds = %7960
  br label %7962

7962:                                             ; preds = %7961
  %7963 = load i32, ptr @test_count, align 4, !tbaa !5
  %7964 = add nsw i32 %7963, 1
  store i32 %7964, ptr @test_count, align 4, !tbaa !5
  %7965 = load ptr, ptr %145, align 8, !tbaa !9
  %7966 = getelementptr inbounds %struct.s2n_connection, ptr %7965, i32 0, i32 31
  %7967 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %7966, i32 0, i32 1
  %7968 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %7967, i32 0, i32 0
  %7969 = load ptr, ptr %7968, align 8, !tbaa !52
  %7970 = icmp eq ptr %7969, null
  br i1 %7970, label %8024, label %7971

7971:                                             ; preds = %7962
  br label %7972

7972:                                             ; preds = %7971
  br label %7973

7973:                                             ; preds = %7972
  call void @llvm.lifetime.start.p0(i64 4, ptr %161) #9
  %7974 = call ptr @__errno_location() #10
  %7975 = load i32, ptr %7974, align 4, !tbaa !5
  store i32 %7975, ptr %161, align 4, !tbaa !5
  %7976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7977 = call i32 @s2n_print_stacktrace(ptr noundef %7976)
  %7978 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %7979 = trunc i8 %7978 to i1
  br i1 %7979, label %7980, label %8002

7980:                                             ; preds = %7973
  %7981 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7982 = call i32 @fileno(ptr noundef %7981) #9
  %7983 = call i32 @isatty(i32 noundef %7982) #9
  %7984 = icmp ne i32 %7983, 0
  br i1 %7984, label %7985, label %8002

7985:                                             ; preds = %7980
  %7986 = load i32, ptr %161, align 4, !tbaa !5
  %7987 = call ptr @__errno_location() #10
  store i32 %7986, ptr %7987, align 4, !tbaa !5
  %7988 = load ptr, ptr @stderr, align 8, !tbaa !9
  %7989 = load i32, ptr @test_count, align 4, !tbaa !5
  %7990 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7991 = load i32, ptr %7990, align 4, !tbaa !5
  %7992 = call ptr @s2n_strerror(i32 noundef %7991, ptr noundef @.str.8)
  %7993 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %7994 = load i32, ptr %7993, align 4, !tbaa !5
  %7995 = call ptr @s2n_strerror_debug(i32 noundef %7994, ptr noundef @.str.8)
  %7996 = call ptr @__errno_location() #10
  %7997 = load i32, ptr %7996, align 4, !tbaa !5
  %7998 = call ptr @strerror(i32 noundef %7997) #9
  %7999 = call ptr @__errno_location() #10
  %8000 = load i32, ptr %7999, align 4, !tbaa !5
  %8001 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %7988, ptr noundef @.str.6, i32 noundef %7989, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 309, ptr noundef %7992, ptr noundef %7995, ptr noundef %7998, i32 noundef %8000) #9
  br label %8019

8002:                                             ; preds = %7980, %7973
  %8003 = load i32, ptr %161, align 4, !tbaa !5
  %8004 = call ptr @__errno_location() #10
  store i32 %8003, ptr %8004, align 4, !tbaa !5
  %8005 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8006 = load i32, ptr @test_count, align 4, !tbaa !5
  %8007 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8008 = load i32, ptr %8007, align 4, !tbaa !5
  %8009 = call ptr @s2n_strerror(i32 noundef %8008, ptr noundef @.str.8)
  %8010 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8011 = load i32, ptr %8010, align 4, !tbaa !5
  %8012 = call ptr @s2n_strerror_debug(i32 noundef %8011, ptr noundef @.str.8)
  %8013 = call ptr @__errno_location() #10
  %8014 = load i32, ptr %8013, align 4, !tbaa !5
  %8015 = call ptr @strerror(i32 noundef %8014) #9
  %8016 = call ptr @__errno_location() #10
  %8017 = load i32, ptr %8016, align 4, !tbaa !5
  %8018 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8005, ptr noundef @.str.9, i32 noundef %8006, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 309, ptr noundef %8009, ptr noundef %8012, ptr noundef %8015, i32 noundef %8017) #9
  br label %8019

8019:                                             ; preds = %8002, %7985
  call void @llvm.lifetime.end.p0(i64 4, ptr %161) #9
  br label %8020

8020:                                             ; preds = %8019
  br label %8021

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

8022:                                             ; No predecessors!
  br label %8023

8023:                                             ; preds = %8022
  br label %8024

8024:                                             ; preds = %8023, %7962
  br label %8025

8025:                                             ; preds = %8024
  br label %8026

8026:                                             ; preds = %8025
  br label %8027

8027:                                             ; preds = %8026
  %8028 = load i32, ptr @test_count, align 4, !tbaa !5
  %8029 = add nsw i32 %8028, 1
  store i32 %8029, ptr @test_count, align 4, !tbaa !5
  %8030 = load ptr, ptr %145, align 8, !tbaa !9
  %8031 = call i32 @s2n_choose_supported_group(ptr noundef %8030)
  %8032 = icmp eq i32 %8031, -1
  br i1 %8032, label %8033, label %8086

8033:                                             ; preds = %8027
  br label %8034

8034:                                             ; preds = %8033
  br label %8035

8035:                                             ; preds = %8034
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #9
  %8036 = call ptr @__errno_location() #10
  %8037 = load i32, ptr %8036, align 4, !tbaa !5
  store i32 %8037, ptr %162, align 4, !tbaa !5
  %8038 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8039 = call i32 @s2n_print_stacktrace(ptr noundef %8038)
  %8040 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8041 = trunc i8 %8040 to i1
  br i1 %8041, label %8042, label %8064

8042:                                             ; preds = %8035
  %8043 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8044 = call i32 @fileno(ptr noundef %8043) #9
  %8045 = call i32 @isatty(i32 noundef %8044) #9
  %8046 = icmp ne i32 %8045, 0
  br i1 %8046, label %8047, label %8064

8047:                                             ; preds = %8042
  %8048 = load i32, ptr %162, align 4, !tbaa !5
  %8049 = call ptr @__errno_location() #10
  store i32 %8048, ptr %8049, align 4, !tbaa !5
  %8050 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8051 = load i32, ptr @test_count, align 4, !tbaa !5
  %8052 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8053 = load i32, ptr %8052, align 4, !tbaa !5
  %8054 = call ptr @s2n_strerror(i32 noundef %8053, ptr noundef @.str.8)
  %8055 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8056 = load i32, ptr %8055, align 4, !tbaa !5
  %8057 = call ptr @s2n_strerror_debug(i32 noundef %8056, ptr noundef @.str.8)
  %8058 = call ptr @__errno_location() #10
  %8059 = load i32, ptr %8058, align 4, !tbaa !5
  %8060 = call ptr @strerror(i32 noundef %8059) #9
  %8061 = call ptr @__errno_location() #10
  %8062 = load i32, ptr %8061, align 4, !tbaa !5
  %8063 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8050, ptr noundef @.str.6, i32 noundef %8051, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 311, ptr noundef %8054, ptr noundef %8057, ptr noundef %8060, i32 noundef %8062) #9
  br label %8081

8064:                                             ; preds = %8042, %8035
  %8065 = load i32, ptr %162, align 4, !tbaa !5
  %8066 = call ptr @__errno_location() #10
  store i32 %8065, ptr %8066, align 4, !tbaa !5
  %8067 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8068 = load i32, ptr @test_count, align 4, !tbaa !5
  %8069 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8070 = load i32, ptr %8069, align 4, !tbaa !5
  %8071 = call ptr @s2n_strerror(i32 noundef %8070, ptr noundef @.str.8)
  %8072 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8073 = load i32, ptr %8072, align 4, !tbaa !5
  %8074 = call ptr @s2n_strerror_debug(i32 noundef %8073, ptr noundef @.str.8)
  %8075 = call ptr @__errno_location() #10
  %8076 = load i32, ptr %8075, align 4, !tbaa !5
  %8077 = call ptr @strerror(i32 noundef %8076) #9
  %8078 = call ptr @__errno_location() #10
  %8079 = load i32, ptr %8078, align 4, !tbaa !5
  %8080 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8067, ptr noundef @.str.9, i32 noundef %8068, ptr noundef @.str.25, ptr noundef @.str.5, i32 noundef 311, ptr noundef %8071, ptr noundef %8074, ptr noundef %8077, i32 noundef %8079) #9
  br label %8081

8081:                                             ; preds = %8064, %8047
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #9
  br label %8082

8082:                                             ; preds = %8081
  br label %8083

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

8084:                                             ; No predecessors!
  br label %8085

8085:                                             ; preds = %8084
  br label %8086

8086:                                             ; preds = %8085, %8027
  br label %8087

8087:                                             ; preds = %8086
  br label %8088

8088:                                             ; preds = %8087
  br label %8089

8089:                                             ; preds = %8088
  %8090 = load i32, ptr @test_count, align 4, !tbaa !5
  %8091 = add nsw i32 %8090, 1
  store i32 %8091, ptr @test_count, align 4, !tbaa !5
  %8092 = load ptr, ptr %145, align 8, !tbaa !9
  %8093 = getelementptr inbounds %struct.s2n_connection, ptr %8092, i32 0, i32 31
  %8094 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8093, i32 0, i32 4
  %8095 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8094, i32 0, i32 0
  %8096 = load ptr, ptr %8095, align 8, !tbaa !24
  %8097 = icmp eq ptr %8096, null
  br i1 %8097, label %8151, label %8098

8098:                                             ; preds = %8089
  br label %8099

8099:                                             ; preds = %8098
  br label %8100

8100:                                             ; preds = %8099
  call void @llvm.lifetime.start.p0(i64 4, ptr %163) #9
  %8101 = call ptr @__errno_location() #10
  %8102 = load i32, ptr %8101, align 4, !tbaa !5
  store i32 %8102, ptr %163, align 4, !tbaa !5
  %8103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8104 = call i32 @s2n_print_stacktrace(ptr noundef %8103)
  %8105 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8106 = trunc i8 %8105 to i1
  br i1 %8106, label %8107, label %8129

8107:                                             ; preds = %8100
  %8108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8109 = call i32 @fileno(ptr noundef %8108) #9
  %8110 = call i32 @isatty(i32 noundef %8109) #9
  %8111 = icmp ne i32 %8110, 0
  br i1 %8111, label %8112, label %8129

8112:                                             ; preds = %8107
  %8113 = load i32, ptr %163, align 4, !tbaa !5
  %8114 = call ptr @__errno_location() #10
  store i32 %8113, ptr %8114, align 4, !tbaa !5
  %8115 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8116 = load i32, ptr @test_count, align 4, !tbaa !5
  %8117 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8118 = load i32, ptr %8117, align 4, !tbaa !5
  %8119 = call ptr @s2n_strerror(i32 noundef %8118, ptr noundef @.str.8)
  %8120 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8121 = load i32, ptr %8120, align 4, !tbaa !5
  %8122 = call ptr @s2n_strerror_debug(i32 noundef %8121, ptr noundef @.str.8)
  %8123 = call ptr @__errno_location() #10
  %8124 = load i32, ptr %8123, align 4, !tbaa !5
  %8125 = call ptr @strerror(i32 noundef %8124) #9
  %8126 = call ptr @__errno_location() #10
  %8127 = load i32, ptr %8126, align 4, !tbaa !5
  %8128 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8115, ptr noundef @.str.6, i32 noundef %8116, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 313, ptr noundef %8119, ptr noundef %8122, ptr noundef %8125, i32 noundef %8127) #9
  br label %8146

8129:                                             ; preds = %8107, %8100
  %8130 = load i32, ptr %163, align 4, !tbaa !5
  %8131 = call ptr @__errno_location() #10
  store i32 %8130, ptr %8131, align 4, !tbaa !5
  %8132 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8133 = load i32, ptr @test_count, align 4, !tbaa !5
  %8134 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8135 = load i32, ptr %8134, align 4, !tbaa !5
  %8136 = call ptr @s2n_strerror(i32 noundef %8135, ptr noundef @.str.8)
  %8137 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8138 = load i32, ptr %8137, align 4, !tbaa !5
  %8139 = call ptr @s2n_strerror_debug(i32 noundef %8138, ptr noundef @.str.8)
  %8140 = call ptr @__errno_location() #10
  %8141 = load i32, ptr %8140, align 4, !tbaa !5
  %8142 = call ptr @strerror(i32 noundef %8141) #9
  %8143 = call ptr @__errno_location() #10
  %8144 = load i32, ptr %8143, align 4, !tbaa !5
  %8145 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8132, ptr noundef @.str.9, i32 noundef %8133, ptr noundef @.str.21, ptr noundef @.str.5, i32 noundef 313, ptr noundef %8136, ptr noundef %8139, ptr noundef %8142, i32 noundef %8144) #9
  br label %8146

8146:                                             ; preds = %8129, %8112
  call void @llvm.lifetime.end.p0(i64 4, ptr %163) #9
  br label %8147

8147:                                             ; preds = %8146
  br label %8148

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

8149:                                             ; No predecessors!
  br label %8150

8150:                                             ; preds = %8149
  br label %8151

8151:                                             ; preds = %8150, %8089
  br label %8152

8152:                                             ; preds = %8151
  br label %8153

8153:                                             ; preds = %8152
  br label %8154

8154:                                             ; preds = %8153
  %8155 = load i32, ptr @test_count, align 4, !tbaa !5
  %8156 = add nsw i32 %8155, 1
  store i32 %8156, ptr @test_count, align 4, !tbaa !5
  %8157 = load ptr, ptr %145, align 8, !tbaa !9
  %8158 = getelementptr inbounds %struct.s2n_connection, ptr %8157, i32 0, i32 31
  %8159 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8158, i32 0, i32 4
  %8160 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8159, i32 0, i32 2
  %8161 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %8160, i32 0, i32 0
  %8162 = load ptr, ptr %8161, align 8, !tbaa !50
  %8163 = icmp eq ptr %8162, null
  br i1 %8163, label %8217, label %8164

8164:                                             ; preds = %8154
  br label %8165

8165:                                             ; preds = %8164
  br label %8166

8166:                                             ; preds = %8165
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #9
  %8167 = call ptr @__errno_location() #10
  %8168 = load i32, ptr %8167, align 4, !tbaa !5
  store i32 %8168, ptr %164, align 4, !tbaa !5
  %8169 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8170 = call i32 @s2n_print_stacktrace(ptr noundef %8169)
  %8171 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8172 = trunc i8 %8171 to i1
  br i1 %8172, label %8173, label %8195

8173:                                             ; preds = %8166
  %8174 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8175 = call i32 @fileno(ptr noundef %8174) #9
  %8176 = call i32 @isatty(i32 noundef %8175) #9
  %8177 = icmp ne i32 %8176, 0
  br i1 %8177, label %8178, label %8195

8178:                                             ; preds = %8173
  %8179 = load i32, ptr %164, align 4, !tbaa !5
  %8180 = call ptr @__errno_location() #10
  store i32 %8179, ptr %8180, align 4, !tbaa !5
  %8181 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8182 = load i32, ptr @test_count, align 4, !tbaa !5
  %8183 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8184 = load i32, ptr %8183, align 4, !tbaa !5
  %8185 = call ptr @s2n_strerror(i32 noundef %8184, ptr noundef @.str.8)
  %8186 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8187 = load i32, ptr %8186, align 4, !tbaa !5
  %8188 = call ptr @s2n_strerror_debug(i32 noundef %8187, ptr noundef @.str.8)
  %8189 = call ptr @__errno_location() #10
  %8190 = load i32, ptr %8189, align 4, !tbaa !5
  %8191 = call ptr @strerror(i32 noundef %8190) #9
  %8192 = call ptr @__errno_location() #10
  %8193 = load i32, ptr %8192, align 4, !tbaa !5
  %8194 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8181, ptr noundef @.str.6, i32 noundef %8182, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 314, ptr noundef %8185, ptr noundef %8188, ptr noundef %8191, i32 noundef %8193) #9
  br label %8212

8195:                                             ; preds = %8173, %8166
  %8196 = load i32, ptr %164, align 4, !tbaa !5
  %8197 = call ptr @__errno_location() #10
  store i32 %8196, ptr %8197, align 4, !tbaa !5
  %8198 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8199 = load i32, ptr @test_count, align 4, !tbaa !5
  %8200 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8201 = load i32, ptr %8200, align 4, !tbaa !5
  %8202 = call ptr @s2n_strerror(i32 noundef %8201, ptr noundef @.str.8)
  %8203 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8204 = load i32, ptr %8203, align 4, !tbaa !5
  %8205 = call ptr @s2n_strerror_debug(i32 noundef %8204, ptr noundef @.str.8)
  %8206 = call ptr @__errno_location() #10
  %8207 = load i32, ptr %8206, align 4, !tbaa !5
  %8208 = call ptr @strerror(i32 noundef %8207) #9
  %8209 = call ptr @__errno_location() #10
  %8210 = load i32, ptr %8209, align 4, !tbaa !5
  %8211 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8198, ptr noundef @.str.9, i32 noundef %8199, ptr noundef @.str.22, ptr noundef @.str.5, i32 noundef 314, ptr noundef %8202, ptr noundef %8205, ptr noundef %8208, i32 noundef %8210) #9
  br label %8212

8212:                                             ; preds = %8195, %8178
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #9
  br label %8213

8213:                                             ; preds = %8212
  br label %8214

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

8215:                                             ; No predecessors!
  br label %8216

8216:                                             ; preds = %8215
  br label %8217

8217:                                             ; preds = %8216, %8154
  br label %8218

8218:                                             ; preds = %8217
  br label %8219

8219:                                             ; preds = %8218
  br label %8220

8220:                                             ; preds = %8219
  %8221 = load i32, ptr @test_count, align 4, !tbaa !5
  %8222 = add nsw i32 %8221, 1
  store i32 %8222, ptr @test_count, align 4, !tbaa !5
  %8223 = load ptr, ptr %145, align 8, !tbaa !9
  %8224 = getelementptr inbounds %struct.s2n_connection, ptr %8223, i32 0, i32 31
  %8225 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8224, i32 0, i32 4
  %8226 = getelementptr inbounds %struct.s2n_kem_group_params, ptr %8225, i32 0, i32 1
  %8227 = getelementptr inbounds %struct.s2n_kem_params, ptr %8226, i32 0, i32 0
  %8228 = load ptr, ptr %8227, align 8, !tbaa !51
  %8229 = icmp eq ptr %8228, null
  br i1 %8229, label %8283, label %8230

8230:                                             ; preds = %8220
  br label %8231

8231:                                             ; preds = %8230
  br label %8232

8232:                                             ; preds = %8231
  call void @llvm.lifetime.start.p0(i64 4, ptr %165) #9
  %8233 = call ptr @__errno_location() #10
  %8234 = load i32, ptr %8233, align 4, !tbaa !5
  store i32 %8234, ptr %165, align 4, !tbaa !5
  %8235 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8236 = call i32 @s2n_print_stacktrace(ptr noundef %8235)
  %8237 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8238 = trunc i8 %8237 to i1
  br i1 %8238, label %8239, label %8261

8239:                                             ; preds = %8232
  %8240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8241 = call i32 @fileno(ptr noundef %8240) #9
  %8242 = call i32 @isatty(i32 noundef %8241) #9
  %8243 = icmp ne i32 %8242, 0
  br i1 %8243, label %8244, label %8261

8244:                                             ; preds = %8239
  %8245 = load i32, ptr %165, align 4, !tbaa !5
  %8246 = call ptr @__errno_location() #10
  store i32 %8245, ptr %8246, align 4, !tbaa !5
  %8247 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8248 = load i32, ptr @test_count, align 4, !tbaa !5
  %8249 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8250 = load i32, ptr %8249, align 4, !tbaa !5
  %8251 = call ptr @s2n_strerror(i32 noundef %8250, ptr noundef @.str.8)
  %8252 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8253 = load i32, ptr %8252, align 4, !tbaa !5
  %8254 = call ptr @s2n_strerror_debug(i32 noundef %8253, ptr noundef @.str.8)
  %8255 = call ptr @__errno_location() #10
  %8256 = load i32, ptr %8255, align 4, !tbaa !5
  %8257 = call ptr @strerror(i32 noundef %8256) #9
  %8258 = call ptr @__errno_location() #10
  %8259 = load i32, ptr %8258, align 4, !tbaa !5
  %8260 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8247, ptr noundef @.str.6, i32 noundef %8248, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 315, ptr noundef %8251, ptr noundef %8254, ptr noundef %8257, i32 noundef %8259) #9
  br label %8278

8261:                                             ; preds = %8239, %8232
  %8262 = load i32, ptr %165, align 4, !tbaa !5
  %8263 = call ptr @__errno_location() #10
  store i32 %8262, ptr %8263, align 4, !tbaa !5
  %8264 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8265 = load i32, ptr @test_count, align 4, !tbaa !5
  %8266 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8267 = load i32, ptr %8266, align 4, !tbaa !5
  %8268 = call ptr @s2n_strerror(i32 noundef %8267, ptr noundef @.str.8)
  %8269 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8270 = load i32, ptr %8269, align 4, !tbaa !5
  %8271 = call ptr @s2n_strerror_debug(i32 noundef %8270, ptr noundef @.str.8)
  %8272 = call ptr @__errno_location() #10
  %8273 = load i32, ptr %8272, align 4, !tbaa !5
  %8274 = call ptr @strerror(i32 noundef %8273) #9
  %8275 = call ptr @__errno_location() #10
  %8276 = load i32, ptr %8275, align 4, !tbaa !5
  %8277 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8264, ptr noundef @.str.9, i32 noundef %8265, ptr noundef @.str.23, ptr noundef @.str.5, i32 noundef 315, ptr noundef %8268, ptr noundef %8271, ptr noundef %8274, i32 noundef %8276) #9
  br label %8278

8278:                                             ; preds = %8261, %8244
  call void @llvm.lifetime.end.p0(i64 4, ptr %165) #9
  br label %8279

8279:                                             ; preds = %8278
  br label %8280

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

8281:                                             ; No predecessors!
  br label %8282

8282:                                             ; preds = %8281
  br label %8283

8283:                                             ; preds = %8282, %8220
  br label %8284

8284:                                             ; preds = %8283
  br label %8285

8285:                                             ; preds = %8284
  br label %8286

8286:                                             ; preds = %8285
  %8287 = load i32, ptr @test_count, align 4, !tbaa !5
  %8288 = add nsw i32 %8287, 1
  store i32 %8288, ptr @test_count, align 4, !tbaa !5
  %8289 = load ptr, ptr %145, align 8, !tbaa !9
  %8290 = getelementptr inbounds %struct.s2n_connection, ptr %8289, i32 0, i32 31
  %8291 = getelementptr inbounds %struct.s2n_kex_parameters, ptr %8290, i32 0, i32 1
  %8292 = getelementptr inbounds %struct.s2n_ecc_evp_params, ptr %8291, i32 0, i32 0
  %8293 = load ptr, ptr %8292, align 8, !tbaa !52
  %8294 = icmp eq ptr %8293, null
  br i1 %8294, label %8348, label %8295

8295:                                             ; preds = %8286
  br label %8296

8296:                                             ; preds = %8295
  br label %8297

8297:                                             ; preds = %8296
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #9
  %8298 = call ptr @__errno_location() #10
  %8299 = load i32, ptr %8298, align 4, !tbaa !5
  store i32 %8299, ptr %166, align 4, !tbaa !5
  %8300 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8301 = call i32 @s2n_print_stacktrace(ptr noundef %8300)
  %8302 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8303 = trunc i8 %8302 to i1
  br i1 %8303, label %8304, label %8326

8304:                                             ; preds = %8297
  %8305 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8306 = call i32 @fileno(ptr noundef %8305) #9
  %8307 = call i32 @isatty(i32 noundef %8306) #9
  %8308 = icmp ne i32 %8307, 0
  br i1 %8308, label %8309, label %8326

8309:                                             ; preds = %8304
  %8310 = load i32, ptr %166, align 4, !tbaa !5
  %8311 = call ptr @__errno_location() #10
  store i32 %8310, ptr %8311, align 4, !tbaa !5
  %8312 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8313 = load i32, ptr @test_count, align 4, !tbaa !5
  %8314 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8315 = load i32, ptr %8314, align 4, !tbaa !5
  %8316 = call ptr @s2n_strerror(i32 noundef %8315, ptr noundef @.str.8)
  %8317 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8318 = load i32, ptr %8317, align 4, !tbaa !5
  %8319 = call ptr @s2n_strerror_debug(i32 noundef %8318, ptr noundef @.str.8)
  %8320 = call ptr @__errno_location() #10
  %8321 = load i32, ptr %8320, align 4, !tbaa !5
  %8322 = call ptr @strerror(i32 noundef %8321) #9
  %8323 = call ptr @__errno_location() #10
  %8324 = load i32, ptr %8323, align 4, !tbaa !5
  %8325 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8312, ptr noundef @.str.6, i32 noundef %8313, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 316, ptr noundef %8316, ptr noundef %8319, ptr noundef %8322, i32 noundef %8324) #9
  br label %8343

8326:                                             ; preds = %8304, %8297
  %8327 = load i32, ptr %166, align 4, !tbaa !5
  %8328 = call ptr @__errno_location() #10
  store i32 %8327, ptr %8328, align 4, !tbaa !5
  %8329 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8330 = load i32, ptr @test_count, align 4, !tbaa !5
  %8331 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8332 = load i32, ptr %8331, align 4, !tbaa !5
  %8333 = call ptr @s2n_strerror(i32 noundef %8332, ptr noundef @.str.8)
  %8334 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8335 = load i32, ptr %8334, align 4, !tbaa !5
  %8336 = call ptr @s2n_strerror_debug(i32 noundef %8335, ptr noundef @.str.8)
  %8337 = call ptr @__errno_location() #10
  %8338 = load i32, ptr %8337, align 4, !tbaa !5
  %8339 = call ptr @strerror(i32 noundef %8338) #9
  %8340 = call ptr @__errno_location() #10
  %8341 = load i32, ptr %8340, align 4, !tbaa !5
  %8342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8329, ptr noundef @.str.9, i32 noundef %8330, ptr noundef @.str.24, ptr noundef @.str.5, i32 noundef 316, ptr noundef %8333, ptr noundef %8336, ptr noundef %8339, i32 noundef %8341) #9
  br label %8343

8343:                                             ; preds = %8326, %8309
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #9
  br label %8344

8344:                                             ; preds = %8343
  br label %8345

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

8346:                                             ; No predecessors!
  br label %8347

8347:                                             ; preds = %8346
  br label %8348

8348:                                             ; preds = %8347, %8286
  br label %8349

8349:                                             ; preds = %8348
  br label %8350

8350:                                             ; preds = %8349
  br label %8351

8351:                                             ; preds = %8350
  %8352 = load i32, ptr @test_count, align 4, !tbaa !5
  %8353 = add nsw i32 %8352, 1
  store i32 %8353, ptr @test_count, align 4, !tbaa !5
  %8354 = load ptr, ptr %145, align 8, !tbaa !9
  %8355 = call i32 @s2n_connection_free(ptr noundef %8354)
  %8356 = icmp eq i32 %8355, -1
  br i1 %8356, label %8357, label %8410

8357:                                             ; preds = %8351
  br label %8358

8358:                                             ; preds = %8357
  br label %8359

8359:                                             ; preds = %8358
  call void @llvm.lifetime.start.p0(i64 4, ptr %167) #9
  %8360 = call ptr @__errno_location() #10
  %8361 = load i32, ptr %8360, align 4, !tbaa !5
  store i32 %8361, ptr %167, align 4, !tbaa !5
  %8362 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8363 = call i32 @s2n_print_stacktrace(ptr noundef %8362)
  %8364 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8365 = trunc i8 %8364 to i1
  br i1 %8365, label %8366, label %8388

8366:                                             ; preds = %8359
  %8367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8368 = call i32 @fileno(ptr noundef %8367) #9
  %8369 = call i32 @isatty(i32 noundef %8368) #9
  %8370 = icmp ne i32 %8369, 0
  br i1 %8370, label %8371, label %8388

8371:                                             ; preds = %8366
  %8372 = load i32, ptr %167, align 4, !tbaa !5
  %8373 = call ptr @__errno_location() #10
  store i32 %8372, ptr %8373, align 4, !tbaa !5
  %8374 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8375 = load i32, ptr @test_count, align 4, !tbaa !5
  %8376 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8377 = load i32, ptr %8376, align 4, !tbaa !5
  %8378 = call ptr @s2n_strerror(i32 noundef %8377, ptr noundef @.str.8)
  %8379 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8380 = load i32, ptr %8379, align 4, !tbaa !5
  %8381 = call ptr @s2n_strerror_debug(i32 noundef %8380, ptr noundef @.str.8)
  %8382 = call ptr @__errno_location() #10
  %8383 = load i32, ptr %8382, align 4, !tbaa !5
  %8384 = call ptr @strerror(i32 noundef %8383) #9
  %8385 = call ptr @__errno_location() #10
  %8386 = load i32, ptr %8385, align 4, !tbaa !5
  %8387 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8374, ptr noundef @.str.6, i32 noundef %8375, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 317, ptr noundef %8378, ptr noundef %8381, ptr noundef %8384, i32 noundef %8386) #9
  br label %8405

8388:                                             ; preds = %8366, %8359
  %8389 = load i32, ptr %167, align 4, !tbaa !5
  %8390 = call ptr @__errno_location() #10
  store i32 %8389, ptr %8390, align 4, !tbaa !5
  %8391 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8392 = load i32, ptr @test_count, align 4, !tbaa !5
  %8393 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8394 = load i32, ptr %8393, align 4, !tbaa !5
  %8395 = call ptr @s2n_strerror(i32 noundef %8394, ptr noundef @.str.8)
  %8396 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8397 = load i32, ptr %8396, align 4, !tbaa !5
  %8398 = call ptr @s2n_strerror_debug(i32 noundef %8397, ptr noundef @.str.8)
  %8399 = call ptr @__errno_location() #10
  %8400 = load i32, ptr %8399, align 4, !tbaa !5
  %8401 = call ptr @strerror(i32 noundef %8400) #9
  %8402 = call ptr @__errno_location() #10
  %8403 = load i32, ptr %8402, align 4, !tbaa !5
  %8404 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8391, ptr noundef @.str.9, i32 noundef %8392, ptr noundef @.str.26, ptr noundef @.str.5, i32 noundef 317, ptr noundef %8395, ptr noundef %8398, ptr noundef %8401, i32 noundef %8403) #9
  br label %8405

8405:                                             ; preds = %8388, %8371
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #9
  br label %8406

8406:                                             ; preds = %8405
  br label %8407

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

8408:                                             ; No predecessors!
  br label %8409

8409:                                             ; preds = %8408
  br label %8410

8410:                                             ; preds = %8409, %8351
  br label %8411

8411:                                             ; preds = %8410
  br label %8412

8412:                                             ; preds = %8411
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %71) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %70) #9
  br label %8413

8413:                                             ; preds = %8412
  br label %8414

8414:                                             ; preds = %8413
  %8415 = call i32 @s2n_cleanup()
  %8416 = icmp eq i32 %8415, -1
  br i1 %8416, label %8417, label %8468

8417:                                             ; preds = %8414
  br label %8418

8418:                                             ; preds = %8417
  br label %8419

8419:                                             ; preds = %8418
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #9
  %8420 = call ptr @__errno_location() #10
  %8421 = load i32, ptr %8420, align 4, !tbaa !5
  store i32 %8421, ptr %168, align 4, !tbaa !5
  %8422 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8423 = call i32 @s2n_print_stacktrace(ptr noundef %8422)
  %8424 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8425 = trunc i8 %8424 to i1
  br i1 %8425, label %8426, label %8448

8426:                                             ; preds = %8419
  %8427 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8428 = call i32 @fileno(ptr noundef %8427) #9
  %8429 = call i32 @isatty(i32 noundef %8428) #9
  %8430 = icmp ne i32 %8429, 0
  br i1 %8430, label %8431, label %8448

8431:                                             ; preds = %8426
  %8432 = load i32, ptr %168, align 4, !tbaa !5
  %8433 = call ptr @__errno_location() #10
  store i32 %8432, ptr %8433, align 4, !tbaa !5
  %8434 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8435 = load i32, ptr @test_count, align 4, !tbaa !5
  %8436 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8437 = load i32, ptr %8436, align 4, !tbaa !5
  %8438 = call ptr @s2n_strerror(i32 noundef %8437, ptr noundef @.str.8)
  %8439 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8440 = load i32, ptr %8439, align 4, !tbaa !5
  %8441 = call ptr @s2n_strerror_debug(i32 noundef %8440, ptr noundef @.str.8)
  %8442 = call ptr @__errno_location() #10
  %8443 = load i32, ptr %8442, align 4, !tbaa !5
  %8444 = call ptr @strerror(i32 noundef %8443) #9
  %8445 = call ptr @__errno_location() #10
  %8446 = load i32, ptr %8445, align 4, !tbaa !5
  %8447 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8434, ptr noundef @.str.6, i32 noundef %8435, ptr noundef @.str.40, ptr noundef @.str.5, i32 noundef 321, ptr noundef %8438, ptr noundef %8441, ptr noundef %8444, i32 noundef %8446) #9
  br label %8465

8448:                                             ; preds = %8426, %8419
  %8449 = load i32, ptr %168, align 4, !tbaa !5
  %8450 = call ptr @__errno_location() #10
  store i32 %8449, ptr %8450, align 4, !tbaa !5
  %8451 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8452 = load i32, ptr @test_count, align 4, !tbaa !5
  %8453 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8454 = load i32, ptr %8453, align 4, !tbaa !5
  %8455 = call ptr @s2n_strerror(i32 noundef %8454, ptr noundef @.str.8)
  %8456 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8457 = load i32, ptr %8456, align 4, !tbaa !5
  %8458 = call ptr @s2n_strerror_debug(i32 noundef %8457, ptr noundef @.str.8)
  %8459 = call ptr @__errno_location() #10
  %8460 = load i32, ptr %8459, align 4, !tbaa !5
  %8461 = call ptr @strerror(i32 noundef %8460) #9
  %8462 = call ptr @__errno_location() #10
  %8463 = load i32, ptr %8462, align 4, !tbaa !5
  %8464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8451, ptr noundef @.str.9, i32 noundef %8452, ptr noundef @.str.40, ptr noundef @.str.5, i32 noundef 321, ptr noundef %8455, ptr noundef %8458, ptr noundef %8461, i32 noundef %8463) #9
  br label %8465

8465:                                             ; preds = %8448, %8431
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #9
  br label %8466

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

8467:                                             ; No predecessors!
  br label %8468

8468:                                             ; preds = %8467, %8414
  br label %8469

8469:                                             ; preds = %8468
  br label %8470

8470:                                             ; preds = %8469
  br label %8471

8471:                                             ; preds = %8470
  %8472 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false)
  %8473 = icmp eq i32 %8472, -1
  br i1 %8473, label %8474, label %8525

8474:                                             ; preds = %8471
  br label %8475

8475:                                             ; preds = %8474
  br label %8476

8476:                                             ; preds = %8475
  call void @llvm.lifetime.start.p0(i64 4, ptr %169) #9
  %8477 = call ptr @__errno_location() #10
  %8478 = load i32, ptr %8477, align 4, !tbaa !5
  store i32 %8478, ptr %169, align 4, !tbaa !5
  %8479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8480 = call i32 @s2n_print_stacktrace(ptr noundef %8479)
  %8481 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8482 = trunc i8 %8481 to i1
  br i1 %8482, label %8483, label %8505

8483:                                             ; preds = %8476
  %8484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8485 = call i32 @fileno(ptr noundef %8484) #9
  %8486 = call i32 @isatty(i32 noundef %8485) #9
  %8487 = icmp ne i32 %8486, 0
  br i1 %8487, label %8488, label %8505

8488:                                             ; preds = %8483
  %8489 = load i32, ptr %169, align 4, !tbaa !5
  %8490 = call ptr @__errno_location() #10
  store i32 %8489, ptr %8490, align 4, !tbaa !5
  %8491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8492 = load i32, ptr @test_count, align 4, !tbaa !5
  %8493 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8494 = load i32, ptr %8493, align 4, !tbaa !5
  %8495 = call ptr @s2n_strerror(i32 noundef %8494, ptr noundef @.str.8)
  %8496 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8497 = load i32, ptr %8496, align 4, !tbaa !5
  %8498 = call ptr @s2n_strerror_debug(i32 noundef %8497, ptr noundef @.str.8)
  %8499 = call ptr @__errno_location() #10
  %8500 = load i32, ptr %8499, align 4, !tbaa !5
  %8501 = call ptr @strerror(i32 noundef %8500) #9
  %8502 = call ptr @__errno_location() #10
  %8503 = load i32, ptr %8502, align 4, !tbaa !5
  %8504 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8491, ptr noundef @.str.6, i32 noundef %8492, ptr noundef @.str.41, ptr noundef @.str.5, i32 noundef 321, ptr noundef %8495, ptr noundef %8498, ptr noundef %8501, i32 noundef %8503) #9
  br label %8522

8505:                                             ; preds = %8483, %8476
  %8506 = load i32, ptr %169, align 4, !tbaa !5
  %8507 = call ptr @__errno_location() #10
  store i32 %8506, ptr %8507, align 4, !tbaa !5
  %8508 = load ptr, ptr @stderr, align 8, !tbaa !9
  %8509 = load i32, ptr @test_count, align 4, !tbaa !5
  %8510 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8511 = load i32, ptr %8510, align 4, !tbaa !5
  %8512 = call ptr @s2n_strerror(i32 noundef %8511, ptr noundef @.str.8)
  %8513 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %8514 = load i32, ptr %8513, align 4, !tbaa !5
  %8515 = call ptr @s2n_strerror_debug(i32 noundef %8514, ptr noundef @.str.8)
  %8516 = call ptr @__errno_location() #10
  %8517 = load i32, ptr %8516, align 4, !tbaa !5
  %8518 = call ptr @strerror(i32 noundef %8517) #9
  %8519 = call ptr @__errno_location() #10
  %8520 = load i32, ptr %8519, align 4, !tbaa !5
  %8521 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8508, ptr noundef @.str.9, i32 noundef %8509, ptr noundef @.str.41, ptr noundef @.str.5, i32 noundef 321, ptr noundef %8512, ptr noundef %8515, ptr noundef %8518, i32 noundef %8520) #9
  br label %8522

8522:                                             ; preds = %8505, %8488
  call void @llvm.lifetime.end.p0(i64 4, ptr %169) #9
  br label %8523

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

8524:                                             ; No predecessors!
  br label %8525

8525:                                             ; preds = %8524, %8471
  br label %8526

8526:                                             ; preds = %8525
  %8527 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %8528 = trunc i8 %8527 to i1
  br i1 %8528, label %8529, label %8545

8529:                                             ; preds = %8526
  %8530 = load ptr, ptr @stdout, align 8, !tbaa !9
  %8531 = call i32 @fileno(ptr noundef %8530) #9
  %8532 = call i32 @isatty(i32 noundef %8531) #9
  %8533 = icmp ne i32 %8532, 0
  br i1 %8533, label %8534, label %8545

8534:                                             ; preds = %8529
  %8535 = load i32, ptr @test_count, align 4, !tbaa !5
  %8536 = icmp ne i32 %8535, 0
  br i1 %8536, label %8537, label %8541

8537:                                             ; preds = %8534
  %8538 = load ptr, ptr @stdout, align 8, !tbaa !9
  %8539 = load i32, ptr @test_count, align 4, !tbaa !5
  %8540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8538, ptr noundef @.str.42, i32 noundef %8539) #9
  br label %8544

8541:                                             ; preds = %8534
  %8542 = load ptr, ptr @stdout, align 8, !tbaa !9
  %8543 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8542, ptr noundef @.str.43) #9
  br label %8544

8544:                                             ; preds = %8541, %8537
  br label %8556

8545:                                             ; preds = %8529, %8526
  %8546 = load i32, ptr @test_count, align 4, !tbaa !5
  %8547 = icmp ne i32 %8546, 0
  br i1 %8547, label %8548, label %8552

8548:                                             ; preds = %8545
  %8549 = load ptr, ptr @stdout, align 8, !tbaa !9
  %8550 = load i32, ptr @test_count, align 4, !tbaa !5
  %8551 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8549, ptr noundef @.str.44, i32 noundef %8550) #9
  br label %8555

8552:                                             ; preds = %8545
  %8553 = load ptr, ptr @stdout, align 8, !tbaa !9
  %8554 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %8553, ptr noundef @.str.45) #9
  br label %8555

8555:                                             ; preds = %8552, %8548
  br label %8556

8556:                                             ; preds = %8555, %8544
  store i32 0, ptr %1, align 4
  br label %8558

8557:                                             ; No predecessors!
  br label %8558

8558:                                             ; preds = %8557, %8556
  %8559 = load i32, ptr %1, align 4
  ret i32 %8559
}

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

declare i32 @fflush(ptr noundef) #4

declare i32 @s2n_in_unit_test_set(i1 noundef zeroext) #4

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

declare i32 @s2n_print_stacktrace(ptr noundef) #4

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() #4

declare i32 @s2n_init() #4

declare i32 @s2n_disable_tls13_in_test(...) #4

declare ptr @s2n_connection_new(i32 noundef) #4

declare i32 @s2n_connection_get_ecc_preferences(ptr noundef, ptr noundef) #4

declare i32 @s2n_connection_get_kem_preferences(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_choose_supported_group(ptr noundef) #2

declare i32 @s2n_connection_free(ptr noundef) #4

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

declare ptr @s2n_kem_preferences_get_highest_priority_group(ptr noundef) #4

declare zeroext i1 @s2n_pq_is_enabled() #4

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

declare i32 @s2n_kem_preferences_groups_available(ptr noundef, ptr noundef) #4

declare i32 @s2n_cleanup() #4

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

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

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


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

%struct.s2n_kem_preferences = type { i8, ptr, i8, ptr, i8 }
%struct.s2n_cipher_preferences = type { i16, ptr, i8 }
%struct.s2n_signature_preferences = type { i8, ptr }
%struct.s2n_ecc_preferences = type { i8, ptr }
%struct.s2n_security_policy = type { i8, ptr, ptr, ptr, ptr, ptr, ptr, i8, [2 x i8] }

@s2n_use_color_in_output = external dso_local local_unnamed_addr global i8, align 1
@s2n_errno = external thread_local local_unnamed_addr global i32, align 4
@test_count = external dso_local local_unnamed_addr global i32, align 4
@stdout = external local_unnamed_addr global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [90 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [43 x i8], align 1
@kem_preferences_null = external constant %struct.s2n_kem_preferences, align 8
@.str.18 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [84 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [89 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [107 x i8], align 1
@kem_preferences_all = external constant %struct.s2n_kem_preferences, align 8
@cipher_preferences_test_all_tls13 = external constant %struct.s2n_cipher_preferences, align 8
@s2n_signature_preferences_20200207 = external constant %struct.s2n_signature_preferences, align 8
@s2n_ecc_preferences_20200310 = external constant %struct.s2n_ecc_preferences, align 8
@.str.29 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [98 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

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

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

31:                                               ; preds = %24
  %32 = load ptr, ptr @stderr, align 8, !tbaa !9
  %33 = tail call i32 @fileno(ptr noundef %32) #10
  %34 = tail call i32 @isatty(i32 noundef %33) #10
  %.not565 = icmp eq i32 %34, 0
  br i1 %.not565, label %35, label %36

35:                                               ; preds = %31, %24
  br label %36

36:                                               ; preds = %31, %35
  %.str.9.sink = phi ptr [ @.str.9, %35 ], [ @.str.6, %31 ]
  store i32 %26, ptr %25, align 4, !tbaa !5
  %37 = load ptr, ptr @stderr, align 8, !tbaa !9
  %38 = load i32, ptr @test_count, align 4, !tbaa !5
  %39 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %40 = load i32, ptr %39, align 4, !tbaa !5
  %41 = tail call ptr @s2n_strerror(i32 noundef %40, ptr noundef nonnull @.str.8) #10
  %42 = load i32, ptr %39, align 4, !tbaa !5
  %43 = tail call ptr @s2n_strerror_debug(i32 noundef %42, ptr noundef nonnull @.str.8) #10
  %44 = load i32, ptr %25, align 4, !tbaa !5
  %45 = tail call ptr @strerror(i32 noundef %44) #10
  %46 = load i32, ptr %25, align 4, !tbaa !5
  %47 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %37, ptr noundef nonnull %.str.9.sink, i32 noundef %38, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, i32 noundef 30, ptr noundef %41, ptr noundef %43, ptr noundef %45, i32 noundef %46) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

48:                                               ; preds = %0
  %49 = load i32, ptr @test_count, align 4, !tbaa !5
  %50 = add nsw i32 %49, 1
  store i32 %50, ptr @test_count, align 4, !tbaa !5
  %51 = tail call i32 @s2n_enable_atexit() #10
  %52 = icmp eq i32 %51, -1
  br i1 %52, label %53, label %77

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

60:                                               ; preds = %53
  %61 = load ptr, ptr @stderr, align 8, !tbaa !9
  %62 = tail call i32 @fileno(ptr noundef %61) #10
  %63 = tail call i32 @isatty(i32 noundef %62) #10
  %.not564 = icmp eq i32 %63, 0
  br i1 %.not564, label %64, label %65

64:                                               ; preds = %60, %53
  br label %65

65:                                               ; preds = %60, %64
  %.str.9.sink716 = phi ptr [ @.str.9, %64 ], [ @.str.6, %60 ]
  store i32 %55, ptr %54, align 4, !tbaa !5
  %66 = load ptr, ptr @stderr, align 8, !tbaa !9
  %67 = load i32, ptr @test_count, align 4, !tbaa !5
  %68 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %69 = load i32, ptr %68, align 4, !tbaa !5
  %70 = tail call ptr @s2n_strerror(i32 noundef %69, ptr noundef nonnull @.str.8) #10
  %71 = load i32, ptr %68, align 4, !tbaa !5
  %72 = tail call ptr @s2n_strerror_debug(i32 noundef %71, ptr noundef nonnull @.str.8) #10
  %73 = load i32, ptr %54, align 4, !tbaa !5
  %74 = tail call ptr @strerror(i32 noundef %73) #10
  %75 = load i32, ptr %54, align 4, !tbaa !5
  %76 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %66, ptr noundef nonnull %.str.9.sink716, i32 noundef %67, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.5, i32 noundef 30, ptr noundef %70, ptr noundef %72, ptr noundef %74, i32 noundef %75) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

77:                                               ; preds = %48
  %78 = tail call i32 @s2n_init() #10
  %79 = icmp eq i32 %78, -1
  br i1 %79, label %80, label %104

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

87:                                               ; preds = %80
  %88 = load ptr, ptr @stderr, align 8, !tbaa !9
  %89 = tail call i32 @fileno(ptr noundef %88) #10
  %90 = tail call i32 @isatty(i32 noundef %89) #10
  %.not563 = icmp eq i32 %90, 0
  br i1 %.not563, label %91, label %92

91:                                               ; preds = %87, %80
  br label %92

92:                                               ; preds = %87, %91
  %.str.9.sink727 = phi ptr [ @.str.9, %91 ], [ @.str.6, %87 ]
  store i32 %82, ptr %81, align 4, !tbaa !5
  %93 = load ptr, ptr @stderr, align 8, !tbaa !9
  %94 = load i32, ptr @test_count, align 4, !tbaa !5
  %95 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %96 = load i32, ptr %95, align 4, !tbaa !5
  %97 = tail call ptr @s2n_strerror(i32 noundef %96, ptr noundef nonnull @.str.8) #10
  %98 = load i32, ptr %95, align 4, !tbaa !5
  %99 = tail call ptr @s2n_strerror_debug(i32 noundef %98, ptr noundef nonnull @.str.8) #10
  %100 = load i32, ptr %81, align 4, !tbaa !5
  %101 = tail call ptr @strerror(i32 noundef %100) #10
  %102 = load i32, ptr %81, align 4, !tbaa !5
  %103 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %93, ptr noundef nonnull %.str.9.sink727, i32 noundef %94, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.5, i32 noundef 30, ptr noundef %97, ptr noundef %99, ptr noundef %101, i32 noundef %102) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

104:                                              ; preds = %77
  %105 = load i32, ptr @test_count, align 4, !tbaa !5
  %106 = add nsw i32 %105, 1
  store i32 %106, ptr @test_count, align 4, !tbaa !5
  %107 = tail call i32 (...) @s2n_disable_tls13_in_test() #10
  %108 = icmp eq i32 %107, -1
  br i1 %108, label %109, label %133

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

116:                                              ; preds = %109
  %117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %118 = tail call i32 @fileno(ptr noundef %117) #10
  %119 = tail call i32 @isatty(i32 noundef %118) #10
  %.not562 = icmp eq i32 %119, 0
  br i1 %.not562, label %120, label %121

120:                                              ; preds = %116, %109
  br label %121

121:                                              ; preds = %116, %120
  %.str.9.sink738 = phi ptr [ @.str.9, %120 ], [ @.str.6, %116 ]
  store i32 %111, ptr %110, align 4, !tbaa !5
  %122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %123 = load i32, ptr @test_count, align 4, !tbaa !5
  %124 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %126 = tail call ptr @s2n_strerror(i32 noundef %125, ptr noundef nonnull @.str.8) #10
  %127 = load i32, ptr %124, align 4, !tbaa !5
  %128 = tail call ptr @s2n_strerror_debug(i32 noundef %127, ptr noundef nonnull @.str.8) #10
  %129 = load i32, ptr %110, align 4, !tbaa !5
  %130 = tail call ptr @strerror(i32 noundef %129) #10
  %131 = load i32, ptr %110, align 4, !tbaa !5
  %132 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %122, ptr noundef nonnull %.str.9.sink738, i32 noundef %123, ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.5, i32 noundef 31, ptr noundef %126, ptr noundef %128, ptr noundef %130, i32 noundef %131) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

133:                                              ; preds = %104
  %134 = load i32, ptr @test_count, align 4, !tbaa !5
  %135 = add nsw i32 %134, 1
  store i32 %135, ptr @test_count, align 4, !tbaa !5
  %136 = tail call ptr @s2n_connection_new(i32 noundef 0) #10
  %137 = icmp eq ptr %136, null
  br i1 %137, label %138, label %162

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

145:                                              ; preds = %138
  %146 = load ptr, ptr @stderr, align 8, !tbaa !9
  %147 = tail call i32 @fileno(ptr noundef %146) #10
  %148 = tail call i32 @isatty(i32 noundef %147) #10
  %.not561 = icmp eq i32 %148, 0
  br i1 %.not561, label %149, label %150

149:                                              ; preds = %145, %138
  br label %150

150:                                              ; preds = %145, %149
  %.str.9.sink749 = phi ptr [ @.str.9, %149 ], [ @.str.6, %145 ]
  store i32 %140, ptr %139, align 4, !tbaa !5
  %151 = load ptr, ptr @stderr, align 8, !tbaa !9
  %152 = load i32, ptr @test_count, align 4, !tbaa !5
  %153 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = tail call ptr @s2n_strerror(i32 noundef %154, ptr noundef nonnull @.str.8) #10
  %156 = load i32, ptr %153, align 4, !tbaa !5
  %157 = tail call ptr @s2n_strerror_debug(i32 noundef %156, ptr noundef nonnull @.str.8) #10
  %158 = load i32, ptr %139, align 4, !tbaa !5
  %159 = tail call ptr @strerror(i32 noundef %158) #10
  %160 = load i32, ptr %139, align 4, !tbaa !5
  %161 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %151, ptr noundef nonnull %.str.9.sink749, i32 noundef %152, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 38, ptr noundef %155, ptr noundef %157, ptr noundef %159, i32 noundef %160) #12
  tail call void @exit(i32 noundef 1) #13
  unreachable

162:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #10
  store ptr null, ptr %1, align 8, !tbaa !9
  %163 = load i32, ptr @test_count, align 4, !tbaa !5
  %164 = add nsw i32 %163, 1
  store i32 %164, ptr @test_count, align 4, !tbaa !5
  %165 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %136, ptr noundef nonnull %1) #10
  %166 = icmp eq i32 %165, -1
  br i1 %166, label %167, label %191

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

174:                                              ; preds = %167
  %175 = load ptr, ptr @stderr, align 8, !tbaa !9
  %176 = call i32 @fileno(ptr noundef %175) #10
  %177 = call i32 @isatty(i32 noundef %176) #10
  %.not560 = icmp eq i32 %177, 0
  br i1 %.not560, label %178, label %179

178:                                              ; preds = %174, %167
  br label %179

179:                                              ; preds = %174, %178
  %.str.9.sink760 = phi ptr [ @.str.9, %178 ], [ @.str.6, %174 ]
  store i32 %169, ptr %168, align 4, !tbaa !5
  %180 = load ptr, ptr @stderr, align 8, !tbaa !9
  %181 = load i32, ptr @test_count, align 4, !tbaa !5
  %182 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %183 = load i32, ptr %182, align 4, !tbaa !5
  %184 = call ptr @s2n_strerror(i32 noundef %183, ptr noundef nonnull @.str.8) #10
  %185 = load i32, ptr %182, align 4, !tbaa !5
  %186 = call ptr @s2n_strerror_debug(i32 noundef %185, ptr noundef nonnull @.str.8) #10
  %187 = load i32, ptr %168, align 4, !tbaa !5
  %188 = call ptr @strerror(i32 noundef %187) #10
  %189 = load i32, ptr %168, align 4, !tbaa !5
  %190 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %180, ptr noundef nonnull %.str.9.sink760, i32 noundef %181, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.5, i32 noundef 41, ptr noundef %184, ptr noundef %186, ptr noundef %188, i32 noundef %189) #12
  call void @exit(i32 noundef 1) #13
  unreachable

191:                                              ; preds = %162
  %192 = load i32, ptr @test_count, align 4, !tbaa !5
  %193 = add nsw i32 %192, 1
  store i32 %193, ptr @test_count, align 4, !tbaa !5
  %194 = load ptr, ptr %1, align 8, !tbaa !9
  %195 = icmp eq ptr %194, null
  br i1 %195, label %196, label %220

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

203:                                              ; preds = %196
  %204 = load ptr, ptr @stderr, align 8, !tbaa !9
  %205 = call i32 @fileno(ptr noundef %204) #10
  %206 = call i32 @isatty(i32 noundef %205) #10
  %.not559 = icmp eq i32 %206, 0
  br i1 %.not559, label %207, label %208

207:                                              ; preds = %203, %196
  br label %208

208:                                              ; preds = %203, %207
  %.str.9.sink771 = phi ptr [ @.str.9, %207 ], [ @.str.6, %203 ]
  store i32 %198, ptr %197, align 4, !tbaa !5
  %209 = load ptr, ptr @stderr, align 8, !tbaa !9
  %210 = load i32, ptr @test_count, align 4, !tbaa !5
  %211 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %212 = load i32, ptr %211, align 4, !tbaa !5
  %213 = call ptr @s2n_strerror(i32 noundef %212, ptr noundef nonnull @.str.8) #10
  %214 = load i32, ptr %211, align 4, !tbaa !5
  %215 = call ptr @s2n_strerror_debug(i32 noundef %214, ptr noundef nonnull @.str.8) #10
  %216 = load i32, ptr %197, align 4, !tbaa !5
  %217 = call ptr @strerror(i32 noundef %216) #10
  %218 = load i32, ptr %197, align 4, !tbaa !5
  %219 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %209, ptr noundef nonnull %.str.9.sink771, i32 noundef %210, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 42, ptr noundef %213, ptr noundef %215, ptr noundef %217, i32 noundef %218) #12
  call void @exit(i32 noundef 1) #13
  unreachable

220:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #10
  store ptr null, ptr %2, align 8, !tbaa !9
  %221 = add nsw i32 %192, 2
  store i32 %221, ptr @test_count, align 4, !tbaa !5
  %222 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %136, ptr noundef nonnull %2) #10
  %223 = icmp eq i32 %222, -1
  br i1 %223, label %224, label %248

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

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

235:                                              ; preds = %231, %224
  br label %236

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

248:                                              ; preds = %220
  %249 = load i32, ptr @test_count, align 4, !tbaa !5
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr @test_count, align 4, !tbaa !5
  %251 = load ptr, ptr %2, align 8, !tbaa !9
  %252 = icmp eq ptr %251, null
  br i1 %252, label %253, label %277

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

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

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

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

277:                                              ; preds = %248
  %278 = add nsw i32 %249, 2
  store i32 %278, ptr @test_count, align 4, !tbaa !5
  %279 = icmp eq ptr %251, @kem_preferences_null
  br i1 %279, label %.preheader578, label %286

.preheader578:                                    ; preds = %277
  %280 = load ptr, ptr %1, align 8, !tbaa !9
  %281 = load i8, ptr %280, align 8, !tbaa !15
  %282 = zext i8 %281 to i64
  %.not642 = icmp eq i8 %281, 0
  br i1 %.not642, label %.preheader577, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader578
  %283 = getelementptr inbounds i8, ptr %136, i64 672
  %284 = zext i8 %281 to i32
  %285 = add i32 %278, %284
  br label %317

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

293:                                              ; preds = %286
  %294 = load ptr, ptr @stderr, align 8, !tbaa !9
  %295 = call i32 @fileno(ptr noundef %294) #10
  %296 = call i32 @isatty(i32 noundef %295) #10
  %.not = icmp eq i32 %296, 0
  br i1 %.not, label %297, label %298

297:                                              ; preds = %293, %286
  br label %298

298:                                              ; preds = %293, %297
  %.str.9.sink804 = phi ptr [ @.str.9, %297 ], [ @.str.6, %293 ]
  store i32 %288, ptr %287, align 4, !tbaa !5
  %299 = load ptr, ptr @stderr, align 8, !tbaa !9
  %300 = load i32, ptr @test_count, align 4, !tbaa !5
  %301 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %302 = load i32, ptr %301, align 4, !tbaa !5
  %303 = call ptr @s2n_strerror(i32 noundef %302, ptr noundef nonnull @.str.8) #10
  %304 = load i32, ptr %301, align 4, !tbaa !5
  %305 = call ptr @s2n_strerror_debug(i32 noundef %304, ptr noundef nonnull @.str.8) #10
  %306 = load i32, ptr %287, align 4, !tbaa !5
  %307 = call ptr @strerror(i32 noundef %306) #10
  %308 = load i32, ptr %287, align 4, !tbaa !5
  %309 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %299, ptr noundef nonnull %.str.9.sink804, i32 noundef %300, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.5, i32 noundef 47, ptr noundef %303, ptr noundef %305, ptr noundef %307, i32 noundef %308) #12
  call void @exit(i32 noundef 1) #13
  unreachable

310:                                              ; preds = %317
  %311 = add nuw nsw i64 %.0582, 1
  %exitcond.not = icmp eq i64 %311, %282
  br i1 %exitcond.not, label %..preheader577_crit_edge, label %317, !llvm.loop !17

..preheader577_crit_edge:                         ; preds = %310
  store i32 %285, ptr @test_count, align 4, !tbaa !5
  br label %.preheader577

.preheader577:                                    ; preds = %..preheader577_crit_edge, %.preheader578
  %test_count.promoted585 = phi i32 [ %285, %..preheader577_crit_edge ], [ %278, %.preheader578 ]
  %312 = load i8, ptr getelementptr inbounds (i8, ptr @kem_preferences_null, i64 16), align 8, !tbaa !19
  %313 = zext i8 %312 to i64
  %.not643 = icmp eq i8 %312, 0
  br i1 %.not643, label %._crit_edge, label %.lr.ph587

.lr.ph587:                                        ; preds = %.preheader577
  %314 = getelementptr inbounds i8, ptr %136, i64 944
  %315 = zext i8 %312 to i32
  %316 = add i32 %test_count.promoted585, %315
  br label %354

317:                                              ; preds = %.lr.ph, %310
  %.0582 = phi i64 [ 0, %.lr.ph ], [ %311, %310 ]
  %318 = phi i32 [ %278, %.lr.ph ], [ %319, %310 ]
  %319 = add nsw i32 %318, 1
  %320 = getelementptr inbounds [4 x ptr], ptr %283, i64 0, i64 %.0582
  %321 = load ptr, ptr %320, align 8, !tbaa !9
  %322 = icmp eq ptr %321, null
  br i1 %322, label %310, label %323

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

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

334:                                              ; preds = %330, %323
  br label %335

335:                                              ; preds = %330, %334
  %.str.9.sink815 = phi ptr [ @.str.9, %334 ], [ @.str.6, %330 ]
  store i32 %325, ptr %324, align 4, !tbaa !5
  %336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %337 = load i32, ptr @test_count, align 4, !tbaa !5
  %338 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %339 = load i32, ptr %338, align 4, !tbaa !5
  %340 = call ptr @s2n_strerror(i32 noundef %339, ptr noundef nonnull @.str.8) #10
  %341 = load i32, ptr %338, align 4, !tbaa !5
  %342 = call ptr @s2n_strerror_debug(i32 noundef %341, ptr noundef nonnull @.str.8) #10
  %343 = load i32, ptr %324, align 4, !tbaa !5
  %344 = call ptr @strerror(i32 noundef %343) #10
  %345 = load i32, ptr %324, align 4, !tbaa !5
  %346 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %336, ptr noundef nonnull %.str.9.sink815, i32 noundef %337, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.5, i32 noundef 50, ptr noundef %340, ptr noundef %342, ptr noundef %344, i32 noundef %345) #12
  call void @exit(i32 noundef 1) #13
  unreachable

347:                                              ; preds = %354
  %348 = add nuw nsw i64 %.0411586, 1
  %exitcond673.not = icmp eq i64 %348, %313
  br i1 %exitcond673.not, label %._crit_edge, label %354, !llvm.loop !21

._crit_edge:                                      ; preds = %347, %.preheader577
  %349 = phi i32 [ %test_count.promoted585, %.preheader577 ], [ %316, %347 ]
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr @test_count, align 4, !tbaa !5
  %351 = getelementptr inbounds i8, ptr %136, i64 720
  %352 = load ptr, ptr %351, align 8, !tbaa !22
  %353 = icmp eq ptr %352, null
  br i1 %353, label %408, label %384

354:                                              ; preds = %.lr.ph587, %347
  %.0411586 = phi i64 [ 0, %.lr.ph587 ], [ %348, %347 ]
  %355 = phi i32 [ %test_count.promoted585, %.lr.ph587 ], [ %356, %347 ]
  %356 = add nsw i32 %355, 1
  %357 = getelementptr inbounds [8 x ptr], ptr %314, i64 0, i64 %.0411586
  %358 = load ptr, ptr %357, align 8, !tbaa !9
  %359 = icmp eq ptr %358, null
  br i1 %359, label %347, label %360

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

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

371:                                              ; preds = %367, %360
  br label %372

372:                                              ; preds = %367, %371
  %.str.9.sink826 = phi ptr [ @.str.9, %371 ], [ @.str.6, %367 ]
  store i32 %362, ptr %361, align 4, !tbaa !5
  %373 = load ptr, ptr @stderr, align 8, !tbaa !9
  %374 = load i32, ptr @test_count, align 4, !tbaa !5
  %375 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %376 = load i32, ptr %375, align 4, !tbaa !5
  %377 = call ptr @s2n_strerror(i32 noundef %376, ptr noundef nonnull @.str.8) #10
  %378 = load i32, ptr %375, align 4, !tbaa !5
  %379 = call ptr @s2n_strerror_debug(i32 noundef %378, ptr noundef nonnull @.str.8) #10
  %380 = load i32, ptr %361, align 4, !tbaa !5
  %381 = call ptr @strerror(i32 noundef %380) #10
  %382 = load i32, ptr %361, align 4, !tbaa !5
  %383 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %373, ptr noundef nonnull %.str.9.sink826, i32 noundef %374, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, i32 noundef 54, ptr noundef %377, ptr noundef %379, ptr noundef %381, i32 noundef %382) #12
  call void @exit(i32 noundef 1) #13
  unreachable

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

391:                                              ; preds = %384
  %392 = load ptr, ptr @stderr, align 8, !tbaa !9
  %393 = call i32 @fileno(ptr noundef %392) #10
  %394 = call i32 @isatty(i32 noundef %393) #10
  %.not436 = icmp eq i32 %394, 0
  br i1 %.not436, label %395, label %396

395:                                              ; preds = %391, %384
  br label %396

396:                                              ; preds = %391, %395
  %.str.9.sink837 = phi ptr [ @.str.9, %395 ], [ @.str.6, %391 ]
  store i32 %386, ptr %385, align 4, !tbaa !5
  %397 = load ptr, ptr @stderr, align 8, !tbaa !9
  %398 = load i32, ptr @test_count, align 4, !tbaa !5
  %399 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %400 = load i32, ptr %399, align 4, !tbaa !5
  %401 = call ptr @s2n_strerror(i32 noundef %400, ptr noundef nonnull @.str.8) #10
  %402 = load i32, ptr %399, align 4, !tbaa !5
  %403 = call ptr @s2n_strerror_debug(i32 noundef %402, ptr noundef nonnull @.str.8) #10
  %404 = load i32, ptr %385, align 4, !tbaa !5
  %405 = call ptr @strerror(i32 noundef %404) #10
  %406 = load i32, ptr %385, align 4, !tbaa !5
  %407 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %397, ptr noundef nonnull %.str.9.sink837, i32 noundef %398, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 57, ptr noundef %401, ptr noundef %403, ptr noundef %405, i32 noundef %406) #12
  call void @exit(i32 noundef 1) #13
  unreachable

408:                                              ; preds = %._crit_edge
  %409 = add nsw i32 %349, 2
  store i32 %409, ptr @test_count, align 4, !tbaa !5
  %410 = getelementptr inbounds i8, ptr %136, i64 816
  %411 = load ptr, ptr %410, align 8, !tbaa !49
  %412 = icmp eq ptr %411, null
  br i1 %412, label %437, label %413

413:                                              ; preds = %408
  %414 = tail call ptr @__errno_location() #11
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = load ptr, ptr @stderr, align 8, !tbaa !9
  %417 = call i32 @s2n_print_stacktrace(ptr noundef %416) #10
  %418 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %419 = trunc nuw i8 %418 to i1
  br i1 %419, label %420, label %424

420:                                              ; preds = %413
  %421 = load ptr, ptr @stderr, align 8, !tbaa !9
  %422 = call i32 @fileno(ptr noundef %421) #10
  %423 = call i32 @isatty(i32 noundef %422) #10
  %.not437 = icmp eq i32 %423, 0
  br i1 %.not437, label %424, label %425

424:                                              ; preds = %420, %413
  br label %425

425:                                              ; preds = %420, %424
  %.str.9.sink848 = phi ptr [ @.str.9, %424 ], [ @.str.6, %420 ]
  store i32 %415, ptr %414, align 4, !tbaa !5
  %426 = load ptr, ptr @stderr, align 8, !tbaa !9
  %427 = load i32, ptr @test_count, align 4, !tbaa !5
  %428 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %429 = load i32, ptr %428, align 4, !tbaa !5
  %430 = call ptr @s2n_strerror(i32 noundef %429, ptr noundef nonnull @.str.8) #10
  %431 = load i32, ptr %428, align 4, !tbaa !5
  %432 = call ptr @s2n_strerror_debug(i32 noundef %431, ptr noundef nonnull @.str.8) #10
  %433 = load i32, ptr %414, align 4, !tbaa !5
  %434 = call ptr @strerror(i32 noundef %433) #10
  %435 = load i32, ptr %414, align 4, !tbaa !5
  %436 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %426, ptr noundef nonnull %.str.9.sink848, i32 noundef %427, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 58, ptr noundef %430, ptr noundef %432, ptr noundef %434, i32 noundef %435) #12
  call void @exit(i32 noundef 1) #13
  unreachable

437:                                              ; preds = %408
  %438 = add nsw i32 %349, 3
  store i32 %438, ptr @test_count, align 4, !tbaa !5
  %439 = getelementptr inbounds i8, ptr %136, i64 728
  %440 = load ptr, ptr %439, align 8, !tbaa !50
  %441 = icmp eq ptr %440, null
  br i1 %441, label %466, label %442

442:                                              ; preds = %437
  %443 = tail call ptr @__errno_location() #11
  %444 = load i32, ptr %443, align 4, !tbaa !5
  %445 = load ptr, ptr @stderr, align 8, !tbaa !9
  %446 = call i32 @s2n_print_stacktrace(ptr noundef %445) #10
  %447 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %448 = trunc nuw i8 %447 to i1
  br i1 %448, label %449, label %453

449:                                              ; preds = %442
  %450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %451 = call i32 @fileno(ptr noundef %450) #10
  %452 = call i32 @isatty(i32 noundef %451) #10
  %.not438 = icmp eq i32 %452, 0
  br i1 %.not438, label %453, label %454

453:                                              ; preds = %449, %442
  br label %454

454:                                              ; preds = %449, %453
  %.str.9.sink859 = phi ptr [ @.str.9, %453 ], [ @.str.6, %449 ]
  store i32 %444, ptr %443, align 4, !tbaa !5
  %455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %456 = load i32, ptr @test_count, align 4, !tbaa !5
  %457 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %458 = load i32, ptr %457, align 4, !tbaa !5
  %459 = call ptr @s2n_strerror(i32 noundef %458, ptr noundef nonnull @.str.8) #10
  %460 = load i32, ptr %457, align 4, !tbaa !5
  %461 = call ptr @s2n_strerror_debug(i32 noundef %460, ptr noundef nonnull @.str.8) #10
  %462 = load i32, ptr %443, align 4, !tbaa !5
  %463 = call ptr @strerror(i32 noundef %462) #10
  %464 = load i32, ptr %443, align 4, !tbaa !5
  %465 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %455, ptr noundef nonnull %.str.9.sink859, i32 noundef %456, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 59, ptr noundef %459, ptr noundef %461, ptr noundef %463, i32 noundef %464) #12
  call void @exit(i32 noundef 1) #13
  unreachable

466:                                              ; preds = %437
  %467 = add nsw i32 %349, 4
  store i32 %467, ptr @test_count, align 4, !tbaa !5
  %468 = getelementptr inbounds i8, ptr %136, i64 656
  %469 = load ptr, ptr %468, align 8, !tbaa !51
  %470 = icmp eq ptr %469, null
  br i1 %470, label %495, label %471

471:                                              ; preds = %466
  %472 = tail call ptr @__errno_location() #11
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = load ptr, ptr @stderr, align 8, !tbaa !9
  %475 = call i32 @s2n_print_stacktrace(ptr noundef %474) #10
  %476 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %477 = trunc nuw i8 %476 to i1
  br i1 %477, label %478, label %482

478:                                              ; preds = %471
  %479 = load ptr, ptr @stderr, align 8, !tbaa !9
  %480 = call i32 @fileno(ptr noundef %479) #10
  %481 = call i32 @isatty(i32 noundef %480) #10
  %.not439 = icmp eq i32 %481, 0
  br i1 %.not439, label %482, label %483

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

483:                                              ; preds = %478, %482
  %.str.9.sink870 = phi ptr [ @.str.9, %482 ], [ @.str.6, %478 ]
  store i32 %473, ptr %472, align 4, !tbaa !5
  %484 = load ptr, ptr @stderr, align 8, !tbaa !9
  %485 = load i32, ptr @test_count, align 4, !tbaa !5
  %486 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %487 = load i32, ptr %486, align 4, !tbaa !5
  %488 = call ptr @s2n_strerror(i32 noundef %487, ptr noundef nonnull @.str.8) #10
  %489 = load i32, ptr %486, align 4, !tbaa !5
  %490 = call ptr @s2n_strerror_debug(i32 noundef %489, ptr noundef nonnull @.str.8) #10
  %491 = load i32, ptr %472, align 4, !tbaa !5
  %492 = call ptr @strerror(i32 noundef %491) #10
  %493 = load i32, ptr %472, align 4, !tbaa !5
  %494 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %484, ptr noundef nonnull %.str.9.sink870, i32 noundef %485, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 60, ptr noundef %488, ptr noundef %490, ptr noundef %492, i32 noundef %493) #12
  call void @exit(i32 noundef 1) #13
  unreachable

495:                                              ; preds = %466
  %496 = add nsw i32 %349, 5
  store i32 %496, ptr @test_count, align 4, !tbaa !5
  %497 = call i32 @s2n_choose_supported_group(ptr noundef nonnull %136)
  %498 = icmp eq i32 %497, -1
  br i1 %498, label %499, label %523

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

506:                                              ; preds = %499
  %507 = load ptr, ptr @stderr, align 8, !tbaa !9
  %508 = call i32 @fileno(ptr noundef %507) #10
  %509 = call i32 @isatty(i32 noundef %508) #10
  %.not554 = icmp eq i32 %509, 0
  br i1 %.not554, label %510, label %511

510:                                              ; preds = %506, %499
  br label %511

511:                                              ; preds = %506, %510
  %.str.9.sink881 = phi ptr [ @.str.9, %510 ], [ @.str.6, %506 ]
  store i32 %501, ptr %500, align 4, !tbaa !5
  %512 = load ptr, ptr @stderr, align 8, !tbaa !9
  %513 = load i32, ptr @test_count, align 4, !tbaa !5
  %514 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %515 = load i32, ptr %514, align 4, !tbaa !5
  %516 = call ptr @s2n_strerror(i32 noundef %515, ptr noundef nonnull @.str.8) #10
  %517 = load i32, ptr %514, align 4, !tbaa !5
  %518 = call ptr @s2n_strerror_debug(i32 noundef %517, ptr noundef nonnull @.str.8) #10
  %519 = load i32, ptr %500, align 4, !tbaa !5
  %520 = call ptr @strerror(i32 noundef %519) #10
  %521 = load i32, ptr %500, align 4, !tbaa !5
  %522 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %512, ptr noundef nonnull %.str.9.sink881, i32 noundef %513, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 62, ptr noundef %516, ptr noundef %518, ptr noundef %520, i32 noundef %521) #12
  call void @exit(i32 noundef 1) #13
  unreachable

523:                                              ; preds = %495
  %524 = load i32, ptr @test_count, align 4, !tbaa !5
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr @test_count, align 4, !tbaa !5
  %526 = load ptr, ptr %351, align 8, !tbaa !22
  %527 = icmp eq ptr %526, null
  br i1 %527, label %552, label %528

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

535:                                              ; preds = %528
  %536 = load ptr, ptr @stderr, align 8, !tbaa !9
  %537 = call i32 @fileno(ptr noundef %536) #10
  %538 = call i32 @isatty(i32 noundef %537) #10
  %.not440 = icmp eq i32 %538, 0
  br i1 %.not440, label %539, label %540

539:                                              ; preds = %535, %528
  br label %540

540:                                              ; preds = %535, %539
  %.str.9.sink892 = phi ptr [ @.str.9, %539 ], [ @.str.6, %535 ]
  store i32 %530, ptr %529, align 4, !tbaa !5
  %541 = load ptr, ptr @stderr, align 8, !tbaa !9
  %542 = load i32, ptr @test_count, align 4, !tbaa !5
  %543 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %544 = load i32, ptr %543, align 4, !tbaa !5
  %545 = call ptr @s2n_strerror(i32 noundef %544, ptr noundef nonnull @.str.8) #10
  %546 = load i32, ptr %543, align 4, !tbaa !5
  %547 = call ptr @s2n_strerror_debug(i32 noundef %546, ptr noundef nonnull @.str.8) #10
  %548 = load i32, ptr %529, align 4, !tbaa !5
  %549 = call ptr @strerror(i32 noundef %548) #10
  %550 = load i32, ptr %529, align 4, !tbaa !5
  %551 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %541, ptr noundef nonnull %.str.9.sink892, i32 noundef %542, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 64, ptr noundef %545, ptr noundef %547, ptr noundef %549, i32 noundef %550) #12
  call void @exit(i32 noundef 1) #13
  unreachable

552:                                              ; preds = %523
  %553 = add nsw i32 %524, 2
  store i32 %553, ptr @test_count, align 4, !tbaa !5
  %554 = load ptr, ptr %410, align 8, !tbaa !49
  %555 = icmp eq ptr %554, null
  br i1 %555, label %580, label %556

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

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
  %.not441 = icmp eq i32 %566, 0
  br i1 %.not441, label %567, label %568

567:                                              ; preds = %563, %556
  br label %568

568:                                              ; preds = %563, %567
  %.str.9.sink903 = phi ptr [ @.str.9, %567 ], [ @.str.6, %563 ]
  store i32 %558, ptr %557, align 4, !tbaa !5
  %569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %570 = load i32, ptr @test_count, align 4, !tbaa !5
  %571 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %572 = load i32, ptr %571, align 4, !tbaa !5
  %573 = call ptr @s2n_strerror(i32 noundef %572, ptr noundef nonnull @.str.8) #10
  %574 = load i32, ptr %571, align 4, !tbaa !5
  %575 = call ptr @s2n_strerror_debug(i32 noundef %574, ptr noundef nonnull @.str.8) #10
  %576 = load i32, ptr %557, align 4, !tbaa !5
  %577 = call ptr @strerror(i32 noundef %576) #10
  %578 = load i32, ptr %557, align 4, !tbaa !5
  %579 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %569, ptr noundef nonnull %.str.9.sink903, i32 noundef %570, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 65, ptr noundef %573, ptr noundef %575, ptr noundef %577, i32 noundef %578) #12
  call void @exit(i32 noundef 1) #13
  unreachable

580:                                              ; preds = %552
  %581 = add nsw i32 %524, 3
  store i32 %581, ptr @test_count, align 4, !tbaa !5
  %582 = load ptr, ptr %439, align 8, !tbaa !50
  %583 = icmp eq ptr %582, null
  br i1 %583, label %608, label %584

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

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

595:                                              ; preds = %591, %584
  br label %596

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

608:                                              ; preds = %580
  %609 = add nsw i32 %524, 4
  store i32 %609, ptr @test_count, align 4, !tbaa !5
  %610 = load ptr, ptr %468, align 8, !tbaa !51
  %611 = icmp eq ptr %610, null
  br i1 %611, label %636, label %612

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

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

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

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

636:                                              ; preds = %608
  %637 = add nsw i32 %524, 5
  store i32 %637, ptr @test_count, align 4, !tbaa !5
  %638 = call i32 @s2n_connection_free(ptr noundef nonnull %136) #10
  %639 = icmp eq i32 %638, -1
  br i1 %639, label %640, label %664

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

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

651:                                              ; preds = %647, %640
  br label %652

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

664:                                              ; preds = %636
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #10
  %665 = load i32, ptr @test_count, align 4, !tbaa !5
  %666 = add nsw i32 %665, 1
  store i32 %666, ptr @test_count, align 4, !tbaa !5
  %667 = call ptr @s2n_connection_new(i32 noundef 0) #10
  %668 = icmp eq ptr %667, null
  br i1 %668, label %669, label %693

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

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

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

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

693:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  store ptr null, ptr %3, align 8, !tbaa !9
  %694 = load i32, ptr @test_count, align 4, !tbaa !5
  %695 = add nsw i32 %694, 1
  store i32 %695, ptr @test_count, align 4, !tbaa !5
  %696 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %667, ptr noundef nonnull %3) #10
  %697 = icmp eq i32 %696, -1
  br i1 %697, label %698, label %722

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

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

709:                                              ; preds = %705, %698
  br label %710

710:                                              ; preds = %705, %709
  %.str.9.sink958 = phi ptr [ @.str.9, %709 ], [ @.str.6, %705 ]
  store i32 %700, ptr %699, align 4, !tbaa !5
  %711 = load ptr, ptr @stderr, align 8, !tbaa !9
  %712 = load i32, ptr @test_count, align 4, !tbaa !5
  %713 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %714 = load i32, ptr %713, align 4, !tbaa !5
  %715 = call ptr @s2n_strerror(i32 noundef %714, ptr noundef nonnull @.str.8) #10
  %716 = load i32, ptr %713, align 4, !tbaa !5
  %717 = call ptr @s2n_strerror_debug(i32 noundef %716, ptr noundef nonnull @.str.8) #10
  %718 = load i32, ptr %699, align 4, !tbaa !5
  %719 = call ptr @strerror(i32 noundef %718) #10
  %720 = load i32, ptr %699, align 4, !tbaa !5
  %721 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %711, ptr noundef nonnull %.str.9.sink958, i32 noundef %712, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.5, i32 noundef 78, ptr noundef %715, ptr noundef %717, ptr noundef %719, i32 noundef %720) #12
  call void @exit(i32 noundef 1) #13
  unreachable

722:                                              ; preds = %693
  %723 = load i32, ptr @test_count, align 4, !tbaa !5
  %724 = add nsw i32 %723, 1
  store i32 %724, ptr @test_count, align 4, !tbaa !5
  %725 = load ptr, ptr %3, align 8, !tbaa !9
  %726 = icmp eq ptr %725, null
  br i1 %726, label %727, label %751

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

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

738:                                              ; preds = %734, %727
  br label %739

739:                                              ; preds = %734, %738
  %.str.9.sink969 = phi ptr [ @.str.9, %738 ], [ @.str.6, %734 ]
  store i32 %729, ptr %728, align 4, !tbaa !5
  %740 = load ptr, ptr @stderr, align 8, !tbaa !9
  %741 = load i32, ptr @test_count, align 4, !tbaa !5
  %742 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %743 = load i32, ptr %742, align 4, !tbaa !5
  %744 = call ptr @s2n_strerror(i32 noundef %743, ptr noundef nonnull @.str.8) #10
  %745 = load i32, ptr %742, align 4, !tbaa !5
  %746 = call ptr @s2n_strerror_debug(i32 noundef %745, ptr noundef nonnull @.str.8) #10
  %747 = load i32, ptr %728, align 4, !tbaa !5
  %748 = call ptr @strerror(i32 noundef %747) #10
  %749 = load i32, ptr %728, align 4, !tbaa !5
  %750 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %740, ptr noundef nonnull %.str.9.sink969, i32 noundef %741, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 79, ptr noundef %744, ptr noundef %746, ptr noundef %748, i32 noundef %749) #12
  call void @exit(i32 noundef 1) #13
  unreachable

751:                                              ; preds = %722
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  store ptr null, ptr %4, align 8, !tbaa !9
  %752 = add nsw i32 %723, 2
  store i32 %752, ptr @test_count, align 4, !tbaa !5
  %753 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %667, ptr noundef nonnull %4) #10
  %754 = icmp eq i32 %753, -1
  br i1 %754, label %755, label %779

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

762:                                              ; preds = %755
  %763 = load ptr, ptr @stderr, align 8, !tbaa !9
  %764 = call i32 @fileno(ptr noundef %763) #10
  %765 = call i32 @isatty(i32 noundef %764) #10
  %.not549 = icmp eq i32 %765, 0
  br i1 %.not549, label %766, label %767

766:                                              ; preds = %762, %755
  br label %767

767:                                              ; preds = %762, %766
  %.str.9.sink980 = phi ptr [ @.str.9, %766 ], [ @.str.6, %762 ]
  store i32 %757, ptr %756, align 4, !tbaa !5
  %768 = load ptr, ptr @stderr, align 8, !tbaa !9
  %769 = load i32, ptr @test_count, align 4, !tbaa !5
  %770 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %771 = load i32, ptr %770, align 4, !tbaa !5
  %772 = call ptr @s2n_strerror(i32 noundef %771, ptr noundef nonnull @.str.8) #10
  %773 = load i32, ptr %770, align 4, !tbaa !5
  %774 = call ptr @s2n_strerror_debug(i32 noundef %773, ptr noundef nonnull @.str.8) #10
  %775 = load i32, ptr %756, align 4, !tbaa !5
  %776 = call ptr @strerror(i32 noundef %775) #10
  %777 = load i32, ptr %756, align 4, !tbaa !5
  %778 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %768, ptr noundef nonnull %.str.9.sink980, i32 noundef %769, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.5, i32 noundef 82, ptr noundef %772, ptr noundef %774, ptr noundef %776, i32 noundef %777) #12
  call void @exit(i32 noundef 1) #13
  unreachable

779:                                              ; preds = %751
  %780 = load i32, ptr @test_count, align 4, !tbaa !5
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr @test_count, align 4, !tbaa !5
  %782 = load ptr, ptr %4, align 8, !tbaa !9
  %783 = icmp eq ptr %782, null
  br i1 %783, label %784, label %808

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

791:                                              ; preds = %784
  %792 = load ptr, ptr @stderr, align 8, !tbaa !9
  %793 = call i32 @fileno(ptr noundef %792) #10
  %794 = call i32 @isatty(i32 noundef %793) #10
  %.not548 = icmp eq i32 %794, 0
  br i1 %.not548, label %795, label %796

795:                                              ; preds = %791, %784
  br label %796

796:                                              ; preds = %791, %795
  %.str.9.sink991 = phi ptr [ @.str.9, %795 ], [ @.str.6, %791 ]
  store i32 %786, ptr %785, align 4, !tbaa !5
  %797 = load ptr, ptr @stderr, align 8, !tbaa !9
  %798 = load i32, ptr @test_count, align 4, !tbaa !5
  %799 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %800 = load i32, ptr %799, align 4, !tbaa !5
  %801 = call ptr @s2n_strerror(i32 noundef %800, ptr noundef nonnull @.str.8) #10
  %802 = load i32, ptr %799, align 4, !tbaa !5
  %803 = call ptr @s2n_strerror_debug(i32 noundef %802, ptr noundef nonnull @.str.8) #10
  %804 = load i32, ptr %785, align 4, !tbaa !5
  %805 = call ptr @strerror(i32 noundef %804) #10
  %806 = load i32, ptr %785, align 4, !tbaa !5
  %807 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %797, ptr noundef nonnull %.str.9.sink991, i32 noundef %798, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.5, i32 noundef 83, ptr noundef %801, ptr noundef %803, ptr noundef %805, i32 noundef %806) #12
  call void @exit(i32 noundef 1) #13
  unreachable

808:                                              ; preds = %779
  %809 = add nsw i32 %780, 2
  store i32 %809, ptr @test_count, align 4, !tbaa !5
  %810 = icmp eq ptr %782, @kem_preferences_null
  br i1 %810, label %835, label %811

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

818:                                              ; preds = %811
  %819 = load ptr, ptr @stderr, align 8, !tbaa !9
  %820 = call i32 @fileno(ptr noundef %819) #10
  %821 = call i32 @isatty(i32 noundef %820) #10
  %.not444 = icmp eq i32 %821, 0
  br i1 %.not444, label %822, label %823

822:                                              ; preds = %818, %811
  br label %823

823:                                              ; preds = %818, %822
  %.str.9.sink1002 = phi ptr [ @.str.9, %822 ], [ @.str.6, %818 ]
  store i32 %813, ptr %812, align 4, !tbaa !5
  %824 = load ptr, ptr @stderr, align 8, !tbaa !9
  %825 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %827, ptr noundef nonnull @.str.8) #10
  %829 = load i32, ptr %826, align 4, !tbaa !5
  %830 = call ptr @s2n_strerror_debug(i32 noundef %829, ptr noundef nonnull @.str.8) #10
  %831 = load i32, ptr %812, align 4, !tbaa !5
  %832 = call ptr @strerror(i32 noundef %831) #10
  %833 = load i32, ptr %812, align 4, !tbaa !5
  %834 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %824, ptr noundef nonnull %.str.9.sink1002, i32 noundef %825, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.5, i32 noundef 84, ptr noundef %828, ptr noundef %830, ptr noundef %832, i32 noundef %833) #12
  call void @exit(i32 noundef 1) #13
  unreachable

835:                                              ; preds = %808
  %836 = add nsw i32 %780, 3
  store i32 %836, ptr @test_count, align 4, !tbaa !5
  %837 = getelementptr inbounds i8, ptr %667, i64 720
  %838 = load ptr, ptr %837, align 8, !tbaa !22
  %839 = icmp eq ptr %838, null
  br i1 %839, label %864, label %840

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

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

851:                                              ; preds = %847, %840
  br label %852

852:                                              ; preds = %847, %851
  %.str.9.sink1013 = phi ptr [ @.str.9, %851 ], [ @.str.6, %847 ]
  store i32 %842, ptr %841, align 4, !tbaa !5
  %853 = load ptr, ptr @stderr, align 8, !tbaa !9
  %854 = load i32, ptr @test_count, align 4, !tbaa !5
  %855 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %856 = load i32, ptr %855, align 4, !tbaa !5
  %857 = call ptr @s2n_strerror(i32 noundef %856, ptr noundef nonnull @.str.8) #10
  %858 = load i32, ptr %855, align 4, !tbaa !5
  %859 = call ptr @s2n_strerror_debug(i32 noundef %858, ptr noundef nonnull @.str.8) #10
  %860 = load i32, ptr %841, align 4, !tbaa !5
  %861 = call ptr @strerror(i32 noundef %860) #10
  %862 = load i32, ptr %841, align 4, !tbaa !5
  %863 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %853, ptr noundef nonnull %.str.9.sink1013, i32 noundef %854, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 86, ptr noundef %857, ptr noundef %859, ptr noundef %861, i32 noundef %862) #12
  call void @exit(i32 noundef 1) #13
  unreachable

864:                                              ; preds = %835
  %865 = add nsw i32 %780, 4
  store i32 %865, ptr @test_count, align 4, !tbaa !5
  %866 = getelementptr inbounds i8, ptr %667, i64 816
  %867 = load ptr, ptr %866, align 8, !tbaa !49
  %868 = icmp eq ptr %867, null
  br i1 %868, label %893, label %869

869:                                              ; preds = %864
  %870 = tail call ptr @__errno_location() #11
  %871 = load i32, ptr %870, align 4, !tbaa !5
  %872 = load ptr, ptr @stderr, align 8, !tbaa !9
  %873 = call i32 @s2n_print_stacktrace(ptr noundef %872) #10
  %874 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %875 = trunc nuw i8 %874 to i1
  br i1 %875, label %876, label %880

876:                                              ; preds = %869
  %877 = load ptr, ptr @stderr, align 8, !tbaa !9
  %878 = call i32 @fileno(ptr noundef %877) #10
  %879 = call i32 @isatty(i32 noundef %878) #10
  %.not446 = icmp eq i32 %879, 0
  br i1 %.not446, label %880, label %881

880:                                              ; preds = %876, %869
  br label %881

881:                                              ; preds = %876, %880
  %.str.9.sink1024 = phi ptr [ @.str.9, %880 ], [ @.str.6, %876 ]
  store i32 %871, ptr %870, align 4, !tbaa !5
  %882 = load ptr, ptr @stderr, align 8, !tbaa !9
  %883 = load i32, ptr @test_count, align 4, !tbaa !5
  %884 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %885 = load i32, ptr %884, align 4, !tbaa !5
  %886 = call ptr @s2n_strerror(i32 noundef %885, ptr noundef nonnull @.str.8) #10
  %887 = load i32, ptr %884, align 4, !tbaa !5
  %888 = call ptr @s2n_strerror_debug(i32 noundef %887, ptr noundef nonnull @.str.8) #10
  %889 = load i32, ptr %870, align 4, !tbaa !5
  %890 = call ptr @strerror(i32 noundef %889) #10
  %891 = load i32, ptr %870, align 4, !tbaa !5
  %892 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %882, ptr noundef nonnull %.str.9.sink1024, i32 noundef %883, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 87, ptr noundef %886, ptr noundef %888, ptr noundef %890, i32 noundef %891) #12
  call void @exit(i32 noundef 1) #13
  unreachable

893:                                              ; preds = %864
  %894 = add nsw i32 %780, 5
  store i32 %894, ptr @test_count, align 4, !tbaa !5
  %895 = getelementptr inbounds i8, ptr %667, i64 728
  %896 = load ptr, ptr %895, align 8, !tbaa !50
  %897 = icmp eq ptr %896, null
  br i1 %897, label %922, label %898

898:                                              ; preds = %893
  %899 = tail call ptr @__errno_location() #11
  %900 = load i32, ptr %899, align 4, !tbaa !5
  %901 = load ptr, ptr @stderr, align 8, !tbaa !9
  %902 = call i32 @s2n_print_stacktrace(ptr noundef %901) #10
  %903 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %904 = trunc nuw i8 %903 to i1
  br i1 %904, label %905, label %909

905:                                              ; preds = %898
  %906 = load ptr, ptr @stderr, align 8, !tbaa !9
  %907 = call i32 @fileno(ptr noundef %906) #10
  %908 = call i32 @isatty(i32 noundef %907) #10
  %.not447 = icmp eq i32 %908, 0
  br i1 %.not447, label %909, label %910

909:                                              ; preds = %905, %898
  br label %910

910:                                              ; preds = %905, %909
  %.str.9.sink1035 = phi ptr [ @.str.9, %909 ], [ @.str.6, %905 ]
  store i32 %900, ptr %899, align 4, !tbaa !5
  %911 = load ptr, ptr @stderr, align 8, !tbaa !9
  %912 = load i32, ptr @test_count, align 4, !tbaa !5
  %913 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %914 = load i32, ptr %913, align 4, !tbaa !5
  %915 = call ptr @s2n_strerror(i32 noundef %914, ptr noundef nonnull @.str.8) #10
  %916 = load i32, ptr %913, align 4, !tbaa !5
  %917 = call ptr @s2n_strerror_debug(i32 noundef %916, ptr noundef nonnull @.str.8) #10
  %918 = load i32, ptr %899, align 4, !tbaa !5
  %919 = call ptr @strerror(i32 noundef %918) #10
  %920 = load i32, ptr %899, align 4, !tbaa !5
  %921 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %911, ptr noundef nonnull %.str.9.sink1035, i32 noundef %912, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 88, ptr noundef %915, ptr noundef %917, ptr noundef %919, i32 noundef %920) #12
  call void @exit(i32 noundef 1) #13
  unreachable

922:                                              ; preds = %893
  %923 = add nsw i32 %780, 6
  store i32 %923, ptr @test_count, align 4, !tbaa !5
  %924 = getelementptr inbounds i8, ptr %667, i64 656
  %925 = load ptr, ptr %924, align 8, !tbaa !51
  %926 = icmp eq ptr %925, null
  br i1 %926, label %.preheader576, label %933

.preheader576:                                    ; preds = %922
  %927 = load ptr, ptr %3, align 8, !tbaa !9
  %928 = load i8, ptr %927, align 8, !tbaa !15
  %929 = zext i8 %928 to i64
  %.not644 = icmp eq i8 %928, 0
  br i1 %.not644, label %.preheader575, label %.lr.ph592

.lr.ph592:                                        ; preds = %.preheader576
  %930 = getelementptr inbounds i8, ptr %667, i64 672
  %931 = zext i8 %928 to i32
  %932 = add i32 %923, %931
  br label %962

933:                                              ; preds = %922
  %934 = tail call ptr @__errno_location() #11
  %935 = load i32, ptr %934, align 4, !tbaa !5
  %936 = load ptr, ptr @stderr, align 8, !tbaa !9
  %937 = call i32 @s2n_print_stacktrace(ptr noundef %936) #10
  %938 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %939 = trunc nuw i8 %938 to i1
  br i1 %939, label %940, label %944

940:                                              ; preds = %933
  %941 = load ptr, ptr @stderr, align 8, !tbaa !9
  %942 = call i32 @fileno(ptr noundef %941) #10
  %943 = call i32 @isatty(i32 noundef %942) #10
  %.not448 = icmp eq i32 %943, 0
  br i1 %.not448, label %944, label %945

944:                                              ; preds = %940, %933
  br label %945

945:                                              ; preds = %940, %944
  %.str.9.sink1046 = phi ptr [ @.str.9, %944 ], [ @.str.6, %940 ]
  store i32 %935, ptr %934, 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 nonnull @.str.8) #10
  %951 = load i32, ptr %948, align 4, !tbaa !5
  %952 = call ptr @s2n_strerror_debug(i32 noundef %951, ptr noundef nonnull @.str.8) #10
  %953 = load i32, ptr %934, align 4, !tbaa !5
  %954 = call ptr @strerror(i32 noundef %953) #10
  %955 = load i32, ptr %934, align 4, !tbaa !5
  %956 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %946, ptr noundef nonnull %.str.9.sink1046, i32 noundef %947, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 89, ptr noundef %950, ptr noundef %952, ptr noundef %954, i32 noundef %955) #12
  call void @exit(i32 noundef 1) #13
  unreachable

957:                                              ; preds = %962
  %958 = add nuw nsw i64 %.0412591, 1
  %exitcond674.not = icmp eq i64 %958, %929
  br i1 %exitcond674.not, label %..preheader575_crit_edge, label %962, !llvm.loop !52

..preheader575_crit_edge:                         ; preds = %957
  store i32 %932, ptr @test_count, align 4, !tbaa !5
  br label %.preheader575

.preheader575:                                    ; preds = %..preheader575_crit_edge, %.preheader576
  %test_count.promoted595 = phi i32 [ %932, %..preheader575_crit_edge ], [ %923, %.preheader576 ]
  br i1 %.not643, label %._crit_edge598, label %.lr.ph597

.lr.ph597:                                        ; preds = %.preheader575
  %959 = getelementptr inbounds i8, ptr %667, i64 944
  %960 = zext i8 %312 to i32
  %961 = add i32 %test_count.promoted595, %960
  br label %1003

962:                                              ; preds = %.lr.ph592, %957
  %.0412591 = phi i64 [ 0, %.lr.ph592 ], [ %958, %957 ]
  %963 = phi i32 [ %923, %.lr.ph592 ], [ %964, %957 ]
  %964 = add nsw i32 %963, 1
  %965 = getelementptr inbounds [4 x ptr], ptr %930, i64 0, i64 %.0412591
  %966 = load ptr, ptr %965, align 8, !tbaa !9
  %967 = icmp eq ptr %966, null
  br i1 %967, label %957, label %968

968:                                              ; preds = %962
  store i32 %964, ptr @test_count, align 4, !tbaa !5
  %969 = tail call ptr @__errno_location() #11
  %970 = load i32, ptr %969, align 4, !tbaa !5
  %971 = load ptr, ptr @stderr, align 8, !tbaa !9
  %972 = call i32 @s2n_print_stacktrace(ptr noundef %971) #10
  %973 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %974 = trunc nuw i8 %973 to i1
  br i1 %974, label %975, label %979

975:                                              ; preds = %968
  %976 = load ptr, ptr @stderr, align 8, !tbaa !9
  %977 = call i32 @fileno(ptr noundef %976) #10
  %978 = call i32 @isatty(i32 noundef %977) #10
  %.not547 = icmp eq i32 %978, 0
  br i1 %.not547, label %979, label %980

979:                                              ; preds = %975, %968
  br label %980

980:                                              ; preds = %975, %979
  %.str.9.sink1057 = phi ptr [ @.str.9, %979 ], [ @.str.6, %975 ]
  store i32 %970, ptr %969, align 4, !tbaa !5
  %981 = load ptr, ptr @stderr, align 8, !tbaa !9
  %982 = load i32, ptr @test_count, align 4, !tbaa !5
  %983 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %984 = load i32, ptr %983, align 4, !tbaa !5
  %985 = call ptr @s2n_strerror(i32 noundef %984, ptr noundef nonnull @.str.8) #10
  %986 = load i32, ptr %983, align 4, !tbaa !5
  %987 = call ptr @s2n_strerror_debug(i32 noundef %986, ptr noundef nonnull @.str.8) #10
  %988 = load i32, ptr %969, align 4, !tbaa !5
  %989 = call ptr @strerror(i32 noundef %988) #10
  %990 = load i32, ptr %969, align 4, !tbaa !5
  %991 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %981, ptr noundef nonnull %.str.9.sink1057, i32 noundef %982, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.5, i32 noundef 92, ptr noundef %985, ptr noundef %987, ptr noundef %989, i32 noundef %990) #12
  call void @exit(i32 noundef 1) #13
  unreachable

992:                                              ; preds = %1003
  %993 = add nuw nsw i64 %.0413596, 1
  %exitcond675.not = icmp eq i64 %993, %313
  br i1 %exitcond675.not, label %._crit_edge598, label %1003, !llvm.loop !53

._crit_edge598:                                   ; preds = %992, %.preheader575
  %994 = phi i32 [ %test_count.promoted595, %.preheader575 ], [ %961, %992 ]
  %995 = getelementptr inbounds i8, ptr %927, i64 8
  %996 = load ptr, ptr %995, align 8, !tbaa !54
  %997 = getelementptr inbounds i8, ptr %996, i64 8
  %998 = load ptr, ptr %997, align 8, !tbaa !9
  %999 = getelementptr inbounds i8, ptr %667, i64 680
  store ptr %998, ptr %999, align 8, !tbaa !9
  %1000 = add nsw i32 %994, 1
  store i32 %1000, ptr @test_count, align 4, !tbaa !5
  %1001 = call i32 @s2n_choose_supported_group(ptr noundef nonnull %667)
  %1002 = icmp eq i32 %1001, -1
  br i1 %1002, label %1033, label %1057

1003:                                             ; preds = %.lr.ph597, %992
  %.0413596 = phi i64 [ 0, %.lr.ph597 ], [ %993, %992 ]
  %1004 = phi i32 [ %test_count.promoted595, %.lr.ph597 ], [ %1005, %992 ]
  %1005 = add nsw i32 %1004, 1
  %1006 = getelementptr inbounds [8 x ptr], ptr %959, i64 0, i64 %.0413596
  %1007 = load ptr, ptr %1006, align 8, !tbaa !9
  %1008 = icmp eq ptr %1007, null
  br i1 %1008, label %992, label %1009

1009:                                             ; preds = %1003
  store i32 %1005, ptr @test_count, align 4, !tbaa !5
  %1010 = tail call ptr @__errno_location() #11
  %1011 = load i32, ptr %1010, align 4, !tbaa !5
  %1012 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1013 = call i32 @s2n_print_stacktrace(ptr noundef %1012) #10
  %1014 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1015 = trunc nuw i8 %1014 to i1
  br i1 %1015, label %1016, label %1020

1016:                                             ; preds = %1009
  %1017 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1018 = call i32 @fileno(ptr noundef %1017) #10
  %1019 = call i32 @isatty(i32 noundef %1018) #10
  %.not546 = icmp eq i32 %1019, 0
  br i1 %.not546, label %1020, label %1021

1020:                                             ; preds = %1016, %1009
  br label %1021

1021:                                             ; preds = %1016, %1020
  %.str.9.sink1068 = phi ptr [ @.str.9, %1020 ], [ @.str.6, %1016 ]
  store i32 %1011, ptr %1010, align 4, !tbaa !5
  %1022 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1023 = load i32, ptr @test_count, align 4, !tbaa !5
  %1024 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1025 = load i32, ptr %1024, align 4, !tbaa !5
  %1026 = call ptr @s2n_strerror(i32 noundef %1025, ptr noundef nonnull @.str.8) #10
  %1027 = load i32, ptr %1024, align 4, !tbaa !5
  %1028 = call ptr @s2n_strerror_debug(i32 noundef %1027, ptr noundef nonnull @.str.8) #10
  %1029 = load i32, ptr %1010, align 4, !tbaa !5
  %1030 = call ptr @strerror(i32 noundef %1029) #10
  %1031 = load i32, ptr %1010, align 4, !tbaa !5
  %1032 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1022, ptr noundef nonnull %.str.9.sink1068, i32 noundef %1023, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, i32 noundef 96, ptr noundef %1026, ptr noundef %1028, ptr noundef %1030, i32 noundef %1031) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1033:                                             ; preds = %._crit_edge598
  %1034 = tail call ptr @__errno_location() #11
  %1035 = load i32, ptr %1034, align 4, !tbaa !5
  %1036 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1037 = call i32 @s2n_print_stacktrace(ptr noundef %1036) #10
  %1038 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1039 = trunc nuw i8 %1038 to i1
  br i1 %1039, label %1040, label %1044

1040:                                             ; preds = %1033
  %1041 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1042 = call i32 @fileno(ptr noundef %1041) #10
  %1043 = call i32 @isatty(i32 noundef %1042) #10
  %.not545 = icmp eq i32 %1043, 0
  br i1 %.not545, label %1044, label %1045

1044:                                             ; preds = %1040, %1033
  br label %1045

1045:                                             ; preds = %1040, %1044
  %.str.9.sink1079 = phi ptr [ @.str.9, %1044 ], [ @.str.6, %1040 ]
  store i32 %1035, ptr %1034, align 4, !tbaa !5
  %1046 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1047 = load i32, ptr @test_count, align 4, !tbaa !5
  %1048 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1049 = load i32, ptr %1048, align 4, !tbaa !5
  %1050 = call ptr @s2n_strerror(i32 noundef %1049, ptr noundef nonnull @.str.8) #10
  %1051 = load i32, ptr %1048, align 4, !tbaa !5
  %1052 = call ptr @s2n_strerror_debug(i32 noundef %1051, ptr noundef nonnull @.str.8) #10
  %1053 = load i32, ptr %1034, align 4, !tbaa !5
  %1054 = call ptr @strerror(i32 noundef %1053) #10
  %1055 = load i32, ptr %1034, align 4, !tbaa !5
  %1056 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1046, ptr noundef nonnull %.str.9.sink1079, i32 noundef %1047, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 100, ptr noundef %1050, ptr noundef %1052, ptr noundef %1054, i32 noundef %1055) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1057:                                             ; preds = %._crit_edge598
  %1058 = load i32, ptr @test_count, align 4, !tbaa !5
  %1059 = add nsw i32 %1058, 1
  store i32 %1059, ptr @test_count, align 4, !tbaa !5
  %1060 = load ptr, ptr %837, align 8, !tbaa !22
  %1061 = icmp eq ptr %1060, null
  br i1 %1061, label %1086, label %1062

1062:                                             ; preds = %1057
  %1063 = tail call ptr @__errno_location() #11
  %1064 = load i32, ptr %1063, align 4, !tbaa !5
  %1065 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1066 = call i32 @s2n_print_stacktrace(ptr noundef %1065) #10
  %1067 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1068 = trunc nuw i8 %1067 to i1
  br i1 %1068, label %1069, label %1073

1069:                                             ; preds = %1062
  %1070 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1071 = call i32 @fileno(ptr noundef %1070) #10
  %1072 = call i32 @isatty(i32 noundef %1071) #10
  %.not449 = icmp eq i32 %1072, 0
  br i1 %.not449, label %1073, label %1074

1073:                                             ; preds = %1069, %1062
  br label %1074

1074:                                             ; preds = %1069, %1073
  %.str.9.sink1090 = phi ptr [ @.str.9, %1073 ], [ @.str.6, %1069 ]
  store i32 %1064, ptr %1063, align 4, !tbaa !5
  %1075 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1076 = load i32, ptr @test_count, align 4, !tbaa !5
  %1077 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1078 = load i32, ptr %1077, align 4, !tbaa !5
  %1079 = call ptr @s2n_strerror(i32 noundef %1078, ptr noundef nonnull @.str.8) #10
  %1080 = load i32, ptr %1077, align 4, !tbaa !5
  %1081 = call ptr @s2n_strerror_debug(i32 noundef %1080, ptr noundef nonnull @.str.8) #10
  %1082 = load i32, ptr %1063, align 4, !tbaa !5
  %1083 = call ptr @strerror(i32 noundef %1082) #10
  %1084 = load i32, ptr %1063, align 4, !tbaa !5
  %1085 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1075, ptr noundef nonnull %.str.9.sink1090, i32 noundef %1076, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 102, ptr noundef %1079, ptr noundef %1081, ptr noundef %1083, i32 noundef %1084) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1086:                                             ; preds = %1057
  %1087 = add nsw i32 %1058, 2
  store i32 %1087, ptr @test_count, align 4, !tbaa !5
  %1088 = load ptr, ptr %866, align 8, !tbaa !49
  %1089 = icmp eq ptr %1088, null
  br i1 %1089, label %1114, label %1090

1090:                                             ; preds = %1086
  %1091 = tail call ptr @__errno_location() #11
  %1092 = load i32, ptr %1091, align 4, !tbaa !5
  %1093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1094 = call i32 @s2n_print_stacktrace(ptr noundef %1093) #10
  %1095 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1096 = trunc nuw i8 %1095 to i1
  br i1 %1096, label %1097, label %1101

1097:                                             ; preds = %1090
  %1098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1099 = call i32 @fileno(ptr noundef %1098) #10
  %1100 = call i32 @isatty(i32 noundef %1099) #10
  %.not450 = icmp eq i32 %1100, 0
  br i1 %.not450, label %1101, label %1102

1101:                                             ; preds = %1097, %1090
  br label %1102

1102:                                             ; preds = %1097, %1101
  %.str.9.sink1101 = phi ptr [ @.str.9, %1101 ], [ @.str.6, %1097 ]
  store i32 %1092, ptr %1091, align 4, !tbaa !5
  %1103 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1104 = load i32, ptr @test_count, align 4, !tbaa !5
  %1105 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1106 = load i32, ptr %1105, align 4, !tbaa !5
  %1107 = call ptr @s2n_strerror(i32 noundef %1106, ptr noundef nonnull @.str.8) #10
  %1108 = load i32, ptr %1105, align 4, !tbaa !5
  %1109 = call ptr @s2n_strerror_debug(i32 noundef %1108, ptr noundef nonnull @.str.8) #10
  %1110 = load i32, ptr %1091, align 4, !tbaa !5
  %1111 = call ptr @strerror(i32 noundef %1110) #10
  %1112 = load i32, ptr %1091, align 4, !tbaa !5
  %1113 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1103, ptr noundef nonnull %.str.9.sink1101, i32 noundef %1104, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 103, ptr noundef %1107, ptr noundef %1109, ptr noundef %1111, i32 noundef %1112) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1114:                                             ; preds = %1086
  %1115 = add nsw i32 %1058, 3
  store i32 %1115, ptr @test_count, align 4, !tbaa !5
  %1116 = load ptr, ptr %895, align 8, !tbaa !50
  %1117 = icmp eq ptr %1116, null
  br i1 %1117, label %1142, label %1118

1118:                                             ; preds = %1114
  %1119 = tail call ptr @__errno_location() #11
  %1120 = load i32, ptr %1119, align 4, !tbaa !5
  %1121 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1122 = call i32 @s2n_print_stacktrace(ptr noundef %1121) #10
  %1123 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1124 = trunc nuw i8 %1123 to i1
  br i1 %1124, label %1125, label %1129

1125:                                             ; preds = %1118
  %1126 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1127 = call i32 @fileno(ptr noundef %1126) #10
  %1128 = call i32 @isatty(i32 noundef %1127) #10
  %.not451 = icmp eq i32 %1128, 0
  br i1 %.not451, label %1129, label %1130

1129:                                             ; preds = %1125, %1118
  br label %1130

1130:                                             ; preds = %1125, %1129
  %.str.9.sink1112 = phi ptr [ @.str.9, %1129 ], [ @.str.6, %1125 ]
  store i32 %1120, ptr %1119, align 4, !tbaa !5
  %1131 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1132 = load i32, ptr @test_count, align 4, !tbaa !5
  %1133 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1134 = load i32, ptr %1133, align 4, !tbaa !5
  %1135 = call ptr @s2n_strerror(i32 noundef %1134, ptr noundef nonnull @.str.8) #10
  %1136 = load i32, ptr %1133, align 4, !tbaa !5
  %1137 = call ptr @s2n_strerror_debug(i32 noundef %1136, ptr noundef nonnull @.str.8) #10
  %1138 = load i32, ptr %1119, align 4, !tbaa !5
  %1139 = call ptr @strerror(i32 noundef %1138) #10
  %1140 = load i32, ptr %1119, align 4, !tbaa !5
  %1141 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1131, ptr noundef nonnull %.str.9.sink1112, i32 noundef %1132, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 104, ptr noundef %1135, ptr noundef %1137, ptr noundef %1139, i32 noundef %1140) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1142:                                             ; preds = %1114
  %1143 = add nsw i32 %1058, 4
  store i32 %1143, ptr @test_count, align 4, !tbaa !5
  %1144 = load ptr, ptr %924, align 8, !tbaa !51
  %1145 = load ptr, ptr %3, align 8, !tbaa !9
  %1146 = getelementptr inbounds i8, ptr %1145, i64 8
  %1147 = load ptr, ptr %1146, align 8, !tbaa !54
  %1148 = getelementptr inbounds i8, ptr %1147, i64 8
  %1149 = load ptr, ptr %1148, align 8, !tbaa !9
  %1150 = icmp eq ptr %1144, %1149
  br i1 %1150, label %1175, label %1151

1151:                                             ; preds = %1142
  %1152 = tail call ptr @__errno_location() #11
  %1153 = load i32, ptr %1152, align 4, !tbaa !5
  %1154 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1155 = call i32 @s2n_print_stacktrace(ptr noundef %1154) #10
  %1156 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1157 = trunc nuw i8 %1156 to i1
  br i1 %1157, label %1158, label %1162

1158:                                             ; preds = %1151
  %1159 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1160 = call i32 @fileno(ptr noundef %1159) #10
  %1161 = call i32 @isatty(i32 noundef %1160) #10
  %.not452 = icmp eq i32 %1161, 0
  br i1 %.not452, label %1162, label %1163

1162:                                             ; preds = %1158, %1151
  br label %1163

1163:                                             ; preds = %1158, %1162
  %.str.9.sink1123 = phi ptr [ @.str.9, %1162 ], [ @.str.6, %1158 ]
  store i32 %1153, ptr %1152, align 4, !tbaa !5
  %1164 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1165 = load i32, ptr @test_count, align 4, !tbaa !5
  %1166 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1167 = load i32, ptr %1166, align 4, !tbaa !5
  %1168 = call ptr @s2n_strerror(i32 noundef %1167, ptr noundef nonnull @.str.8) #10
  %1169 = load i32, ptr %1166, align 4, !tbaa !5
  %1170 = call ptr @s2n_strerror_debug(i32 noundef %1169, ptr noundef nonnull @.str.8) #10
  %1171 = load i32, ptr %1152, align 4, !tbaa !5
  %1172 = call ptr @strerror(i32 noundef %1171) #10
  %1173 = load i32, ptr %1152, align 4, !tbaa !5
  %1174 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1164, ptr noundef nonnull %.str.9.sink1123, i32 noundef %1165, ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.5, i32 noundef 105, ptr noundef %1168, ptr noundef %1170, ptr noundef %1172, i32 noundef %1173) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1175:                                             ; preds = %1142
  %1176 = add nsw i32 %1058, 5
  store i32 %1176, ptr @test_count, align 4, !tbaa !5
  %1177 = call i32 @s2n_connection_free(ptr noundef nonnull %667) #10
  %1178 = icmp eq i32 %1177, -1
  br i1 %1178, label %1179, label %1203

1179:                                             ; preds = %1175
  %1180 = tail call ptr @__errno_location() #11
  %1181 = load i32, ptr %1180, align 4, !tbaa !5
  %1182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1183 = call i32 @s2n_print_stacktrace(ptr noundef %1182) #10
  %1184 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1185 = trunc nuw i8 %1184 to i1
  br i1 %1185, label %1186, label %1190

1186:                                             ; preds = %1179
  %1187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1188 = call i32 @fileno(ptr noundef %1187) #10
  %1189 = call i32 @isatty(i32 noundef %1188) #10
  %.not544 = icmp eq i32 %1189, 0
  br i1 %.not544, label %1190, label %1191

1190:                                             ; preds = %1186, %1179
  br label %1191

1191:                                             ; preds = %1186, %1190
  %.str.9.sink1134 = phi ptr [ @.str.9, %1190 ], [ @.str.6, %1186 ]
  store i32 %1181, ptr %1180, align 4, !tbaa !5
  %1192 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1193 = load i32, ptr @test_count, align 4, !tbaa !5
  %1194 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1195 = load i32, ptr %1194, align 4, !tbaa !5
  %1196 = call ptr @s2n_strerror(i32 noundef %1195, ptr noundef nonnull @.str.8) #10
  %1197 = load i32, ptr %1194, align 4, !tbaa !5
  %1198 = call ptr @s2n_strerror_debug(i32 noundef %1197, ptr noundef nonnull @.str.8) #10
  %1199 = load i32, ptr %1180, align 4, !tbaa !5
  %1200 = call ptr @strerror(i32 noundef %1199) #10
  %1201 = load i32, ptr %1180, align 4, !tbaa !5
  %1202 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1192, ptr noundef nonnull %.str.9.sink1134, i32 noundef %1193, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, i32 noundef 106, ptr noundef %1196, ptr noundef %1198, ptr noundef %1200, i32 noundef %1201) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1203:                                             ; preds = %1175
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  %1204 = load i32, ptr @test_count, align 4, !tbaa !5
  %1205 = add nsw i32 %1204, 1
  store i32 %1205, ptr @test_count, align 4, !tbaa !5
  %1206 = call ptr @s2n_connection_new(i32 noundef 0) #10
  %1207 = icmp eq ptr %1206, null
  br i1 %1207, label %1208, label %1232

1208:                                             ; preds = %1203
  %1209 = tail call ptr @__errno_location() #11
  %1210 = load i32, ptr %1209, align 4, !tbaa !5
  %1211 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1212 = call i32 @s2n_print_stacktrace(ptr noundef %1211) #10
  %1213 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1214 = trunc nuw i8 %1213 to i1
  br i1 %1214, label %1215, label %1219

1215:                                             ; preds = %1208
  %1216 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1217 = call i32 @fileno(ptr noundef %1216) #10
  %1218 = call i32 @isatty(i32 noundef %1217) #10
  %.not543 = icmp eq i32 %1218, 0
  br i1 %.not543, label %1219, label %1220

1219:                                             ; preds = %1215, %1208
  br label %1220

1220:                                             ; preds = %1215, %1219
  %.str.9.sink1145 = phi ptr [ @.str.9, %1219 ], [ @.str.6, %1215 ]
  store i32 %1210, ptr %1209, align 4, !tbaa !5
  %1221 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1222 = load i32, ptr @test_count, align 4, !tbaa !5
  %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(i32 noundef %1224, ptr noundef nonnull @.str.8) #10
  %1226 = load i32, ptr %1223, align 4, !tbaa !5
  %1227 = call ptr @s2n_strerror_debug(i32 noundef %1226, ptr noundef nonnull @.str.8) #10
  %1228 = load i32, ptr %1209, align 4, !tbaa !5
  %1229 = call ptr @strerror(i32 noundef %1228) #10
  %1230 = load i32, ptr %1209, align 4, !tbaa !5
  %1231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1221, ptr noundef nonnull %.str.9.sink1145, i32 noundef %1222, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 113, ptr noundef %1225, ptr noundef %1227, ptr noundef %1229, i32 noundef %1230) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1232:                                             ; preds = %1203
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  store ptr null, ptr %5, align 8, !tbaa !9
  %1233 = load i32, ptr @test_count, align 4, !tbaa !5
  %1234 = add nsw i32 %1233, 1
  store i32 %1234, ptr @test_count, align 4, !tbaa !5
  %1235 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %1206, ptr noundef nonnull %5) #10
  %1236 = icmp eq i32 %1235, -1
  br i1 %1236, label %1237, label %1261

1237:                                             ; preds = %1232
  %1238 = tail call ptr @__errno_location() #11
  %1239 = load i32, ptr %1238, align 4, !tbaa !5
  %1240 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1241 = call i32 @s2n_print_stacktrace(ptr noundef %1240) #10
  %1242 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1243 = trunc nuw i8 %1242 to i1
  br i1 %1243, label %1244, label %1248

1244:                                             ; preds = %1237
  %1245 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1246 = call i32 @fileno(ptr noundef %1245) #10
  %1247 = call i32 @isatty(i32 noundef %1246) #10
  %.not542 = icmp eq i32 %1247, 0
  br i1 %.not542, label %1248, label %1249

1248:                                             ; preds = %1244, %1237
  br label %1249

1249:                                             ; preds = %1244, %1248
  %.str.9.sink1156 = phi ptr [ @.str.9, %1248 ], [ @.str.6, %1244 ]
  store i32 %1239, ptr %1238, align 4, !tbaa !5
  %1250 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1251 = load i32, ptr @test_count, align 4, !tbaa !5
  %1252 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1253 = load i32, ptr %1252, align 4, !tbaa !5
  %1254 = call ptr @s2n_strerror(i32 noundef %1253, ptr noundef nonnull @.str.8) #10
  %1255 = load i32, ptr %1252, align 4, !tbaa !5
  %1256 = call ptr @s2n_strerror_debug(i32 noundef %1255, ptr noundef nonnull @.str.8) #10
  %1257 = load i32, ptr %1238, align 4, !tbaa !5
  %1258 = call ptr @strerror(i32 noundef %1257) #10
  %1259 = load i32, ptr %1238, align 4, !tbaa !5
  %1260 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1250, ptr noundef nonnull %.str.9.sink1156, i32 noundef %1251, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.5, i32 noundef 116, ptr noundef %1254, ptr noundef %1256, ptr noundef %1258, i32 noundef %1259) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1261:                                             ; preds = %1232
  %1262 = load i32, ptr @test_count, align 4, !tbaa !5
  %1263 = add nsw i32 %1262, 1
  store i32 %1263, ptr @test_count, align 4, !tbaa !5
  %1264 = load ptr, ptr %5, align 8, !tbaa !9
  %1265 = icmp eq ptr %1264, null
  br i1 %1265, label %1266, label %1290

1266:                                             ; preds = %1261
  %1267 = tail call ptr @__errno_location() #11
  %1268 = load i32, ptr %1267, align 4, !tbaa !5
  %1269 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1270 = call i32 @s2n_print_stacktrace(ptr noundef %1269) #10
  %1271 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1272 = trunc nuw i8 %1271 to i1
  br i1 %1272, label %1273, label %1277

1273:                                             ; preds = %1266
  %1274 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1275 = call i32 @fileno(ptr noundef %1274) #10
  %1276 = call i32 @isatty(i32 noundef %1275) #10
  %.not541 = icmp eq i32 %1276, 0
  br i1 %.not541, label %1277, label %1278

1277:                                             ; preds = %1273, %1266
  br label %1278

1278:                                             ; preds = %1273, %1277
  %.str.9.sink1167 = phi ptr [ @.str.9, %1277 ], [ @.str.6, %1273 ]
  store i32 %1268, ptr %1267, align 4, !tbaa !5
  %1279 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1280 = load i32, ptr @test_count, align 4, !tbaa !5
  %1281 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1282 = load i32, ptr %1281, align 4, !tbaa !5
  %1283 = call ptr @s2n_strerror(i32 noundef %1282, ptr noundef nonnull @.str.8) #10
  %1284 = load i32, ptr %1281, align 4, !tbaa !5
  %1285 = call ptr @s2n_strerror_debug(i32 noundef %1284, ptr noundef nonnull @.str.8) #10
  %1286 = load i32, ptr %1267, align 4, !tbaa !5
  %1287 = call ptr @strerror(i32 noundef %1286) #10
  %1288 = load i32, ptr %1267, align 4, !tbaa !5
  %1289 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1279, ptr noundef nonnull %.str.9.sink1167, i32 noundef %1280, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 117, ptr noundef %1283, ptr noundef %1285, ptr noundef %1287, i32 noundef %1288) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1290:                                             ; preds = %1261
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  store ptr null, ptr %6, align 8, !tbaa !9
  %1291 = add nsw i32 %1262, 2
  store i32 %1291, ptr @test_count, align 4, !tbaa !5
  %1292 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %1206, ptr noundef nonnull %6) #10
  %1293 = icmp eq i32 %1292, -1
  br i1 %1293, label %1294, label %1318

1294:                                             ; preds = %1290
  %1295 = tail call ptr @__errno_location() #11
  %1296 = load i32, ptr %1295, align 4, !tbaa !5
  %1297 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1298 = call i32 @s2n_print_stacktrace(ptr noundef %1297) #10
  %1299 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1300 = trunc nuw i8 %1299 to i1
  br i1 %1300, label %1301, label %1305

1301:                                             ; preds = %1294
  %1302 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1303 = call i32 @fileno(ptr noundef %1302) #10
  %1304 = call i32 @isatty(i32 noundef %1303) #10
  %.not540 = icmp eq i32 %1304, 0
  br i1 %.not540, label %1305, label %1306

1305:                                             ; preds = %1301, %1294
  br label %1306

1306:                                             ; preds = %1301, %1305
  %.str.9.sink1178 = phi ptr [ @.str.9, %1305 ], [ @.str.6, %1301 ]
  store i32 %1296, ptr %1295, align 4, !tbaa !5
  %1307 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1308 = load i32, ptr @test_count, align 4, !tbaa !5
  %1309 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1310 = load i32, ptr %1309, align 4, !tbaa !5
  %1311 = call ptr @s2n_strerror(i32 noundef %1310, ptr noundef nonnull @.str.8) #10
  %1312 = load i32, ptr %1309, align 4, !tbaa !5
  %1313 = call ptr @s2n_strerror_debug(i32 noundef %1312, ptr noundef nonnull @.str.8) #10
  %1314 = load i32, ptr %1295, align 4, !tbaa !5
  %1315 = call ptr @strerror(i32 noundef %1314) #10
  %1316 = load i32, ptr %1295, align 4, !tbaa !5
  %1317 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1307, ptr noundef nonnull %.str.9.sink1178, i32 noundef %1308, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.5, i32 noundef 120, ptr noundef %1311, ptr noundef %1313, ptr noundef %1315, i32 noundef %1316) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1318:                                             ; preds = %1290
  %1319 = load i32, ptr @test_count, align 4, !tbaa !5
  %1320 = add nsw i32 %1319, 1
  store i32 %1320, ptr @test_count, align 4, !tbaa !5
  %1321 = load ptr, ptr %6, align 8, !tbaa !9
  %1322 = icmp eq ptr %1321, null
  br i1 %1322, label %1323, label %1347

1323:                                             ; preds = %1318
  %1324 = tail call ptr @__errno_location() #11
  %1325 = load i32, ptr %1324, align 4, !tbaa !5
  %1326 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1327 = call i32 @s2n_print_stacktrace(ptr noundef %1326) #10
  %1328 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1329 = trunc nuw i8 %1328 to i1
  br i1 %1329, label %1330, label %1334

1330:                                             ; preds = %1323
  %1331 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1332 = call i32 @fileno(ptr noundef %1331) #10
  %1333 = call i32 @isatty(i32 noundef %1332) #10
  %.not539 = icmp eq i32 %1333, 0
  br i1 %.not539, label %1334, label %1335

1334:                                             ; preds = %1330, %1323
  br label %1335

1335:                                             ; preds = %1330, %1334
  %.str.9.sink1189 = phi ptr [ @.str.9, %1334 ], [ @.str.6, %1330 ]
  store i32 %1325, ptr %1324, align 4, !tbaa !5
  %1336 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1337 = load i32, ptr @test_count, align 4, !tbaa !5
  %1338 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1339 = load i32, ptr %1338, align 4, !tbaa !5
  %1340 = call ptr @s2n_strerror(i32 noundef %1339, ptr noundef nonnull @.str.8) #10
  %1341 = load i32, ptr %1338, align 4, !tbaa !5
  %1342 = call ptr @s2n_strerror_debug(i32 noundef %1341, ptr noundef nonnull @.str.8) #10
  %1343 = load i32, ptr %1324, align 4, !tbaa !5
  %1344 = call ptr @strerror(i32 noundef %1343) #10
  %1345 = load i32, ptr %1324, align 4, !tbaa !5
  %1346 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1336, ptr noundef nonnull %.str.9.sink1189, i32 noundef %1337, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.5, i32 noundef 121, ptr noundef %1340, ptr noundef %1342, ptr noundef %1344, i32 noundef %1345) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1347:                                             ; preds = %1318
  %1348 = add nsw i32 %1319, 2
  store i32 %1348, ptr @test_count, align 4, !tbaa !5
  %1349 = icmp eq ptr %1321, @kem_preferences_null
  br i1 %1349, label %.preheader574, label %1353

.preheader574:                                    ; preds = %1347
  %1350 = load ptr, ptr %5, align 8, !tbaa !9
  %1351 = load i8, ptr %1350, align 8, !tbaa !15
  %.not646 = icmp eq i8 %1351, 0
  br i1 %.not646, label %.preheader573, label %.lr.ph602

.lr.ph602:                                        ; preds = %.preheader574
  %1352 = getelementptr inbounds i8, ptr %1206, i64 672
  br label %1381

1353:                                             ; preds = %1347
  %1354 = tail call ptr @__errno_location() #11
  %1355 = load i32, ptr %1354, align 4, !tbaa !5
  %1356 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1357 = call i32 @s2n_print_stacktrace(ptr noundef %1356) #10
  %1358 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1359 = trunc nuw i8 %1358 to i1
  br i1 %1359, label %1360, label %1364

1360:                                             ; preds = %1353
  %1361 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1362 = call i32 @fileno(ptr noundef %1361) #10
  %1363 = call i32 @isatty(i32 noundef %1362) #10
  %.not453 = icmp eq i32 %1363, 0
  br i1 %.not453, label %1364, label %1365

1364:                                             ; preds = %1360, %1353
  br label %1365

1365:                                             ; preds = %1360, %1364
  %.str.9.sink1200 = phi ptr [ @.str.9, %1364 ], [ @.str.6, %1360 ]
  store i32 %1355, ptr %1354, align 4, !tbaa !5
  %1366 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1367 = load i32, ptr @test_count, align 4, !tbaa !5
  %1368 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1369 = load i32, ptr %1368, align 4, !tbaa !5
  %1370 = call ptr @s2n_strerror(i32 noundef %1369, ptr noundef nonnull @.str.8) #10
  %1371 = load i32, ptr %1368, align 4, !tbaa !5
  %1372 = call ptr @s2n_strerror_debug(i32 noundef %1371, ptr noundef nonnull @.str.8) #10
  %1373 = load i32, ptr %1354, align 4, !tbaa !5
  %1374 = call ptr @strerror(i32 noundef %1373) #10
  %1375 = load i32, ptr %1354, align 4, !tbaa !5
  %1376 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1366, ptr noundef nonnull %.str.9.sink1200, i32 noundef %1367, ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.5, i32 noundef 122, ptr noundef %1370, ptr noundef %1372, ptr noundef %1374, i32 noundef %1375) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.preheader573.loopexit:                           ; preds = %1381
  %.pre = load ptr, ptr %6, align 8, !tbaa !9
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 16
  %.pre687 = load i8, ptr %.phi.trans.insert, align 8, !tbaa !19
  %.pre688 = zext i8 %.pre687 to i64
  br label %.preheader573

.preheader573:                                    ; preds = %.preheader573.loopexit, %.preheader574
  %.pre-phi = phi i64 [ %.pre688, %.preheader573.loopexit ], [ %313, %.preheader574 ]
  %1377 = phi i8 [ %.pre687, %.preheader573.loopexit ], [ %312, %.preheader574 ]
  %.not647 = icmp eq i8 %1377, 0
  br i1 %.not647, label %._crit_edge606, label %.lr.ph605

.lr.ph605:                                        ; preds = %.preheader573
  %1378 = getelementptr inbounds i8, ptr %1206, i64 944
  %1379 = zext i8 %1377 to i32
  %1380 = add i32 %1348, %1379
  br label %1399

1381:                                             ; preds = %.lr.ph602, %1381
  %1382 = phi ptr [ %1350, %.lr.ph602 ], [ %1389, %1381 ]
  %.0414601 = phi i64 [ 0, %.lr.ph602 ], [ %1388, %1381 ]
  %1383 = getelementptr inbounds i8, ptr %1382, i64 8
  %1384 = load ptr, ptr %1383, align 8, !tbaa !54
  %1385 = getelementptr inbounds ptr, ptr %1384, i64 %.0414601
  %1386 = load ptr, ptr %1385, align 8, !tbaa !9
  %1387 = getelementptr inbounds [4 x ptr], ptr %1352, i64 0, i64 %.0414601
  store ptr %1386, ptr %1387, align 8, !tbaa !9
  %1388 = add nuw nsw i64 %.0414601, 1
  %1389 = load ptr, ptr %5, align 8, !tbaa !9
  %1390 = load i8, ptr %1389, align 8, !tbaa !15
  %1391 = zext i8 %1390 to i64
  %1392 = icmp ult i64 %1388, %1391
  br i1 %1392, label %1381, label %.preheader573.loopexit, !llvm.loop !55

1393:                                             ; preds = %1399
  %1394 = add nuw nsw i64 %.0415604, 1
  %exitcond676.not = icmp eq i64 %1394, %.pre-phi
  br i1 %exitcond676.not, label %._crit_edge606, label %1399, !llvm.loop !56

._crit_edge606:                                   ; preds = %1393, %.preheader573
  %1395 = phi i32 [ %1348, %.preheader573 ], [ %1380, %1393 ]
  %1396 = add nsw i32 %1395, 1
  store i32 %1396, ptr @test_count, align 4, !tbaa !5
  %1397 = call i32 @s2n_choose_supported_group(ptr noundef nonnull %1206)
  %1398 = icmp eq i32 %1397, -1
  br i1 %1398, label %1429, label %1453

1399:                                             ; preds = %.lr.ph605, %1393
  %.0415604 = phi i64 [ 0, %.lr.ph605 ], [ %1394, %1393 ]
  %1400 = phi i32 [ %1348, %.lr.ph605 ], [ %1401, %1393 ]
  %1401 = add nsw i32 %1400, 1
  %1402 = getelementptr inbounds [8 x ptr], ptr %1378, i64 0, i64 %.0415604
  %1403 = load ptr, ptr %1402, align 8, !tbaa !9
  %1404 = icmp eq ptr %1403, null
  br i1 %1404, label %1393, label %1405

1405:                                             ; preds = %1399
  store i32 %1401, ptr @test_count, align 4, !tbaa !5
  %1406 = tail call ptr @__errno_location() #11
  %1407 = load i32, ptr %1406, align 4, !tbaa !5
  %1408 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1409 = call i32 @s2n_print_stacktrace(ptr noundef %1408) #10
  %1410 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1411 = trunc nuw i8 %1410 to i1
  br i1 %1411, label %1412, label %1416

1412:                                             ; preds = %1405
  %1413 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1414 = call i32 @fileno(ptr noundef %1413) #10
  %1415 = call i32 @isatty(i32 noundef %1414) #10
  %.not538 = icmp eq i32 %1415, 0
  br i1 %.not538, label %1416, label %1417

1416:                                             ; preds = %1412, %1405
  br label %1417

1417:                                             ; preds = %1412, %1416
  %.str.9.sink1211 = phi ptr [ @.str.9, %1416 ], [ @.str.6, %1412 ]
  store i32 %1407, ptr %1406, align 4, !tbaa !5
  %1418 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1419 = load i32, ptr @test_count, align 4, !tbaa !5
  %1420 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1421 = load i32, ptr %1420, align 4, !tbaa !5
  %1422 = call ptr @s2n_strerror(i32 noundef %1421, ptr noundef nonnull @.str.8) #10
  %1423 = load i32, ptr %1420, align 4, !tbaa !5
  %1424 = call ptr @s2n_strerror_debug(i32 noundef %1423, ptr noundef nonnull @.str.8) #10
  %1425 = load i32, ptr %1406, align 4, !tbaa !5
  %1426 = call ptr @strerror(i32 noundef %1425) #10
  %1427 = load i32, ptr %1406, align 4, !tbaa !5
  %1428 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1418, ptr noundef nonnull %.str.9.sink1211, i32 noundef %1419, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, i32 noundef 129, ptr noundef %1422, ptr noundef %1424, ptr noundef %1426, i32 noundef %1427) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1429:                                             ; preds = %._crit_edge606
  %1430 = tail call ptr @__errno_location() #11
  %1431 = load i32, ptr %1430, align 4, !tbaa !5
  %1432 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1433 = call i32 @s2n_print_stacktrace(ptr noundef %1432) #10
  %1434 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1435 = trunc nuw i8 %1434 to i1
  br i1 %1435, label %1436, label %1440

1436:                                             ; preds = %1429
  %1437 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1438 = call i32 @fileno(ptr noundef %1437) #10
  %1439 = call i32 @isatty(i32 noundef %1438) #10
  %.not537 = icmp eq i32 %1439, 0
  br i1 %.not537, label %1440, label %1441

1440:                                             ; preds = %1436, %1429
  br label %1441

1441:                                             ; preds = %1436, %1440
  %.str.9.sink1222 = phi ptr [ @.str.9, %1440 ], [ @.str.6, %1436 ]
  store i32 %1431, ptr %1430, align 4, !tbaa !5
  %1442 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1443 = load i32, ptr @test_count, align 4, !tbaa !5
  %1444 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1445 = load i32, ptr %1444, align 4, !tbaa !5
  %1446 = call ptr @s2n_strerror(i32 noundef %1445, ptr noundef nonnull @.str.8) #10
  %1447 = load i32, ptr %1444, align 4, !tbaa !5
  %1448 = call ptr @s2n_strerror_debug(i32 noundef %1447, ptr noundef nonnull @.str.8) #10
  %1449 = load i32, ptr %1430, align 4, !tbaa !5
  %1450 = call ptr @strerror(i32 noundef %1449) #10
  %1451 = load i32, ptr %1430, align 4, !tbaa !5
  %1452 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1442, ptr noundef nonnull %.str.9.sink1222, i32 noundef %1443, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 132, ptr noundef %1446, ptr noundef %1448, ptr noundef %1450, i32 noundef %1451) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1453:                                             ; preds = %._crit_edge606
  %1454 = load i32, ptr @test_count, align 4, !tbaa !5
  %1455 = add nsw i32 %1454, 1
  store i32 %1455, ptr @test_count, align 4, !tbaa !5
  %1456 = getelementptr inbounds i8, ptr %1206, i64 720
  %1457 = load ptr, ptr %1456, align 8, !tbaa !22
  %1458 = icmp eq ptr %1457, null
  br i1 %1458, label %1483, label %1459

1459:                                             ; preds = %1453
  %1460 = tail call ptr @__errno_location() #11
  %1461 = load i32, ptr %1460, align 4, !tbaa !5
  %1462 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1463 = call i32 @s2n_print_stacktrace(ptr noundef %1462) #10
  %1464 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1465 = trunc nuw i8 %1464 to i1
  br i1 %1465, label %1466, label %1470

1466:                                             ; preds = %1459
  %1467 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1468 = call i32 @fileno(ptr noundef %1467) #10
  %1469 = call i32 @isatty(i32 noundef %1468) #10
  %.not454 = icmp eq i32 %1469, 0
  br i1 %.not454, label %1470, label %1471

1470:                                             ; preds = %1466, %1459
  br label %1471

1471:                                             ; preds = %1466, %1470
  %.str.9.sink1233 = phi ptr [ @.str.9, %1470 ], [ @.str.6, %1466 ]
  store i32 %1461, ptr %1460, align 4, !tbaa !5
  %1472 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1473 = load i32, ptr @test_count, align 4, !tbaa !5
  %1474 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1475 = load i32, ptr %1474, align 4, !tbaa !5
  %1476 = call ptr @s2n_strerror(i32 noundef %1475, ptr noundef nonnull @.str.8) #10
  %1477 = load i32, ptr %1474, align 4, !tbaa !5
  %1478 = call ptr @s2n_strerror_debug(i32 noundef %1477, ptr noundef nonnull @.str.8) #10
  %1479 = load i32, ptr %1460, align 4, !tbaa !5
  %1480 = call ptr @strerror(i32 noundef %1479) #10
  %1481 = load i32, ptr %1460, align 4, !tbaa !5
  %1482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1472, ptr noundef nonnull %.str.9.sink1233, i32 noundef %1473, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 134, ptr noundef %1476, ptr noundef %1478, ptr noundef %1480, i32 noundef %1481) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1483:                                             ; preds = %1453
  %1484 = add nsw i32 %1454, 2
  store i32 %1484, ptr @test_count, align 4, !tbaa !5
  %1485 = getelementptr inbounds i8, ptr %1206, i64 816
  %1486 = load ptr, ptr %1485, align 8, !tbaa !49
  %1487 = icmp eq ptr %1486, null
  br i1 %1487, label %1512, label %1488

1488:                                             ; preds = %1483
  %1489 = tail call ptr @__errno_location() #11
  %1490 = load i32, ptr %1489, align 4, !tbaa !5
  %1491 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1492 = call i32 @s2n_print_stacktrace(ptr noundef %1491) #10
  %1493 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1494 = trunc nuw i8 %1493 to i1
  br i1 %1494, label %1495, label %1499

1495:                                             ; preds = %1488
  %1496 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1497 = call i32 @fileno(ptr noundef %1496) #10
  %1498 = call i32 @isatty(i32 noundef %1497) #10
  %.not455 = icmp eq i32 %1498, 0
  br i1 %.not455, label %1499, label %1500

1499:                                             ; preds = %1495, %1488
  br label %1500

1500:                                             ; preds = %1495, %1499
  %.str.9.sink1244 = phi ptr [ @.str.9, %1499 ], [ @.str.6, %1495 ]
  store i32 %1490, ptr %1489, align 4, !tbaa !5
  %1501 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1502 = load i32, ptr @test_count, align 4, !tbaa !5
  %1503 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1504 = load i32, ptr %1503, align 4, !tbaa !5
  %1505 = call ptr @s2n_strerror(i32 noundef %1504, ptr noundef nonnull @.str.8) #10
  %1506 = load i32, ptr %1503, align 4, !tbaa !5
  %1507 = call ptr @s2n_strerror_debug(i32 noundef %1506, ptr noundef nonnull @.str.8) #10
  %1508 = load i32, ptr %1489, align 4, !tbaa !5
  %1509 = call ptr @strerror(i32 noundef %1508) #10
  %1510 = load i32, ptr %1489, align 4, !tbaa !5
  %1511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1501, ptr noundef nonnull %.str.9.sink1244, i32 noundef %1502, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 135, ptr noundef %1505, ptr noundef %1507, ptr noundef %1509, i32 noundef %1510) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1512:                                             ; preds = %1483
  %1513 = add nsw i32 %1454, 3
  store i32 %1513, ptr @test_count, align 4, !tbaa !5
  %1514 = getelementptr inbounds i8, ptr %1206, i64 728
  %1515 = load ptr, ptr %1514, align 8, !tbaa !50
  %1516 = icmp eq ptr %1515, null
  br i1 %1516, label %1541, label %1517

1517:                                             ; preds = %1512
  %1518 = tail call ptr @__errno_location() #11
  %1519 = load i32, ptr %1518, align 4, !tbaa !5
  %1520 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1521 = call i32 @s2n_print_stacktrace(ptr noundef %1520) #10
  %1522 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1523 = trunc nuw i8 %1522 to i1
  br i1 %1523, label %1524, label %1528

1524:                                             ; preds = %1517
  %1525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1526 = call i32 @fileno(ptr noundef %1525) #10
  %1527 = call i32 @isatty(i32 noundef %1526) #10
  %.not456 = icmp eq i32 %1527, 0
  br i1 %.not456, label %1528, label %1529

1528:                                             ; preds = %1524, %1517
  br label %1529

1529:                                             ; preds = %1524, %1528
  %.str.9.sink1255 = phi ptr [ @.str.9, %1528 ], [ @.str.6, %1524 ]
  store i32 %1519, ptr %1518, align 4, !tbaa !5
  %1530 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1531 = load i32, ptr @test_count, align 4, !tbaa !5
  %1532 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1533 = load i32, ptr %1532, align 4, !tbaa !5
  %1534 = call ptr @s2n_strerror(i32 noundef %1533, ptr noundef nonnull @.str.8) #10
  %1535 = load i32, ptr %1532, align 4, !tbaa !5
  %1536 = call ptr @s2n_strerror_debug(i32 noundef %1535, ptr noundef nonnull @.str.8) #10
  %1537 = load i32, ptr %1518, align 4, !tbaa !5
  %1538 = call ptr @strerror(i32 noundef %1537) #10
  %1539 = load i32, ptr %1518, align 4, !tbaa !5
  %1540 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1530, ptr noundef nonnull %.str.9.sink1255, i32 noundef %1531, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 136, ptr noundef %1534, ptr noundef %1536, ptr noundef %1538, i32 noundef %1539) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1541:                                             ; preds = %1512
  %1542 = add nsw i32 %1454, 4
  store i32 %1542, ptr @test_count, align 4, !tbaa !5
  %1543 = getelementptr inbounds i8, ptr %1206, i64 656
  %1544 = load ptr, ptr %1543, align 8, !tbaa !51
  %1545 = load ptr, ptr %5, align 8, !tbaa !9
  %1546 = getelementptr inbounds i8, ptr %1545, i64 8
  %1547 = load ptr, ptr %1546, align 8, !tbaa !54
  %1548 = load ptr, ptr %1547, align 8, !tbaa !9
  %1549 = icmp eq ptr %1544, %1548
  br i1 %1549, label %1574, label %1550

1550:                                             ; preds = %1541
  %1551 = tail call ptr @__errno_location() #11
  %1552 = load i32, ptr %1551, align 4, !tbaa !5
  %1553 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1554 = call i32 @s2n_print_stacktrace(ptr noundef %1553) #10
  %1555 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1556 = trunc nuw i8 %1555 to i1
  br i1 %1556, label %1557, label %1561

1557:                                             ; preds = %1550
  %1558 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1559 = call i32 @fileno(ptr noundef %1558) #10
  %1560 = call i32 @isatty(i32 noundef %1559) #10
  %.not457 = icmp eq i32 %1560, 0
  br i1 %.not457, label %1561, label %1562

1561:                                             ; preds = %1557, %1550
  br label %1562

1562:                                             ; preds = %1557, %1561
  %.str.9.sink1266 = phi ptr [ @.str.9, %1561 ], [ @.str.6, %1557 ]
  store i32 %1552, ptr %1551, align 4, !tbaa !5
  %1563 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1564 = load i32, ptr @test_count, align 4, !tbaa !5
  %1565 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1566 = load i32, ptr %1565, align 4, !tbaa !5
  %1567 = call ptr @s2n_strerror(i32 noundef %1566, ptr noundef nonnull @.str.8) #10
  %1568 = load i32, ptr %1565, align 4, !tbaa !5
  %1569 = call ptr @s2n_strerror_debug(i32 noundef %1568, ptr noundef nonnull @.str.8) #10
  %1570 = load i32, ptr %1551, align 4, !tbaa !5
  %1571 = call ptr @strerror(i32 noundef %1570) #10
  %1572 = load i32, ptr %1551, align 4, !tbaa !5
  %1573 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1563, ptr noundef nonnull %.str.9.sink1266, i32 noundef %1564, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.5, i32 noundef 137, ptr noundef %1567, ptr noundef %1569, ptr noundef %1571, i32 noundef %1572) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1574:                                             ; preds = %1541
  %1575 = add nsw i32 %1454, 5
  store i32 %1575, ptr @test_count, align 4, !tbaa !5
  %1576 = call i32 @s2n_connection_free(ptr noundef nonnull %1206) #10
  %1577 = icmp eq i32 %1576, -1
  br i1 %1577, label %1578, label %1602

1578:                                             ; preds = %1574
  %1579 = tail call ptr @__errno_location() #11
  %1580 = load i32, ptr %1579, align 4, !tbaa !5
  %1581 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1582 = call i32 @s2n_print_stacktrace(ptr noundef %1581) #10
  %1583 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1584 = trunc nuw i8 %1583 to i1
  br i1 %1584, label %1585, label %1589

1585:                                             ; preds = %1578
  %1586 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1587 = call i32 @fileno(ptr noundef %1586) #10
  %1588 = call i32 @isatty(i32 noundef %1587) #10
  %.not536 = icmp eq i32 %1588, 0
  br i1 %.not536, label %1589, label %1590

1589:                                             ; preds = %1585, %1578
  br label %1590

1590:                                             ; preds = %1585, %1589
  %.str.9.sink1277 = phi ptr [ @.str.9, %1589 ], [ @.str.6, %1585 ]
  store i32 %1580, ptr %1579, align 4, !tbaa !5
  %1591 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1592 = load i32, ptr @test_count, align 4, !tbaa !5
  %1593 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1594 = load i32, ptr %1593, align 4, !tbaa !5
  %1595 = call ptr @s2n_strerror(i32 noundef %1594, ptr noundef nonnull @.str.8) #10
  %1596 = load i32, ptr %1593, align 4, !tbaa !5
  %1597 = call ptr @s2n_strerror_debug(i32 noundef %1596, ptr noundef nonnull @.str.8) #10
  %1598 = load i32, ptr %1579, align 4, !tbaa !5
  %1599 = call ptr @strerror(i32 noundef %1598) #10
  %1600 = load i32, ptr %1579, align 4, !tbaa !5
  %1601 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1591, ptr noundef nonnull %.str.9.sink1277, i32 noundef %1592, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, i32 noundef 138, ptr noundef %1595, ptr noundef %1597, ptr noundef %1599, i32 noundef %1600) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1602:                                             ; preds = %1574
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %7, i8 0, i64 40, i1 false)
  %1603 = getelementptr inbounds i8, ptr %7, i64 16
  %1604 = load i8, ptr getelementptr inbounds (i8, ptr @kem_preferences_all, i64 16), align 8, !tbaa !19
  store i8 %1604, ptr %1603, align 8, !tbaa !19
  %1605 = getelementptr inbounds i8, ptr %7, i64 24
  %1606 = load ptr, ptr getelementptr inbounds (i8, ptr @kem_preferences_all, i64 24), align 8, !tbaa !57
  store ptr %1606, ptr %1605, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #10
  store i8 30, ptr %8, align 8, !tbaa !58
  %1607 = getelementptr inbounds i8, ptr %8, i64 8
  store ptr @cipher_preferences_test_all_tls13, ptr %1607, align 8, !tbaa !60
  %1608 = getelementptr inbounds i8, ptr %8, i64 16
  store ptr %7, ptr %1608, align 8, !tbaa !61
  %1609 = getelementptr inbounds i8, ptr %8, i64 24
  store ptr @s2n_signature_preferences_20200207, ptr %1609, align 8, !tbaa !62
  %1610 = getelementptr inbounds i8, ptr %8, i64 32
  store ptr null, ptr %1610, align 8, !tbaa !63
  %1611 = getelementptr inbounds i8, ptr %8, i64 40
  store ptr @s2n_ecc_preferences_20200310, ptr %1611, align 8, !tbaa !64
  %1612 = getelementptr inbounds i8, ptr %8, i64 48
  store ptr null, ptr %1612, align 8, !tbaa !65
  %1613 = getelementptr inbounds i8, ptr %8, i64 56
  store i8 0, ptr %1613, align 8, !tbaa !66
  %1614 = getelementptr inbounds i8, ptr %8, i64 57
  store i16 0, ptr %1614, align 1
  %1615 = load i32, ptr @test_count, align 4, !tbaa !5
  %1616 = add nsw i32 %1615, 1
  store i32 %1616, ptr @test_count, align 4, !tbaa !5
  %1617 = call ptr @s2n_connection_new(i32 noundef 0) #10
  %1618 = icmp eq ptr %1617, null
  br i1 %1618, label %1619, label %1643

1619:                                             ; preds = %1602
  %1620 = tail call ptr @__errno_location() #11
  %1621 = load i32, ptr %1620, align 4, !tbaa !5
  %1622 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1623 = call i32 @s2n_print_stacktrace(ptr noundef %1622) #10
  %1624 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1625 = trunc nuw i8 %1624 to i1
  br i1 %1625, label %1626, label %1630

1626:                                             ; preds = %1619
  %1627 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1628 = call i32 @fileno(ptr noundef %1627) #10
  %1629 = call i32 @isatty(i32 noundef %1628) #10
  %.not535 = icmp eq i32 %1629, 0
  br i1 %.not535, label %1630, label %1631

1630:                                             ; preds = %1626, %1619
  br label %1631

1631:                                             ; preds = %1626, %1630
  %.str.9.sink1288 = phi ptr [ @.str.9, %1630 ], [ @.str.6, %1626 ]
  store i32 %1621, ptr %1620, align 4, !tbaa !5
  %1632 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1633 = load i32, ptr @test_count, align 4, !tbaa !5
  %1634 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1635 = load i32, ptr %1634, align 4, !tbaa !5
  %1636 = call ptr @s2n_strerror(i32 noundef %1635, ptr noundef nonnull @.str.8) #10
  %1637 = load i32, ptr %1634, align 4, !tbaa !5
  %1638 = call ptr @s2n_strerror_debug(i32 noundef %1637, ptr noundef nonnull @.str.8) #10
  %1639 = load i32, ptr %1620, align 4, !tbaa !5
  %1640 = call ptr @strerror(i32 noundef %1639) #10
  %1641 = load i32, ptr %1620, align 4, !tbaa !5
  %1642 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1632, ptr noundef nonnull %.str.9.sink1288, i32 noundef %1633, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 163, ptr noundef %1636, ptr noundef %1638, ptr noundef %1640, i32 noundef %1641) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1643:                                             ; preds = %1602
  %1644 = getelementptr inbounds i8, ptr %1617, i64 16
  store ptr %8, ptr %1644, align 8, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  store ptr null, ptr %9, align 8, !tbaa !9
  %1645 = load i32, ptr @test_count, align 4, !tbaa !5
  %1646 = add nsw i32 %1645, 1
  store i32 %1646, ptr @test_count, align 4, !tbaa !5
  %1647 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %1617, ptr noundef nonnull %9) #10
  %1648 = icmp eq i32 %1647, -1
  br i1 %1648, label %1649, label %1673

1649:                                             ; preds = %1643
  %1650 = tail call ptr @__errno_location() #11
  %1651 = load i32, ptr %1650, align 4, !tbaa !5
  %1652 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1653 = call i32 @s2n_print_stacktrace(ptr noundef %1652) #10
  %1654 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1655 = trunc nuw i8 %1654 to i1
  br i1 %1655, label %1656, label %1660

1656:                                             ; preds = %1649
  %1657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1658 = call i32 @fileno(ptr noundef %1657) #10
  %1659 = call i32 @isatty(i32 noundef %1658) #10
  %.not534 = icmp eq i32 %1659, 0
  br i1 %.not534, label %1660, label %1661

1660:                                             ; preds = %1656, %1649
  br label %1661

1661:                                             ; preds = %1656, %1660
  %.str.9.sink1299 = phi ptr [ @.str.9, %1660 ], [ @.str.6, %1656 ]
  store i32 %1651, ptr %1650, align 4, !tbaa !5
  %1662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1663 = load i32, ptr @test_count, align 4, !tbaa !5
  %1664 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1665 = load i32, ptr %1664, align 4, !tbaa !5
  %1666 = call ptr @s2n_strerror(i32 noundef %1665, ptr noundef nonnull @.str.8) #10
  %1667 = load i32, ptr %1664, align 4, !tbaa !5
  %1668 = call ptr @s2n_strerror_debug(i32 noundef %1667, ptr noundef nonnull @.str.8) #10
  %1669 = load i32, ptr %1650, align 4, !tbaa !5
  %1670 = call ptr @strerror(i32 noundef %1669) #10
  %1671 = load i32, ptr %1650, align 4, !tbaa !5
  %1672 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1662, ptr noundef nonnull %.str.9.sink1299, i32 noundef %1663, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.5, i32 noundef 167, ptr noundef %1666, ptr noundef %1668, ptr noundef %1670, i32 noundef %1671) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1673:                                             ; preds = %1643
  %1674 = load i32, ptr @test_count, align 4, !tbaa !5
  %1675 = add nsw i32 %1674, 1
  store i32 %1675, ptr @test_count, align 4, !tbaa !5
  %1676 = load ptr, ptr %9, align 8, !tbaa !9
  %1677 = icmp eq ptr %1676, null
  br i1 %1677, label %1678, label %1702

1678:                                             ; preds = %1673
  %1679 = tail call ptr @__errno_location() #11
  %1680 = load i32, ptr %1679, align 4, !tbaa !5
  %1681 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1682 = call i32 @s2n_print_stacktrace(ptr noundef %1681) #10
  %1683 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1684 = trunc nuw i8 %1683 to i1
  br i1 %1684, label %1685, label %1689

1685:                                             ; preds = %1678
  %1686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1687 = call i32 @fileno(ptr noundef %1686) #10
  %1688 = call i32 @isatty(i32 noundef %1687) #10
  %.not533 = icmp eq i32 %1688, 0
  br i1 %.not533, label %1689, label %1690

1689:                                             ; preds = %1685, %1678
  br label %1690

1690:                                             ; preds = %1685, %1689
  %.str.9.sink1310 = phi ptr [ @.str.9, %1689 ], [ @.str.6, %1685 ]
  store i32 %1680, ptr %1679, align 4, !tbaa !5
  %1691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1692 = load i32, ptr @test_count, align 4, !tbaa !5
  %1693 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1694 = load i32, ptr %1693, align 4, !tbaa !5
  %1695 = call ptr @s2n_strerror(i32 noundef %1694, ptr noundef nonnull @.str.8) #10
  %1696 = load i32, ptr %1693, align 4, !tbaa !5
  %1697 = call ptr @s2n_strerror_debug(i32 noundef %1696, ptr noundef nonnull @.str.8) #10
  %1698 = load i32, ptr %1679, align 4, !tbaa !5
  %1699 = call ptr @strerror(i32 noundef %1698) #10
  %1700 = load i32, ptr %1679, align 4, !tbaa !5
  %1701 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1691, ptr noundef nonnull %.str.9.sink1310, i32 noundef %1692, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 168, ptr noundef %1695, ptr noundef %1697, ptr noundef %1699, i32 noundef %1700) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1702:                                             ; preds = %1673
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  store ptr null, ptr %10, align 8, !tbaa !9
  %1703 = add nsw i32 %1674, 2
  store i32 %1703, ptr @test_count, align 4, !tbaa !5
  %1704 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %1617, ptr noundef nonnull %10) #10
  %1705 = icmp eq i32 %1704, -1
  br i1 %1705, label %1706, label %1730

1706:                                             ; preds = %1702
  %1707 = tail call ptr @__errno_location() #11
  %1708 = load i32, ptr %1707, align 4, !tbaa !5
  %1709 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1710 = call i32 @s2n_print_stacktrace(ptr noundef %1709) #10
  %1711 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1712 = trunc nuw i8 %1711 to i1
  br i1 %1712, label %1713, label %1717

1713:                                             ; preds = %1706
  %1714 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1715 = call i32 @fileno(ptr noundef %1714) #10
  %1716 = call i32 @isatty(i32 noundef %1715) #10
  %.not532 = icmp eq i32 %1716, 0
  br i1 %.not532, label %1717, label %1718

1717:                                             ; preds = %1713, %1706
  br label %1718

1718:                                             ; preds = %1713, %1717
  %.str.9.sink1321 = phi ptr [ @.str.9, %1717 ], [ @.str.6, %1713 ]
  store i32 %1708, ptr %1707, align 4, !tbaa !5
  %1719 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1720 = load i32, ptr @test_count, align 4, !tbaa !5
  %1721 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1722 = load i32, ptr %1721, align 4, !tbaa !5
  %1723 = call ptr @s2n_strerror(i32 noundef %1722, ptr noundef nonnull @.str.8) #10
  %1724 = load i32, ptr %1721, align 4, !tbaa !5
  %1725 = call ptr @s2n_strerror_debug(i32 noundef %1724, ptr noundef nonnull @.str.8) #10
  %1726 = load i32, ptr %1707, align 4, !tbaa !5
  %1727 = call ptr @strerror(i32 noundef %1726) #10
  %1728 = load i32, ptr %1707, align 4, !tbaa !5
  %1729 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1719, ptr noundef nonnull %.str.9.sink1321, i32 noundef %1720, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.5, i32 noundef 171, ptr noundef %1723, ptr noundef %1725, ptr noundef %1727, i32 noundef %1728) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1730:                                             ; preds = %1702
  %1731 = load i32, ptr @test_count, align 4, !tbaa !5
  %1732 = add nsw i32 %1731, 1
  store i32 %1732, ptr @test_count, align 4, !tbaa !5
  %1733 = load ptr, ptr %10, align 8, !tbaa !9
  %1734 = icmp eq ptr %1733, null
  br i1 %1734, label %1735, label %1759

1735:                                             ; preds = %1730
  %1736 = tail call ptr @__errno_location() #11
  %1737 = load i32, ptr %1736, align 4, !tbaa !5
  %1738 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1739 = call i32 @s2n_print_stacktrace(ptr noundef %1738) #10
  %1740 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1741 = trunc nuw i8 %1740 to i1
  br i1 %1741, label %1742, label %1746

1742:                                             ; preds = %1735
  %1743 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1744 = call i32 @fileno(ptr noundef %1743) #10
  %1745 = call i32 @isatty(i32 noundef %1744) #10
  %.not531 = icmp eq i32 %1745, 0
  br i1 %.not531, label %1746, label %1747

1746:                                             ; preds = %1742, %1735
  br label %1747

1747:                                             ; preds = %1742, %1746
  %.str.9.sink1332 = phi ptr [ @.str.9, %1746 ], [ @.str.6, %1742 ]
  store i32 %1737, ptr %1736, align 4, !tbaa !5
  %1748 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1749 = load i32, ptr @test_count, align 4, !tbaa !5
  %1750 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1751 = load i32, ptr %1750, align 4, !tbaa !5
  %1752 = call ptr @s2n_strerror(i32 noundef %1751, ptr noundef nonnull @.str.8) #10
  %1753 = load i32, ptr %1750, align 4, !tbaa !5
  %1754 = call ptr @s2n_strerror_debug(i32 noundef %1753, ptr noundef nonnull @.str.8) #10
  %1755 = load i32, ptr %1736, align 4, !tbaa !5
  %1756 = call ptr @strerror(i32 noundef %1755) #10
  %1757 = load i32, ptr %1736, align 4, !tbaa !5
  %1758 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1748, ptr noundef nonnull %.str.9.sink1332, i32 noundef %1749, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.5, i32 noundef 172, ptr noundef %1752, ptr noundef %1754, ptr noundef %1756, i32 noundef %1757) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1759:                                             ; preds = %1730
  %1760 = add nsw i32 %1731, 2
  store i32 %1760, ptr @test_count, align 4, !tbaa !5
  %1761 = icmp eq ptr %1733, %7
  br i1 %1761, label %1786, label %1762

1762:                                             ; preds = %1759
  %1763 = tail call ptr @__errno_location() #11
  %1764 = load i32, ptr %1763, align 4, !tbaa !5
  %1765 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1766 = call i32 @s2n_print_stacktrace(ptr noundef %1765) #10
  %1767 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1768 = trunc nuw i8 %1767 to i1
  br i1 %1768, label %1769, label %1773

1769:                                             ; preds = %1762
  %1770 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1771 = call i32 @fileno(ptr noundef %1770) #10
  %1772 = call i32 @isatty(i32 noundef %1771) #10
  %.not458 = icmp eq i32 %1772, 0
  br i1 %.not458, label %1773, label %1774

1773:                                             ; preds = %1769, %1762
  br label %1774

1774:                                             ; preds = %1769, %1773
  %.str.9.sink1343 = phi ptr [ @.str.9, %1773 ], [ @.str.6, %1769 ]
  store i32 %1764, ptr %1763, align 4, !tbaa !5
  %1775 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1776 = load i32, ptr @test_count, align 4, !tbaa !5
  %1777 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1778 = load i32, ptr %1777, align 4, !tbaa !5
  %1779 = call ptr @s2n_strerror(i32 noundef %1778, ptr noundef nonnull @.str.8) #10
  %1780 = load i32, ptr %1777, align 4, !tbaa !5
  %1781 = call ptr @s2n_strerror_debug(i32 noundef %1780, ptr noundef nonnull @.str.8) #10
  %1782 = load i32, ptr %1763, align 4, !tbaa !5
  %1783 = call ptr @strerror(i32 noundef %1782) #10
  %1784 = load i32, ptr %1763, align 4, !tbaa !5
  %1785 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1775, ptr noundef nonnull %.str.9.sink1343, i32 noundef %1776, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.5, i32 noundef 173, ptr noundef %1779, ptr noundef %1781, ptr noundef %1783, i32 noundef %1784) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1786:                                             ; preds = %1759
  %1787 = add nsw i32 %1731, 3
  store i32 %1787, ptr @test_count, align 4, !tbaa !5
  %1788 = getelementptr inbounds i8, ptr %1617, i64 720
  %1789 = load ptr, ptr %1788, align 8, !tbaa !22
  %1790 = icmp eq ptr %1789, null
  br i1 %1790, label %1815, label %1791

1791:                                             ; preds = %1786
  %1792 = tail call ptr @__errno_location() #11
  %1793 = load i32, ptr %1792, align 4, !tbaa !5
  %1794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1795 = call i32 @s2n_print_stacktrace(ptr noundef %1794) #10
  %1796 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1797 = trunc nuw i8 %1796 to i1
  br i1 %1797, label %1798, label %1802

1798:                                             ; preds = %1791
  %1799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1800 = call i32 @fileno(ptr noundef %1799) #10
  %1801 = call i32 @isatty(i32 noundef %1800) #10
  %.not459 = icmp eq i32 %1801, 0
  br i1 %.not459, label %1802, label %1803

1802:                                             ; preds = %1798, %1791
  br label %1803

1803:                                             ; preds = %1798, %1802
  %.str.9.sink1354 = phi ptr [ @.str.9, %1802 ], [ @.str.6, %1798 ]
  store i32 %1793, ptr %1792, align 4, !tbaa !5
  %1804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1805 = load i32, ptr @test_count, align 4, !tbaa !5
  %1806 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1807 = load i32, ptr %1806, align 4, !tbaa !5
  %1808 = call ptr @s2n_strerror(i32 noundef %1807, ptr noundef nonnull @.str.8) #10
  %1809 = load i32, ptr %1806, align 4, !tbaa !5
  %1810 = call ptr @s2n_strerror_debug(i32 noundef %1809, ptr noundef nonnull @.str.8) #10
  %1811 = load i32, ptr %1792, align 4, !tbaa !5
  %1812 = call ptr @strerror(i32 noundef %1811) #10
  %1813 = load i32, ptr %1792, align 4, !tbaa !5
  %1814 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1804, ptr noundef nonnull %.str.9.sink1354, i32 noundef %1805, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 175, ptr noundef %1808, ptr noundef %1810, ptr noundef %1812, i32 noundef %1813) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1815:                                             ; preds = %1786
  %1816 = add nsw i32 %1731, 4
  store i32 %1816, ptr @test_count, align 4, !tbaa !5
  %1817 = getelementptr inbounds i8, ptr %1617, i64 816
  %1818 = load ptr, ptr %1817, align 8, !tbaa !49
  %1819 = icmp eq ptr %1818, null
  br i1 %1819, label %1844, label %1820

1820:                                             ; preds = %1815
  %1821 = tail call ptr @__errno_location() #11
  %1822 = load i32, ptr %1821, align 4, !tbaa !5
  %1823 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1824 = call i32 @s2n_print_stacktrace(ptr noundef %1823) #10
  %1825 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1826 = trunc nuw i8 %1825 to i1
  br i1 %1826, label %1827, label %1831

1827:                                             ; preds = %1820
  %1828 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1829 = call i32 @fileno(ptr noundef %1828) #10
  %1830 = call i32 @isatty(i32 noundef %1829) #10
  %.not460 = icmp eq i32 %1830, 0
  br i1 %.not460, label %1831, label %1832

1831:                                             ; preds = %1827, %1820
  br label %1832

1832:                                             ; preds = %1827, %1831
  %.str.9.sink1365 = phi ptr [ @.str.9, %1831 ], [ @.str.6, %1827 ]
  store i32 %1822, ptr %1821, align 4, !tbaa !5
  %1833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1834 = load i32, ptr @test_count, align 4, !tbaa !5
  %1835 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1836 = load i32, ptr %1835, align 4, !tbaa !5
  %1837 = call ptr @s2n_strerror(i32 noundef %1836, ptr noundef nonnull @.str.8) #10
  %1838 = load i32, ptr %1835, align 4, !tbaa !5
  %1839 = call ptr @s2n_strerror_debug(i32 noundef %1838, ptr noundef nonnull @.str.8) #10
  %1840 = load i32, ptr %1821, align 4, !tbaa !5
  %1841 = call ptr @strerror(i32 noundef %1840) #10
  %1842 = load i32, ptr %1821, align 4, !tbaa !5
  %1843 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1833, ptr noundef nonnull %.str.9.sink1365, i32 noundef %1834, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 176, ptr noundef %1837, ptr noundef %1839, ptr noundef %1841, i32 noundef %1842) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1844:                                             ; preds = %1815
  %1845 = add nsw i32 %1731, 5
  store i32 %1845, ptr @test_count, align 4, !tbaa !5
  %1846 = getelementptr inbounds i8, ptr %1617, i64 728
  %1847 = load ptr, ptr %1846, align 8, !tbaa !50
  %1848 = icmp eq ptr %1847, null
  br i1 %1848, label %1873, label %1849

1849:                                             ; preds = %1844
  %1850 = tail call ptr @__errno_location() #11
  %1851 = load i32, ptr %1850, align 4, !tbaa !5
  %1852 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1853 = call i32 @s2n_print_stacktrace(ptr noundef %1852) #10
  %1854 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1855 = trunc nuw i8 %1854 to i1
  br i1 %1855, label %1856, label %1860

1856:                                             ; preds = %1849
  %1857 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1858 = call i32 @fileno(ptr noundef %1857) #10
  %1859 = call i32 @isatty(i32 noundef %1858) #10
  %.not461 = icmp eq i32 %1859, 0
  br i1 %.not461, label %1860, label %1861

1860:                                             ; preds = %1856, %1849
  br label %1861

1861:                                             ; preds = %1856, %1860
  %.str.9.sink1376 = phi ptr [ @.str.9, %1860 ], [ @.str.6, %1856 ]
  store i32 %1851, ptr %1850, align 4, !tbaa !5
  %1862 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1863 = load i32, ptr @test_count, align 4, !tbaa !5
  %1864 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1865 = load i32, ptr %1864, align 4, !tbaa !5
  %1866 = call ptr @s2n_strerror(i32 noundef %1865, ptr noundef nonnull @.str.8) #10
  %1867 = load i32, ptr %1864, align 4, !tbaa !5
  %1868 = call ptr @s2n_strerror_debug(i32 noundef %1867, ptr noundef nonnull @.str.8) #10
  %1869 = load i32, ptr %1850, align 4, !tbaa !5
  %1870 = call ptr @strerror(i32 noundef %1869) #10
  %1871 = load i32, ptr %1850, align 4, !tbaa !5
  %1872 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1862, ptr noundef nonnull %.str.9.sink1376, i32 noundef %1863, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 177, ptr noundef %1866, ptr noundef %1868, ptr noundef %1870, i32 noundef %1871) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1873:                                             ; preds = %1844
  %1874 = add nsw i32 %1731, 6
  store i32 %1874, ptr @test_count, align 4, !tbaa !5
  %1875 = getelementptr inbounds i8, ptr %1617, i64 656
  %1876 = load ptr, ptr %1875, align 8, !tbaa !51
  %1877 = icmp eq ptr %1876, null
  br i1 %1877, label %.preheader572, label %1881

.preheader572:                                    ; preds = %1873
  %1878 = load ptr, ptr %9, align 8, !tbaa !9
  %1879 = load i8, ptr %1878, align 8, !tbaa !15
  %.not648 = icmp eq i8 %1879, 0
  br i1 %.not648, label %.preheader571, label %.lr.ph610

.lr.ph610:                                        ; preds = %.preheader572
  %1880 = getelementptr inbounds i8, ptr %1617, i64 672
  br label %1912

1881:                                             ; preds = %1873
  %1882 = tail call ptr @__errno_location() #11
  %1883 = load i32, ptr %1882, align 4, !tbaa !5
  %1884 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1885 = call i32 @s2n_print_stacktrace(ptr noundef %1884) #10
  %1886 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1887 = trunc nuw i8 %1886 to i1
  br i1 %1887, label %1888, label %1892

1888:                                             ; preds = %1881
  %1889 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1890 = call i32 @fileno(ptr noundef %1889) #10
  %1891 = call i32 @isatty(i32 noundef %1890) #10
  %.not462 = icmp eq i32 %1891, 0
  br i1 %.not462, label %1892, label %1893

1892:                                             ; preds = %1888, %1881
  br label %1893

1893:                                             ; preds = %1888, %1892
  %.str.9.sink1387 = phi ptr [ @.str.9, %1892 ], [ @.str.6, %1888 ]
  store i32 %1883, ptr %1882, align 4, !tbaa !5
  %1894 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1895 = load i32, ptr @test_count, align 4, !tbaa !5
  %1896 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1897 = load i32, ptr %1896, align 4, !tbaa !5
  %1898 = call ptr @s2n_strerror(i32 noundef %1897, ptr noundef nonnull @.str.8) #10
  %1899 = load i32, ptr %1896, align 4, !tbaa !5
  %1900 = call ptr @s2n_strerror_debug(i32 noundef %1899, ptr noundef nonnull @.str.8) #10
  %1901 = load i32, ptr %1882, align 4, !tbaa !5
  %1902 = call ptr @strerror(i32 noundef %1901) #10
  %1903 = load i32, ptr %1882, align 4, !tbaa !5
  %1904 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1894, ptr noundef nonnull %.str.9.sink1387, i32 noundef %1895, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 178, ptr noundef %1898, ptr noundef %1900, ptr noundef %1902, i32 noundef %1903) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.preheader571.loopexit:                           ; preds = %1912
  %.pre683 = load ptr, ptr %10, align 8, !tbaa !9
  br label %.preheader571

.preheader571:                                    ; preds = %.preheader571.loopexit, %.preheader572
  %1905 = phi ptr [ %.pre683, %.preheader571.loopexit ], [ %1733, %.preheader572 ]
  %1906 = getelementptr inbounds i8, ptr %1905, i64 16
  %1907 = load i8, ptr %1906, align 8, !tbaa !19
  %1908 = zext i8 %1907 to i64
  %.not649 = icmp eq i8 %1907, 0
  br i1 %.not649, label %._crit_edge614, label %.lr.ph613

.lr.ph613:                                        ; preds = %.preheader571
  %1909 = getelementptr inbounds i8, ptr %1617, i64 944
  %1910 = zext i8 %1907 to i32
  %1911 = add i32 %1874, %1910
  br label %1930

1912:                                             ; preds = %.lr.ph610, %1912
  %1913 = phi ptr [ %1878, %.lr.ph610 ], [ %1920, %1912 ]
  %.0416609 = phi i64 [ 0, %.lr.ph610 ], [ %1919, %1912 ]
  %1914 = getelementptr inbounds i8, ptr %1913, i64 8
  %1915 = load ptr, ptr %1914, align 8, !tbaa !54
  %1916 = getelementptr inbounds ptr, ptr %1915, i64 %.0416609
  %1917 = load ptr, ptr %1916, align 8, !tbaa !9
  %1918 = getelementptr inbounds [4 x ptr], ptr %1880, i64 0, i64 %.0416609
  store ptr %1917, ptr %1918, align 8, !tbaa !9
  %1919 = add nuw nsw i64 %.0416609, 1
  %1920 = load ptr, ptr %9, align 8, !tbaa !9
  %1921 = load i8, ptr %1920, align 8, !tbaa !15
  %1922 = zext i8 %1921 to i64
  %1923 = icmp ult i64 %1919, %1922
  br i1 %1923, label %1912, label %.preheader571.loopexit, !llvm.loop !68

1924:                                             ; preds = %1930
  %1925 = add nuw nsw i64 %.0417612, 1
  %exitcond677.not = icmp eq i64 %1925, %1908
  br i1 %exitcond677.not, label %._crit_edge614, label %1930, !llvm.loop !69

._crit_edge614:                                   ; preds = %1924, %.preheader571
  %1926 = phi i32 [ %1874, %.preheader571 ], [ %1911, %1924 ]
  %1927 = add nsw i32 %1926, 1
  store i32 %1927, ptr @test_count, align 4, !tbaa !5
  %1928 = call i32 @s2n_choose_supported_group(ptr noundef nonnull %1617)
  %1929 = icmp eq i32 %1928, -1
  br i1 %1929, label %1960, label %1984

1930:                                             ; preds = %.lr.ph613, %1924
  %.0417612 = phi i64 [ 0, %.lr.ph613 ], [ %1925, %1924 ]
  %1931 = phi i32 [ %1874, %.lr.ph613 ], [ %1932, %1924 ]
  %1932 = add nsw i32 %1931, 1
  %1933 = getelementptr inbounds [8 x ptr], ptr %1909, i64 0, i64 %.0417612
  %1934 = load ptr, ptr %1933, align 8, !tbaa !9
  %1935 = icmp eq ptr %1934, null
  br i1 %1935, label %1924, label %1936

1936:                                             ; preds = %1930
  store i32 %1932, ptr @test_count, align 4, !tbaa !5
  %1937 = tail call ptr @__errno_location() #11
  %1938 = load i32, ptr %1937, align 4, !tbaa !5
  %1939 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1940 = call i32 @s2n_print_stacktrace(ptr noundef %1939) #10
  %1941 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1942 = trunc nuw i8 %1941 to i1
  br i1 %1942, label %1943, label %1947

1943:                                             ; preds = %1936
  %1944 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1945 = call i32 @fileno(ptr noundef %1944) #10
  %1946 = call i32 @isatty(i32 noundef %1945) #10
  %.not530 = icmp eq i32 %1946, 0
  br i1 %.not530, label %1947, label %1948

1947:                                             ; preds = %1943, %1936
  br label %1948

1948:                                             ; preds = %1943, %1947
  %.str.9.sink1398 = phi ptr [ @.str.9, %1947 ], [ @.str.6, %1943 ]
  store i32 %1938, ptr %1937, align 4, !tbaa !5
  %1949 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1950 = load i32, ptr @test_count, align 4, !tbaa !5
  %1951 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1952 = load i32, ptr %1951, align 4, !tbaa !5
  %1953 = call ptr @s2n_strerror(i32 noundef %1952, ptr noundef nonnull @.str.8) #10
  %1954 = load i32, ptr %1951, align 4, !tbaa !5
  %1955 = call ptr @s2n_strerror_debug(i32 noundef %1954, ptr noundef nonnull @.str.8) #10
  %1956 = load i32, ptr %1937, align 4, !tbaa !5
  %1957 = call ptr @strerror(i32 noundef %1956) #10
  %1958 = load i32, ptr %1937, align 4, !tbaa !5
  %1959 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1949, ptr noundef nonnull %.str.9.sink1398, i32 noundef %1950, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, i32 noundef 185, ptr noundef %1953, ptr noundef %1955, ptr noundef %1957, i32 noundef %1958) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1960:                                             ; preds = %._crit_edge614
  %1961 = tail call ptr @__errno_location() #11
  %1962 = load i32, ptr %1961, align 4, !tbaa !5
  %1963 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1964 = call i32 @s2n_print_stacktrace(ptr noundef %1963) #10
  %1965 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1966 = trunc nuw i8 %1965 to i1
  br i1 %1966, label %1967, label %1971

1967:                                             ; preds = %1960
  %1968 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1969 = call i32 @fileno(ptr noundef %1968) #10
  %1970 = call i32 @isatty(i32 noundef %1969) #10
  %.not529 = icmp eq i32 %1970, 0
  br i1 %.not529, label %1971, label %1972

1971:                                             ; preds = %1967, %1960
  br label %1972

1972:                                             ; preds = %1967, %1971
  %.str.9.sink1409 = phi ptr [ @.str.9, %1971 ], [ @.str.6, %1967 ]
  store i32 %1962, ptr %1961, align 4, !tbaa !5
  %1973 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1974 = load i32, ptr @test_count, align 4, !tbaa !5
  %1975 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %1976 = load i32, ptr %1975, align 4, !tbaa !5
  %1977 = call ptr @s2n_strerror(i32 noundef %1976, ptr noundef nonnull @.str.8) #10
  %1978 = load i32, ptr %1975, align 4, !tbaa !5
  %1979 = call ptr @s2n_strerror_debug(i32 noundef %1978, ptr noundef nonnull @.str.8) #10
  %1980 = load i32, ptr %1961, align 4, !tbaa !5
  %1981 = call ptr @strerror(i32 noundef %1980) #10
  %1982 = load i32, ptr %1961, align 4, !tbaa !5
  %1983 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1973, ptr noundef nonnull %.str.9.sink1409, i32 noundef %1974, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 188, ptr noundef %1977, ptr noundef %1979, ptr noundef %1981, i32 noundef %1982) #12
  call void @exit(i32 noundef 1) #13
  unreachable

1984:                                             ; preds = %._crit_edge614
  %1985 = load i32, ptr @test_count, align 4, !tbaa !5
  %1986 = add nsw i32 %1985, 1
  store i32 %1986, ptr @test_count, align 4, !tbaa !5
  %1987 = load ptr, ptr %1788, align 8, !tbaa !22
  %1988 = icmp eq ptr %1987, null
  br i1 %1988, label %2013, label %1989

1989:                                             ; preds = %1984
  %1990 = tail call ptr @__errno_location() #11
  %1991 = load i32, ptr %1990, align 4, !tbaa !5
  %1992 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1993 = call i32 @s2n_print_stacktrace(ptr noundef %1992) #10
  %1994 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %1995 = trunc nuw i8 %1994 to i1
  br i1 %1995, label %1996, label %2000

1996:                                             ; preds = %1989
  %1997 = load ptr, ptr @stderr, align 8, !tbaa !9
  %1998 = call i32 @fileno(ptr noundef %1997) #10
  %1999 = call i32 @isatty(i32 noundef %1998) #10
  %.not463 = icmp eq i32 %1999, 0
  br i1 %.not463, label %2000, label %2001

2000:                                             ; preds = %1996, %1989
  br label %2001

2001:                                             ; preds = %1996, %2000
  %.str.9.sink1420 = phi ptr [ @.str.9, %2000 ], [ @.str.6, %1996 ]
  store i32 %1991, ptr %1990, align 4, !tbaa !5
  %2002 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2003 = load i32, ptr @test_count, align 4, !tbaa !5
  %2004 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2005 = load i32, ptr %2004, align 4, !tbaa !5
  %2006 = call ptr @s2n_strerror(i32 noundef %2005, ptr noundef nonnull @.str.8) #10
  %2007 = load i32, ptr %2004, align 4, !tbaa !5
  %2008 = call ptr @s2n_strerror_debug(i32 noundef %2007, ptr noundef nonnull @.str.8) #10
  %2009 = load i32, ptr %1990, align 4, !tbaa !5
  %2010 = call ptr @strerror(i32 noundef %2009) #10
  %2011 = load i32, ptr %1990, align 4, !tbaa !5
  %2012 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2002, ptr noundef nonnull %.str.9.sink1420, i32 noundef %2003, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 190, ptr noundef %2006, ptr noundef %2008, ptr noundef %2010, i32 noundef %2011) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2013:                                             ; preds = %1984
  %2014 = add nsw i32 %1985, 2
  store i32 %2014, ptr @test_count, align 4, !tbaa !5
  %2015 = load ptr, ptr %1817, align 8, !tbaa !49
  %2016 = icmp eq ptr %2015, null
  br i1 %2016, label %2041, label %2017

2017:                                             ; preds = %2013
  %2018 = tail call ptr @__errno_location() #11
  %2019 = load i32, ptr %2018, align 4, !tbaa !5
  %2020 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2021 = call i32 @s2n_print_stacktrace(ptr noundef %2020) #10
  %2022 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2023 = trunc nuw i8 %2022 to i1
  br i1 %2023, label %2024, label %2028

2024:                                             ; preds = %2017
  %2025 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2026 = call i32 @fileno(ptr noundef %2025) #10
  %2027 = call i32 @isatty(i32 noundef %2026) #10
  %.not464 = icmp eq i32 %2027, 0
  br i1 %.not464, label %2028, label %2029

2028:                                             ; preds = %2024, %2017
  br label %2029

2029:                                             ; preds = %2024, %2028
  %.str.9.sink1431 = phi ptr [ @.str.9, %2028 ], [ @.str.6, %2024 ]
  store i32 %2019, ptr %2018, align 4, !tbaa !5
  %2030 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2031 = load i32, ptr @test_count, align 4, !tbaa !5
  %2032 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2033 = load i32, ptr %2032, align 4, !tbaa !5
  %2034 = call ptr @s2n_strerror(i32 noundef %2033, ptr noundef nonnull @.str.8) #10
  %2035 = load i32, ptr %2032, align 4, !tbaa !5
  %2036 = call ptr @s2n_strerror_debug(i32 noundef %2035, ptr noundef nonnull @.str.8) #10
  %2037 = load i32, ptr %2018, align 4, !tbaa !5
  %2038 = call ptr @strerror(i32 noundef %2037) #10
  %2039 = load i32, ptr %2018, align 4, !tbaa !5
  %2040 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2030, ptr noundef nonnull %.str.9.sink1431, i32 noundef %2031, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 191, ptr noundef %2034, ptr noundef %2036, ptr noundef %2038, i32 noundef %2039) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2041:                                             ; preds = %2013
  %2042 = add nsw i32 %1985, 3
  store i32 %2042, ptr @test_count, align 4, !tbaa !5
  %2043 = load ptr, ptr %1846, align 8, !tbaa !50
  %2044 = icmp eq ptr %2043, null
  br i1 %2044, label %2069, label %2045

2045:                                             ; preds = %2041
  %2046 = tail call ptr @__errno_location() #11
  %2047 = load i32, ptr %2046, align 4, !tbaa !5
  %2048 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2049 = call i32 @s2n_print_stacktrace(ptr noundef %2048) #10
  %2050 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2051 = trunc nuw i8 %2050 to i1
  br i1 %2051, label %2052, label %2056

2052:                                             ; preds = %2045
  %2053 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2054 = call i32 @fileno(ptr noundef %2053) #10
  %2055 = call i32 @isatty(i32 noundef %2054) #10
  %.not465 = icmp eq i32 %2055, 0
  br i1 %.not465, label %2056, label %2057

2056:                                             ; preds = %2052, %2045
  br label %2057

2057:                                             ; preds = %2052, %2056
  %.str.9.sink1442 = phi ptr [ @.str.9, %2056 ], [ @.str.6, %2052 ]
  store i32 %2047, ptr %2046, align 4, !tbaa !5
  %2058 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2059 = load i32, ptr @test_count, align 4, !tbaa !5
  %2060 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2061 = load i32, ptr %2060, align 4, !tbaa !5
  %2062 = call ptr @s2n_strerror(i32 noundef %2061, ptr noundef nonnull @.str.8) #10
  %2063 = load i32, ptr %2060, align 4, !tbaa !5
  %2064 = call ptr @s2n_strerror_debug(i32 noundef %2063, ptr noundef nonnull @.str.8) #10
  %2065 = load i32, ptr %2046, align 4, !tbaa !5
  %2066 = call ptr @strerror(i32 noundef %2065) #10
  %2067 = load i32, ptr %2046, align 4, !tbaa !5
  %2068 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2058, ptr noundef nonnull %.str.9.sink1442, i32 noundef %2059, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 192, ptr noundef %2062, ptr noundef %2064, ptr noundef %2066, i32 noundef %2067) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2069:                                             ; preds = %2041
  %2070 = add nsw i32 %1985, 4
  store i32 %2070, ptr @test_count, align 4, !tbaa !5
  %2071 = load ptr, ptr %1875, align 8, !tbaa !51
  %2072 = load ptr, ptr %9, align 8, !tbaa !9
  %2073 = getelementptr inbounds i8, ptr %2072, i64 8
  %2074 = load ptr, ptr %2073, align 8, !tbaa !54
  %2075 = load ptr, ptr %2074, align 8, !tbaa !9
  %2076 = icmp eq ptr %2071, %2075
  br i1 %2076, label %2101, label %2077

2077:                                             ; preds = %2069
  %2078 = tail call ptr @__errno_location() #11
  %2079 = load i32, ptr %2078, align 4, !tbaa !5
  %2080 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2081 = call i32 @s2n_print_stacktrace(ptr noundef %2080) #10
  %2082 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2083 = trunc nuw i8 %2082 to i1
  br i1 %2083, label %2084, label %2088

2084:                                             ; preds = %2077
  %2085 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2086 = call i32 @fileno(ptr noundef %2085) #10
  %2087 = call i32 @isatty(i32 noundef %2086) #10
  %.not466 = icmp eq i32 %2087, 0
  br i1 %.not466, label %2088, label %2089

2088:                                             ; preds = %2084, %2077
  br label %2089

2089:                                             ; preds = %2084, %2088
  %.str.9.sink1453 = phi ptr [ @.str.9, %2088 ], [ @.str.6, %2084 ]
  store i32 %2079, ptr %2078, align 4, !tbaa !5
  %2090 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2091 = load i32, ptr @test_count, align 4, !tbaa !5
  %2092 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2093 = load i32, ptr %2092, align 4, !tbaa !5
  %2094 = call ptr @s2n_strerror(i32 noundef %2093, ptr noundef nonnull @.str.8) #10
  %2095 = load i32, ptr %2092, align 4, !tbaa !5
  %2096 = call ptr @s2n_strerror_debug(i32 noundef %2095, ptr noundef nonnull @.str.8) #10
  %2097 = load i32, ptr %2078, align 4, !tbaa !5
  %2098 = call ptr @strerror(i32 noundef %2097) #10
  %2099 = load i32, ptr %2078, align 4, !tbaa !5
  %2100 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2090, ptr noundef nonnull %.str.9.sink1453, i32 noundef %2091, ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.5, i32 noundef 193, ptr noundef %2094, ptr noundef %2096, ptr noundef %2098, i32 noundef %2099) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2101:                                             ; preds = %2069
  %2102 = add nsw i32 %1985, 5
  store i32 %2102, ptr @test_count, align 4, !tbaa !5
  %2103 = call i32 @s2n_connection_free(ptr noundef nonnull %1617) #10
  %2104 = icmp eq i32 %2103, -1
  br i1 %2104, label %2105, label %2129

2105:                                             ; preds = %2101
  %2106 = tail call ptr @__errno_location() #11
  %2107 = load i32, ptr %2106, align 4, !tbaa !5
  %2108 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2109 = call i32 @s2n_print_stacktrace(ptr noundef %2108) #10
  %2110 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2111 = trunc nuw i8 %2110 to i1
  br i1 %2111, label %2112, label %2116

2112:                                             ; preds = %2105
  %2113 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2114 = call i32 @fileno(ptr noundef %2113) #10
  %2115 = call i32 @isatty(i32 noundef %2114) #10
  %.not528 = icmp eq i32 %2115, 0
  br i1 %.not528, label %2116, label %2117

2116:                                             ; preds = %2112, %2105
  br label %2117

2117:                                             ; preds = %2112, %2116
  %.str.9.sink1464 = phi ptr [ @.str.9, %2116 ], [ @.str.6, %2112 ]
  store i32 %2107, ptr %2106, align 4, !tbaa !5
  %2118 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2119 = load i32, ptr @test_count, align 4, !tbaa !5
  %2120 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2121 = load i32, ptr %2120, align 4, !tbaa !5
  %2122 = call ptr @s2n_strerror(i32 noundef %2121, ptr noundef nonnull @.str.8) #10
  %2123 = load i32, ptr %2120, align 4, !tbaa !5
  %2124 = call ptr @s2n_strerror_debug(i32 noundef %2123, ptr noundef nonnull @.str.8) #10
  %2125 = load i32, ptr %2106, align 4, !tbaa !5
  %2126 = call ptr @strerror(i32 noundef %2125) #10
  %2127 = load i32, ptr %2106, align 4, !tbaa !5
  %2128 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2118, ptr noundef nonnull %.str.9.sink1464, i32 noundef %2119, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, i32 noundef 194, ptr noundef %2122, ptr noundef %2124, ptr noundef %2126, i32 noundef %2127) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2129:                                             ; preds = %2101
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  %2130 = load i32, ptr @test_count, align 4, !tbaa !5
  %2131 = add nsw i32 %2130, 1
  store i32 %2131, ptr @test_count, align 4, !tbaa !5
  %2132 = call ptr @s2n_connection_new(i32 noundef 0) #10
  %2133 = icmp eq ptr %2132, null
  br i1 %2133, label %2134, label %2158

2134:                                             ; preds = %2129
  %2135 = tail call ptr @__errno_location() #11
  %2136 = load i32, ptr %2135, align 4, !tbaa !5
  %2137 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2138 = call i32 @s2n_print_stacktrace(ptr noundef %2137) #10
  %2139 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2140 = trunc nuw i8 %2139 to i1
  br i1 %2140, label %2141, label %2145

2141:                                             ; preds = %2134
  %2142 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2143 = call i32 @fileno(ptr noundef %2142) #10
  %2144 = call i32 @isatty(i32 noundef %2143) #10
  %.not527 = icmp eq i32 %2144, 0
  br i1 %.not527, label %2145, label %2146

2145:                                             ; preds = %2141, %2134
  br label %2146

2146:                                             ; preds = %2141, %2145
  %.str.9.sink1475 = phi ptr [ @.str.9, %2145 ], [ @.str.6, %2141 ]
  store i32 %2136, ptr %2135, align 4, !tbaa !5
  %2147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2148 = load i32, ptr @test_count, align 4, !tbaa !5
  %2149 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2150 = load i32, ptr %2149, align 4, !tbaa !5
  %2151 = call ptr @s2n_strerror(i32 noundef %2150, ptr noundef nonnull @.str.8) #10
  %2152 = load i32, ptr %2149, align 4, !tbaa !5
  %2153 = call ptr @s2n_strerror_debug(i32 noundef %2152, ptr noundef nonnull @.str.8) #10
  %2154 = load i32, ptr %2135, align 4, !tbaa !5
  %2155 = call ptr @strerror(i32 noundef %2154) #10
  %2156 = load i32, ptr %2135, align 4, !tbaa !5
  %2157 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2147, ptr noundef nonnull %.str.9.sink1475, i32 noundef %2148, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 201, ptr noundef %2151, ptr noundef %2153, ptr noundef %2155, i32 noundef %2156) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2158:                                             ; preds = %2129
  %2159 = getelementptr inbounds i8, ptr %2132, i64 16
  store ptr %8, ptr %2159, align 8, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  store ptr null, ptr %11, align 8, !tbaa !9
  %2160 = load i32, ptr @test_count, align 4, !tbaa !5
  %2161 = add nsw i32 %2160, 1
  store i32 %2161, ptr @test_count, align 4, !tbaa !5
  %2162 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %2132, ptr noundef nonnull %11) #10
  %2163 = icmp eq i32 %2162, -1
  br i1 %2163, label %2164, label %2188

2164:                                             ; preds = %2158
  %2165 = tail call ptr @__errno_location() #11
  %2166 = load i32, ptr %2165, align 4, !tbaa !5
  %2167 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2168 = call i32 @s2n_print_stacktrace(ptr noundef %2167) #10
  %2169 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2170 = trunc nuw i8 %2169 to i1
  br i1 %2170, label %2171, label %2175

2171:                                             ; preds = %2164
  %2172 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2173 = call i32 @fileno(ptr noundef %2172) #10
  %2174 = call i32 @isatty(i32 noundef %2173) #10
  %.not526 = icmp eq i32 %2174, 0
  br i1 %.not526, label %2175, label %2176

2175:                                             ; preds = %2171, %2164
  br label %2176

2176:                                             ; preds = %2171, %2175
  %.str.9.sink1486 = phi ptr [ @.str.9, %2175 ], [ @.str.6, %2171 ]
  store i32 %2166, ptr %2165, align 4, !tbaa !5
  %2177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2178 = load i32, ptr @test_count, align 4, !tbaa !5
  %2179 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2180 = load i32, ptr %2179, align 4, !tbaa !5
  %2181 = call ptr @s2n_strerror(i32 noundef %2180, ptr noundef nonnull @.str.8) #10
  %2182 = load i32, ptr %2179, align 4, !tbaa !5
  %2183 = call ptr @s2n_strerror_debug(i32 noundef %2182, ptr noundef nonnull @.str.8) #10
  %2184 = load i32, ptr %2165, align 4, !tbaa !5
  %2185 = call ptr @strerror(i32 noundef %2184) #10
  %2186 = load i32, ptr %2165, align 4, !tbaa !5
  %2187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2177, ptr noundef nonnull %.str.9.sink1486, i32 noundef %2178, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.5, i32 noundef 205, ptr noundef %2181, ptr noundef %2183, ptr noundef %2185, i32 noundef %2186) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2188:                                             ; preds = %2158
  %2189 = load i32, ptr @test_count, align 4, !tbaa !5
  %2190 = add nsw i32 %2189, 1
  store i32 %2190, ptr @test_count, align 4, !tbaa !5
  %2191 = load ptr, ptr %11, align 8, !tbaa !9
  %2192 = icmp eq ptr %2191, null
  br i1 %2192, label %2193, label %2217

2193:                                             ; preds = %2188
  %2194 = tail call ptr @__errno_location() #11
  %2195 = load i32, ptr %2194, align 4, !tbaa !5
  %2196 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2197 = call i32 @s2n_print_stacktrace(ptr noundef %2196) #10
  %2198 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2199 = trunc nuw i8 %2198 to i1
  br i1 %2199, label %2200, label %2204

2200:                                             ; preds = %2193
  %2201 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2202 = call i32 @fileno(ptr noundef %2201) #10
  %2203 = call i32 @isatty(i32 noundef %2202) #10
  %.not525 = icmp eq i32 %2203, 0
  br i1 %.not525, label %2204, label %2205

2204:                                             ; preds = %2200, %2193
  br label %2205

2205:                                             ; preds = %2200, %2204
  %.str.9.sink1497 = phi ptr [ @.str.9, %2204 ], [ @.str.6, %2200 ]
  store i32 %2195, ptr %2194, align 4, !tbaa !5
  %2206 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2207 = load i32, ptr @test_count, align 4, !tbaa !5
  %2208 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2209 = load i32, ptr %2208, align 4, !tbaa !5
  %2210 = call ptr @s2n_strerror(i32 noundef %2209, ptr noundef nonnull @.str.8) #10
  %2211 = load i32, ptr %2208, align 4, !tbaa !5
  %2212 = call ptr @s2n_strerror_debug(i32 noundef %2211, ptr noundef nonnull @.str.8) #10
  %2213 = load i32, ptr %2194, align 4, !tbaa !5
  %2214 = call ptr @strerror(i32 noundef %2213) #10
  %2215 = load i32, ptr %2194, align 4, !tbaa !5
  %2216 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2206, ptr noundef nonnull %.str.9.sink1497, i32 noundef %2207, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 206, ptr noundef %2210, ptr noundef %2212, ptr noundef %2214, i32 noundef %2215) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2217:                                             ; preds = %2188
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  store ptr null, ptr %12, align 8, !tbaa !9
  %2218 = add nsw i32 %2189, 2
  store i32 %2218, ptr @test_count, align 4, !tbaa !5
  %2219 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %2132, ptr noundef nonnull %12) #10
  %2220 = icmp eq i32 %2219, -1
  br i1 %2220, label %2221, label %2245

2221:                                             ; preds = %2217
  %2222 = tail call ptr @__errno_location() #11
  %2223 = load i32, ptr %2222, align 4, !tbaa !5
  %2224 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2225 = call i32 @s2n_print_stacktrace(ptr noundef %2224) #10
  %2226 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2227 = trunc nuw i8 %2226 to i1
  br i1 %2227, label %2228, label %2232

2228:                                             ; preds = %2221
  %2229 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2230 = call i32 @fileno(ptr noundef %2229) #10
  %2231 = call i32 @isatty(i32 noundef %2230) #10
  %.not524 = icmp eq i32 %2231, 0
  br i1 %.not524, label %2232, label %2233

2232:                                             ; preds = %2228, %2221
  br label %2233

2233:                                             ; preds = %2228, %2232
  %.str.9.sink1508 = phi ptr [ @.str.9, %2232 ], [ @.str.6, %2228 ]
  store i32 %2223, ptr %2222, align 4, !tbaa !5
  %2234 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2235 = load i32, ptr @test_count, align 4, !tbaa !5
  %2236 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2237 = load i32, ptr %2236, align 4, !tbaa !5
  %2238 = call ptr @s2n_strerror(i32 noundef %2237, ptr noundef nonnull @.str.8) #10
  %2239 = load i32, ptr %2236, align 4, !tbaa !5
  %2240 = call ptr @s2n_strerror_debug(i32 noundef %2239, ptr noundef nonnull @.str.8) #10
  %2241 = load i32, ptr %2222, align 4, !tbaa !5
  %2242 = call ptr @strerror(i32 noundef %2241) #10
  %2243 = load i32, ptr %2222, align 4, !tbaa !5
  %2244 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2234, ptr noundef nonnull %.str.9.sink1508, i32 noundef %2235, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.5, i32 noundef 209, ptr noundef %2238, ptr noundef %2240, ptr noundef %2242, i32 noundef %2243) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2245:                                             ; preds = %2217
  %2246 = load i32, ptr @test_count, align 4, !tbaa !5
  %2247 = add nsw i32 %2246, 1
  store i32 %2247, ptr @test_count, align 4, !tbaa !5
  %2248 = load ptr, ptr %12, align 8, !tbaa !9
  %2249 = icmp eq ptr %2248, null
  br i1 %2249, label %2250, label %2274

2250:                                             ; preds = %2245
  %2251 = tail call ptr @__errno_location() #11
  %2252 = load i32, ptr %2251, align 4, !tbaa !5
  %2253 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2254 = call i32 @s2n_print_stacktrace(ptr noundef %2253) #10
  %2255 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2256 = trunc nuw i8 %2255 to i1
  br i1 %2256, label %2257, label %2261

2257:                                             ; preds = %2250
  %2258 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2259 = call i32 @fileno(ptr noundef %2258) #10
  %2260 = call i32 @isatty(i32 noundef %2259) #10
  %.not523 = icmp eq i32 %2260, 0
  br i1 %.not523, label %2261, label %2262

2261:                                             ; preds = %2257, %2250
  br label %2262

2262:                                             ; preds = %2257, %2261
  %.str.9.sink1519 = phi ptr [ @.str.9, %2261 ], [ @.str.6, %2257 ]
  store i32 %2252, ptr %2251, align 4, !tbaa !5
  %2263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2264 = load i32, ptr @test_count, align 4, !tbaa !5
  %2265 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2266 = load i32, ptr %2265, align 4, !tbaa !5
  %2267 = call ptr @s2n_strerror(i32 noundef %2266, ptr noundef nonnull @.str.8) #10
  %2268 = load i32, ptr %2265, align 4, !tbaa !5
  %2269 = call ptr @s2n_strerror_debug(i32 noundef %2268, ptr noundef nonnull @.str.8) #10
  %2270 = load i32, ptr %2251, align 4, !tbaa !5
  %2271 = call ptr @strerror(i32 noundef %2270) #10
  %2272 = load i32, ptr %2251, align 4, !tbaa !5
  %2273 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2263, ptr noundef nonnull %.str.9.sink1519, i32 noundef %2264, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.5, i32 noundef 210, ptr noundef %2267, ptr noundef %2269, ptr noundef %2271, i32 noundef %2272) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2274:                                             ; preds = %2245
  %2275 = add nsw i32 %2246, 2
  store i32 %2275, ptr @test_count, align 4, !tbaa !5
  %2276 = icmp eq ptr %2248, %7
  br i1 %2276, label %2301, label %2277

2277:                                             ; preds = %2274
  %2278 = tail call ptr @__errno_location() #11
  %2279 = load i32, ptr %2278, align 4, !tbaa !5
  %2280 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2281 = call i32 @s2n_print_stacktrace(ptr noundef %2280) #10
  %2282 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2283 = trunc nuw i8 %2282 to i1
  br i1 %2283, label %2284, label %2288

2284:                                             ; preds = %2277
  %2285 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2286 = call i32 @fileno(ptr noundef %2285) #10
  %2287 = call i32 @isatty(i32 noundef %2286) #10
  %.not467 = icmp eq i32 %2287, 0
  br i1 %.not467, label %2288, label %2289

2288:                                             ; preds = %2284, %2277
  br label %2289

2289:                                             ; preds = %2284, %2288
  %.str.9.sink1530 = phi ptr [ @.str.9, %2288 ], [ @.str.6, %2284 ]
  store i32 %2279, ptr %2278, align 4, !tbaa !5
  %2290 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2291 = load i32, ptr @test_count, align 4, !tbaa !5
  %2292 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2293 = load i32, ptr %2292, align 4, !tbaa !5
  %2294 = call ptr @s2n_strerror(i32 noundef %2293, ptr noundef nonnull @.str.8) #10
  %2295 = load i32, ptr %2292, align 4, !tbaa !5
  %2296 = call ptr @s2n_strerror_debug(i32 noundef %2295, ptr noundef nonnull @.str.8) #10
  %2297 = load i32, ptr %2278, align 4, !tbaa !5
  %2298 = call ptr @strerror(i32 noundef %2297) #10
  %2299 = load i32, ptr %2278, align 4, !tbaa !5
  %2300 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2290, ptr noundef nonnull %.str.9.sink1530, i32 noundef %2291, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.5, i32 noundef 211, ptr noundef %2294, ptr noundef %2296, ptr noundef %2298, i32 noundef %2299) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2301:                                             ; preds = %2274
  %2302 = add nsw i32 %2246, 3
  store i32 %2302, ptr @test_count, align 4, !tbaa !5
  %2303 = getelementptr inbounds i8, ptr %2132, i64 720
  %2304 = load ptr, ptr %2303, align 8, !tbaa !22
  %2305 = icmp eq ptr %2304, null
  br i1 %2305, label %2330, label %2306

2306:                                             ; preds = %2301
  %2307 = tail call ptr @__errno_location() #11
  %2308 = load i32, ptr %2307, align 4, !tbaa !5
  %2309 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2310 = call i32 @s2n_print_stacktrace(ptr noundef %2309) #10
  %2311 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2312 = trunc nuw i8 %2311 to i1
  br i1 %2312, label %2313, label %2317

2313:                                             ; preds = %2306
  %2314 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2315 = call i32 @fileno(ptr noundef %2314) #10
  %2316 = call i32 @isatty(i32 noundef %2315) #10
  %.not468 = icmp eq i32 %2316, 0
  br i1 %.not468, label %2317, label %2318

2317:                                             ; preds = %2313, %2306
  br label %2318

2318:                                             ; preds = %2313, %2317
  %.str.9.sink1541 = phi ptr [ @.str.9, %2317 ], [ @.str.6, %2313 ]
  store i32 %2308, ptr %2307, align 4, !tbaa !5
  %2319 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2320 = load i32, ptr @test_count, align 4, !tbaa !5
  %2321 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2322 = load i32, ptr %2321, align 4, !tbaa !5
  %2323 = call ptr @s2n_strerror(i32 noundef %2322, ptr noundef nonnull @.str.8) #10
  %2324 = load i32, ptr %2321, align 4, !tbaa !5
  %2325 = call ptr @s2n_strerror_debug(i32 noundef %2324, ptr noundef nonnull @.str.8) #10
  %2326 = load i32, ptr %2307, align 4, !tbaa !5
  %2327 = call ptr @strerror(i32 noundef %2326) #10
  %2328 = load i32, ptr %2307, align 4, !tbaa !5
  %2329 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2319, ptr noundef nonnull %.str.9.sink1541, i32 noundef %2320, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 213, ptr noundef %2323, ptr noundef %2325, ptr noundef %2327, i32 noundef %2328) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2330:                                             ; preds = %2301
  %2331 = add nsw i32 %2246, 4
  store i32 %2331, ptr @test_count, align 4, !tbaa !5
  %2332 = getelementptr inbounds i8, ptr %2132, i64 816
  %2333 = load ptr, ptr %2332, align 8, !tbaa !49
  %2334 = icmp eq ptr %2333, null
  br i1 %2334, label %2359, label %2335

2335:                                             ; preds = %2330
  %2336 = tail call ptr @__errno_location() #11
  %2337 = load i32, ptr %2336, align 4, !tbaa !5
  %2338 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2339 = call i32 @s2n_print_stacktrace(ptr noundef %2338) #10
  %2340 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2341 = trunc nuw i8 %2340 to i1
  br i1 %2341, label %2342, label %2346

2342:                                             ; preds = %2335
  %2343 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2344 = call i32 @fileno(ptr noundef %2343) #10
  %2345 = call i32 @isatty(i32 noundef %2344) #10
  %.not469 = icmp eq i32 %2345, 0
  br i1 %.not469, label %2346, label %2347

2346:                                             ; preds = %2342, %2335
  br label %2347

2347:                                             ; preds = %2342, %2346
  %.str.9.sink1552 = phi ptr [ @.str.9, %2346 ], [ @.str.6, %2342 ]
  store i32 %2337, ptr %2336, align 4, !tbaa !5
  %2348 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2349 = load i32, ptr @test_count, align 4, !tbaa !5
  %2350 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2351 = load i32, ptr %2350, align 4, !tbaa !5
  %2352 = call ptr @s2n_strerror(i32 noundef %2351, ptr noundef nonnull @.str.8) #10
  %2353 = load i32, ptr %2350, align 4, !tbaa !5
  %2354 = call ptr @s2n_strerror_debug(i32 noundef %2353, ptr noundef nonnull @.str.8) #10
  %2355 = load i32, ptr %2336, align 4, !tbaa !5
  %2356 = call ptr @strerror(i32 noundef %2355) #10
  %2357 = load i32, ptr %2336, align 4, !tbaa !5
  %2358 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2348, ptr noundef nonnull %.str.9.sink1552, i32 noundef %2349, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 214, ptr noundef %2352, ptr noundef %2354, ptr noundef %2356, i32 noundef %2357) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2359:                                             ; preds = %2330
  %2360 = add nsw i32 %2246, 5
  store i32 %2360, ptr @test_count, align 4, !tbaa !5
  %2361 = getelementptr inbounds i8, ptr %2132, i64 728
  %2362 = load ptr, ptr %2361, align 8, !tbaa !50
  %2363 = icmp eq ptr %2362, null
  br i1 %2363, label %2388, label %2364

2364:                                             ; preds = %2359
  %2365 = tail call ptr @__errno_location() #11
  %2366 = load i32, ptr %2365, align 4, !tbaa !5
  %2367 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2368 = call i32 @s2n_print_stacktrace(ptr noundef %2367) #10
  %2369 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2370 = trunc nuw i8 %2369 to i1
  br i1 %2370, label %2371, label %2375

2371:                                             ; preds = %2364
  %2372 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2373 = call i32 @fileno(ptr noundef %2372) #10
  %2374 = call i32 @isatty(i32 noundef %2373) #10
  %.not470 = icmp eq i32 %2374, 0
  br i1 %.not470, label %2375, label %2376

2375:                                             ; preds = %2371, %2364
  br label %2376

2376:                                             ; preds = %2371, %2375
  %.str.9.sink1563 = phi ptr [ @.str.9, %2375 ], [ @.str.6, %2371 ]
  store i32 %2366, ptr %2365, align 4, !tbaa !5
  %2377 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2378 = load i32, ptr @test_count, align 4, !tbaa !5
  %2379 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2380 = load i32, ptr %2379, align 4, !tbaa !5
  %2381 = call ptr @s2n_strerror(i32 noundef %2380, ptr noundef nonnull @.str.8) #10
  %2382 = load i32, ptr %2379, align 4, !tbaa !5
  %2383 = call ptr @s2n_strerror_debug(i32 noundef %2382, ptr noundef nonnull @.str.8) #10
  %2384 = load i32, ptr %2365, align 4, !tbaa !5
  %2385 = call ptr @strerror(i32 noundef %2384) #10
  %2386 = load i32, ptr %2365, align 4, !tbaa !5
  %2387 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2377, ptr noundef nonnull %.str.9.sink1563, i32 noundef %2378, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 215, ptr noundef %2381, ptr noundef %2383, ptr noundef %2385, i32 noundef %2386) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2388:                                             ; preds = %2359
  %2389 = add nsw i32 %2246, 6
  store i32 %2389, ptr @test_count, align 4, !tbaa !5
  %2390 = getelementptr inbounds i8, ptr %2132, i64 656
  %2391 = load ptr, ptr %2390, align 8, !tbaa !51
  %2392 = icmp eq ptr %2391, null
  br i1 %2392, label %.preheader570, label %2396

.preheader570:                                    ; preds = %2388
  %2393 = load ptr, ptr %11, align 8, !tbaa !9
  %2394 = load i8, ptr %2393, align 8, !tbaa !15
  %.not650 = icmp eq i8 %2394, 0
  br i1 %.not650, label %.preheader569, label %.lr.ph618

.lr.ph618:                                        ; preds = %.preheader570
  %2395 = getelementptr inbounds i8, ptr %2132, i64 672
  br label %2424

2396:                                             ; preds = %2388
  %2397 = tail call ptr @__errno_location() #11
  %2398 = load i32, ptr %2397, align 4, !tbaa !5
  %2399 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2400 = call i32 @s2n_print_stacktrace(ptr noundef %2399) #10
  %2401 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2402 = trunc nuw i8 %2401 to i1
  br i1 %2402, label %2403, label %2407

2403:                                             ; preds = %2396
  %2404 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2405 = call i32 @fileno(ptr noundef %2404) #10
  %2406 = call i32 @isatty(i32 noundef %2405) #10
  %.not471 = icmp eq i32 %2406, 0
  br i1 %.not471, label %2407, label %2408

2407:                                             ; preds = %2403, %2396
  br label %2408

2408:                                             ; preds = %2403, %2407
  %.str.9.sink1574 = phi ptr [ @.str.9, %2407 ], [ @.str.6, %2403 ]
  store i32 %2398, ptr %2397, align 4, !tbaa !5
  %2409 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2410 = load i32, ptr @test_count, align 4, !tbaa !5
  %2411 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2412 = load i32, ptr %2411, align 4, !tbaa !5
  %2413 = call ptr @s2n_strerror(i32 noundef %2412, ptr noundef nonnull @.str.8) #10
  %2414 = load i32, ptr %2411, align 4, !tbaa !5
  %2415 = call ptr @s2n_strerror_debug(i32 noundef %2414, ptr noundef nonnull @.str.8) #10
  %2416 = load i32, ptr %2397, align 4, !tbaa !5
  %2417 = call ptr @strerror(i32 noundef %2416) #10
  %2418 = load i32, ptr %2397, align 4, !tbaa !5
  %2419 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2409, ptr noundef nonnull %.str.9.sink1574, i32 noundef %2410, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 216, ptr noundef %2413, ptr noundef %2415, ptr noundef %2417, i32 noundef %2418) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.preheader569.loopexit:                           ; preds = %2424
  %.pre684 = load ptr, ptr %12, align 8, !tbaa !9
  br label %.preheader569

.preheader569:                                    ; preds = %.preheader569.loopexit, %.preheader570
  %2420 = phi ptr [ %.pre684, %.preheader569.loopexit ], [ %2248, %.preheader570 ]
  %2421 = getelementptr inbounds i8, ptr %2420, i64 16
  %2422 = load i8, ptr %2421, align 8, !tbaa !19
  %.not651 = icmp eq i8 %2422, 0
  br i1 %.not651, label %._crit_edge621, label %.lr.ph620

.lr.ph620:                                        ; preds = %.preheader569
  %2423 = getelementptr inbounds i8, ptr %2132, i64 944
  br label %2439

2424:                                             ; preds = %.lr.ph618, %2424
  %2425 = phi ptr [ %2393, %.lr.ph618 ], [ %2432, %2424 ]
  %.0420617 = phi i64 [ 0, %.lr.ph618 ], [ %2431, %2424 ]
  %2426 = getelementptr inbounds i8, ptr %2425, i64 8
  %2427 = load ptr, ptr %2426, align 8, !tbaa !54
  %2428 = getelementptr inbounds ptr, ptr %2427, i64 %.0420617
  %2429 = load ptr, ptr %2428, align 8, !tbaa !9
  %2430 = getelementptr inbounds [4 x ptr], ptr %2395, i64 0, i64 %.0420617
  store ptr %2429, ptr %2430, align 8, !tbaa !9
  %2431 = add nuw nsw i64 %.0420617, 1
  %2432 = load ptr, ptr %11, align 8, !tbaa !9
  %2433 = load i8, ptr %2432, align 8, !tbaa !15
  %2434 = zext i8 %2433 to i64
  %2435 = icmp ult i64 %2431, %2434
  br i1 %2435, label %2424, label %.preheader569.loopexit, !llvm.loop !70

._crit_edge621:                                   ; preds = %2439, %.preheader569
  %2436 = add nsw i32 %2246, 7
  store i32 %2436, ptr @test_count, align 4, !tbaa !5
  %2437 = call i32 @s2n_choose_supported_group(ptr noundef nonnull %2132)
  %2438 = icmp eq i32 %2437, -1
  br i1 %2438, label %2452, label %2476

2439:                                             ; preds = %.lr.ph620, %2439
  %2440 = phi ptr [ %2420, %.lr.ph620 ], [ %2447, %2439 ]
  %.0421619 = phi i64 [ 0, %.lr.ph620 ], [ %2446, %2439 ]
  %2441 = getelementptr inbounds i8, ptr %2440, i64 24
  %2442 = load ptr, ptr %2441, align 8, !tbaa !57
  %2443 = getelementptr inbounds ptr, ptr %2442, i64 %.0421619
  %2444 = load ptr, ptr %2443, align 8, !tbaa !9
  %2445 = getelementptr inbounds [8 x ptr], ptr %2423, i64 0, i64 %.0421619
  store ptr %2444, ptr %2445, align 8, !tbaa !9
  %2446 = add nuw nsw i64 %.0421619, 1
  %2447 = load ptr, ptr %12, align 8, !tbaa !9
  %2448 = getelementptr inbounds i8, ptr %2447, i64 16
  %2449 = load i8, ptr %2448, align 8, !tbaa !19
  %2450 = zext i8 %2449 to i64
  %2451 = icmp ult i64 %2446, %2450
  br i1 %2451, label %2439, label %._crit_edge621, !llvm.loop !71

2452:                                             ; preds = %._crit_edge621
  %2453 = tail call ptr @__errno_location() #11
  %2454 = load i32, ptr %2453, align 4, !tbaa !5
  %2455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2456 = call i32 @s2n_print_stacktrace(ptr noundef %2455) #10
  %2457 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2458 = trunc nuw i8 %2457 to i1
  br i1 %2458, label %2459, label %2463

2459:                                             ; preds = %2452
  %2460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2461 = call i32 @fileno(ptr noundef %2460) #10
  %2462 = call i32 @isatty(i32 noundef %2461) #10
  %.not522 = icmp eq i32 %2462, 0
  br i1 %.not522, label %2463, label %2464

2463:                                             ; preds = %2459, %2452
  br label %2464

2464:                                             ; preds = %2459, %2463
  %.str.9.sink1585 = phi ptr [ @.str.9, %2463 ], [ @.str.6, %2459 ]
  store i32 %2454, ptr %2453, align 4, !tbaa !5
  %2465 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2466 = load i32, ptr @test_count, align 4, !tbaa !5
  %2467 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2468 = load i32, ptr %2467, align 4, !tbaa !5
  %2469 = call ptr @s2n_strerror(i32 noundef %2468, ptr noundef nonnull @.str.8) #10
  %2470 = load i32, ptr %2467, align 4, !tbaa !5
  %2471 = call ptr @s2n_strerror_debug(i32 noundef %2470, ptr noundef nonnull @.str.8) #10
  %2472 = load i32, ptr %2453, align 4, !tbaa !5
  %2473 = call ptr @strerror(i32 noundef %2472) #10
  %2474 = load i32, ptr %2453, align 4, !tbaa !5
  %2475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2465, ptr noundef nonnull %.str.9.sink1585, i32 noundef %2466, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 226, ptr noundef %2469, ptr noundef %2471, ptr noundef %2473, i32 noundef %2474) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2476:                                             ; preds = %._crit_edge621
  %2477 = load ptr, ptr %12, align 8, !tbaa !9
  %2478 = call ptr @s2n_kem_preferences_get_highest_priority_group(ptr noundef %2477) #10
  %2479 = call zeroext i1 @s2n_pq_is_enabled() #10
  %2480 = load i32, ptr @test_count, align 4, !tbaa !5
  %2481 = add nsw i32 %2480, 1
  store i32 %2481, ptr @test_count, align 4, !tbaa !5
  %2482 = icmp eq ptr %2478, null
  br i1 %2479, label %2483, label %2624

2483:                                             ; preds = %2476
  br i1 %2482, label %2484, label %2508

2484:                                             ; preds = %2483
  %2485 = tail call ptr @__errno_location() #11
  %2486 = load i32, ptr %2485, align 4, !tbaa !5
  %2487 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2488 = call i32 @s2n_print_stacktrace(ptr noundef %2487) #10
  %2489 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2490 = trunc nuw i8 %2489 to i1
  br i1 %2490, label %2491, label %2495

2491:                                             ; preds = %2484
  %2492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2493 = call i32 @fileno(ptr noundef %2492) #10
  %2494 = call i32 @isatty(i32 noundef %2493) #10
  %.not521 = icmp eq i32 %2494, 0
  br i1 %.not521, label %2495, label %2496

2495:                                             ; preds = %2491, %2484
  br label %2496

2496:                                             ; preds = %2491, %2495
  %.str.9.sink1596 = phi ptr [ @.str.9, %2495 ], [ @.str.6, %2491 ]
  store i32 %2486, ptr %2485, align 4, !tbaa !5
  %2497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2498 = load i32, ptr @test_count, align 4, !tbaa !5
  %2499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2500 = load i32, ptr %2499, align 4, !tbaa !5
  %2501 = call ptr @s2n_strerror(i32 noundef %2500, ptr noundef nonnull @.str.8) #10
  %2502 = load i32, ptr %2499, align 4, !tbaa !5
  %2503 = call ptr @s2n_strerror_debug(i32 noundef %2502, ptr noundef nonnull @.str.8) #10
  %2504 = load i32, ptr %2485, align 4, !tbaa !5
  %2505 = call ptr @strerror(i32 noundef %2504) #10
  %2506 = load i32, ptr %2485, align 4, !tbaa !5
  %2507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2497, ptr noundef nonnull %.str.9.sink1596, i32 noundef %2498, ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.5, i32 noundef 230, ptr noundef %2501, ptr noundef %2503, ptr noundef %2505, i32 noundef %2506) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2508:                                             ; preds = %2483
  %2509 = add nsw i32 %2480, 2
  store i32 %2509, ptr @test_count, align 4, !tbaa !5
  %2510 = load ptr, ptr %2303, align 8, !tbaa !22
  %2511 = icmp eq ptr %2510, %2478
  br i1 %2511, label %2536, label %2512

2512:                                             ; preds = %2508
  %2513 = tail call ptr @__errno_location() #11
  %2514 = load i32, ptr %2513, align 4, !tbaa !5
  %2515 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2516 = call i32 @s2n_print_stacktrace(ptr noundef %2515) #10
  %2517 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2518 = trunc nuw i8 %2517 to i1
  br i1 %2518, label %2519, label %2523

2519:                                             ; preds = %2512
  %2520 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2521 = call i32 @fileno(ptr noundef %2520) #10
  %2522 = call i32 @isatty(i32 noundef %2521) #10
  %.not473 = icmp eq i32 %2522, 0
  br i1 %.not473, label %2523, label %2524

2523:                                             ; preds = %2519, %2512
  br label %2524

2524:                                             ; preds = %2519, %2523
  %.str.9.sink1607 = phi ptr [ @.str.9, %2523 ], [ @.str.6, %2519 ]
  store i32 %2514, ptr %2513, align 4, !tbaa !5
  %2525 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2526 = load i32, ptr @test_count, align 4, !tbaa !5
  %2527 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2528 = load i32, ptr %2527, align 4, !tbaa !5
  %2529 = call ptr @s2n_strerror(i32 noundef %2528, ptr noundef nonnull @.str.8) #10
  %2530 = load i32, ptr %2527, align 4, !tbaa !5
  %2531 = call ptr @s2n_strerror_debug(i32 noundef %2530, ptr noundef nonnull @.str.8) #10
  %2532 = load i32, ptr %2513, align 4, !tbaa !5
  %2533 = call ptr @strerror(i32 noundef %2532) #10
  %2534 = load i32, ptr %2513, align 4, !tbaa !5
  %2535 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2525, ptr noundef nonnull %.str.9.sink1607, i32 noundef %2526, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.5, i32 noundef 231, ptr noundef %2529, ptr noundef %2531, ptr noundef %2533, i32 noundef %2534) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2536:                                             ; preds = %2508
  %2537 = add nsw i32 %2480, 3
  store i32 %2537, ptr @test_count, align 4, !tbaa !5
  %2538 = load ptr, ptr %2332, align 8, !tbaa !49
  %2539 = getelementptr inbounds i8, ptr %2478, i64 16
  %2540 = load ptr, ptr %2539, align 8, !tbaa !72
  %2541 = icmp eq ptr %2538, %2540
  br i1 %2541, label %2566, label %2542

2542:                                             ; preds = %2536
  %2543 = tail call ptr @__errno_location() #11
  %2544 = load i32, ptr %2543, align 4, !tbaa !5
  %2545 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2546 = call i32 @s2n_print_stacktrace(ptr noundef %2545) #10
  %2547 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2548 = trunc nuw i8 %2547 to i1
  br i1 %2548, label %2549, label %2553

2549:                                             ; preds = %2542
  %2550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2551 = call i32 @fileno(ptr noundef %2550) #10
  %2552 = call i32 @isatty(i32 noundef %2551) #10
  %.not474 = icmp eq i32 %2552, 0
  br i1 %.not474, label %2553, label %2554

2553:                                             ; preds = %2549, %2542
  br label %2554

2554:                                             ; preds = %2549, %2553
  %.str.9.sink1618 = phi ptr [ @.str.9, %2553 ], [ @.str.6, %2549 ]
  store i32 %2544, ptr %2543, align 4, !tbaa !5
  %2555 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2556 = load i32, ptr @test_count, align 4, !tbaa !5
  %2557 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2558 = load i32, ptr %2557, align 4, !tbaa !5
  %2559 = call ptr @s2n_strerror(i32 noundef %2558, ptr noundef nonnull @.str.8) #10
  %2560 = load i32, ptr %2557, align 4, !tbaa !5
  %2561 = call ptr @s2n_strerror_debug(i32 noundef %2560, ptr noundef nonnull @.str.8) #10
  %2562 = load i32, ptr %2543, align 4, !tbaa !5
  %2563 = call ptr @strerror(i32 noundef %2562) #10
  %2564 = load i32, ptr %2543, align 4, !tbaa !5
  %2565 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2555, ptr noundef nonnull %.str.9.sink1618, i32 noundef %2556, ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.5, i32 noundef 232, ptr noundef %2559, ptr noundef %2561, ptr noundef %2563, i32 noundef %2564) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2566:                                             ; preds = %2536
  %2567 = add nsw i32 %2480, 4
  store i32 %2567, ptr @test_count, align 4, !tbaa !5
  %2568 = load ptr, ptr %2361, align 8, !tbaa !50
  %2569 = getelementptr inbounds i8, ptr %2478, i64 24
  %2570 = load ptr, ptr %2569, align 8, !tbaa !74
  %2571 = icmp eq ptr %2568, %2570
  br i1 %2571, label %2596, label %2572

2572:                                             ; preds = %2566
  %2573 = tail call ptr @__errno_location() #11
  %2574 = load i32, ptr %2573, align 4, !tbaa !5
  %2575 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2576 = call i32 @s2n_print_stacktrace(ptr noundef %2575) #10
  %2577 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2578 = trunc nuw i8 %2577 to i1
  br i1 %2578, label %2579, label %2583

2579:                                             ; preds = %2572
  %2580 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2581 = call i32 @fileno(ptr noundef %2580) #10
  %2582 = call i32 @isatty(i32 noundef %2581) #10
  %.not475 = icmp eq i32 %2582, 0
  br i1 %.not475, label %2583, label %2584

2583:                                             ; preds = %2579, %2572
  br label %2584

2584:                                             ; preds = %2579, %2583
  %.str.9.sink1629 = phi ptr [ @.str.9, %2583 ], [ @.str.6, %2579 ]
  store i32 %2574, ptr %2573, align 4, !tbaa !5
  %2585 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2586 = load i32, ptr @test_count, align 4, !tbaa !5
  %2587 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2588 = load i32, ptr %2587, align 4, !tbaa !5
  %2589 = call ptr @s2n_strerror(i32 noundef %2588, ptr noundef nonnull @.str.8) #10
  %2590 = load i32, ptr %2587, align 4, !tbaa !5
  %2591 = call ptr @s2n_strerror_debug(i32 noundef %2590, ptr noundef nonnull @.str.8) #10
  %2592 = load i32, ptr %2573, align 4, !tbaa !5
  %2593 = call ptr @strerror(i32 noundef %2592) #10
  %2594 = load i32, ptr %2573, align 4, !tbaa !5
  %2595 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2585, ptr noundef nonnull %.str.9.sink1629, i32 noundef %2586, ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.5, i32 noundef 233, ptr noundef %2589, ptr noundef %2591, ptr noundef %2593, i32 noundef %2594) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2596:                                             ; preds = %2566
  %2597 = add nsw i32 %2480, 5
  store i32 %2597, ptr @test_count, align 4, !tbaa !5
  %2598 = load ptr, ptr %2390, align 8, !tbaa !51
  %2599 = icmp eq ptr %2598, null
  br i1 %2599, label %2649, label %2600

2600:                                             ; preds = %2596
  %2601 = tail call ptr @__errno_location() #11
  %2602 = load i32, ptr %2601, align 4, !tbaa !5
  %2603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2604 = call i32 @s2n_print_stacktrace(ptr noundef %2603) #10
  %2605 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2606 = trunc nuw i8 %2605 to i1
  br i1 %2606, label %2607, label %2611

2607:                                             ; preds = %2600
  %2608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2609 = call i32 @fileno(ptr noundef %2608) #10
  %2610 = call i32 @isatty(i32 noundef %2609) #10
  %.not476 = icmp eq i32 %2610, 0
  br i1 %.not476, label %2611, label %2612

2611:                                             ; preds = %2607, %2600
  br label %2612

2612:                                             ; preds = %2607, %2611
  %.str.9.sink1640 = phi ptr [ @.str.9, %2611 ], [ @.str.6, %2607 ]
  store i32 %2602, ptr %2601, align 4, !tbaa !5
  %2613 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2614 = load i32, ptr @test_count, align 4, !tbaa !5
  %2615 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2616 = load i32, ptr %2615, align 4, !tbaa !5
  %2617 = call ptr @s2n_strerror(i32 noundef %2616, ptr noundef nonnull @.str.8) #10
  %2618 = load i32, ptr %2615, align 4, !tbaa !5
  %2619 = call ptr @s2n_strerror_debug(i32 noundef %2618, ptr noundef nonnull @.str.8) #10
  %2620 = load i32, ptr %2601, align 4, !tbaa !5
  %2621 = call ptr @strerror(i32 noundef %2620) #10
  %2622 = load i32, ptr %2601, align 4, !tbaa !5
  %2623 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2613, ptr noundef nonnull %.str.9.sink1640, i32 noundef %2614, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 234, ptr noundef %2617, ptr noundef %2619, ptr noundef %2621, i32 noundef %2622) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2624:                                             ; preds = %2476
  br i1 %2482, label %2649, label %2625

2625:                                             ; preds = %2624
  %2626 = tail call ptr @__errno_location() #11
  %2627 = load i32, ptr %2626, align 4, !tbaa !5
  %2628 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2629 = call i32 @s2n_print_stacktrace(ptr noundef %2628) #10
  %2630 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2631 = trunc nuw i8 %2630 to i1
  br i1 %2631, label %2632, label %2636

2632:                                             ; preds = %2625
  %2633 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2634 = call i32 @fileno(ptr noundef %2633) #10
  %2635 = call i32 @isatty(i32 noundef %2634) #10
  %.not472 = icmp eq i32 %2635, 0
  br i1 %.not472, label %2636, label %2637

2636:                                             ; preds = %2632, %2625
  br label %2637

2637:                                             ; preds = %2632, %2636
  %.str.9.sink1651 = phi ptr [ @.str.9, %2636 ], [ @.str.6, %2632 ]
  store i32 %2627, ptr %2626, align 4, !tbaa !5
  %2638 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2639 = load i32, ptr @test_count, align 4, !tbaa !5
  %2640 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2641 = load i32, ptr %2640, align 4, !tbaa !5
  %2642 = call ptr @s2n_strerror(i32 noundef %2641, ptr noundef nonnull @.str.8) #10
  %2643 = load i32, ptr %2640, align 4, !tbaa !5
  %2644 = call ptr @s2n_strerror_debug(i32 noundef %2643, ptr noundef nonnull @.str.8) #10
  %2645 = load i32, ptr %2626, align 4, !tbaa !5
  %2646 = call ptr @strerror(i32 noundef %2645) #10
  %2647 = load i32, ptr %2626, align 4, !tbaa !5
  %2648 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2638, ptr noundef nonnull %.str.9.sink1651, i32 noundef %2639, ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.5, i32 noundef 236, ptr noundef %2642, ptr noundef %2644, ptr noundef %2646, i32 noundef %2647) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2649:                                             ; preds = %2596, %2624
  %2650 = phi i32 [ %2597, %2596 ], [ %2481, %2624 ]
  %2651 = add nsw i32 %2650, 1
  store i32 %2651, ptr @test_count, align 4, !tbaa !5
  %2652 = call i32 @s2n_connection_free(ptr noundef nonnull %2132) #10
  %2653 = icmp eq i32 %2652, -1
  br i1 %2653, label %2654, label %2678

2654:                                             ; preds = %2649
  %2655 = tail call ptr @__errno_location() #11
  %2656 = load i32, ptr %2655, align 4, !tbaa !5
  %2657 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2658 = call i32 @s2n_print_stacktrace(ptr noundef %2657) #10
  %2659 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2660 = trunc nuw i8 %2659 to i1
  br i1 %2660, label %2661, label %2665

2661:                                             ; preds = %2654
  %2662 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2663 = call i32 @fileno(ptr noundef %2662) #10
  %2664 = call i32 @isatty(i32 noundef %2663) #10
  %.not520 = icmp eq i32 %2664, 0
  br i1 %.not520, label %2665, label %2666

2665:                                             ; preds = %2661, %2654
  br label %2666

2666:                                             ; preds = %2661, %2665
  %.str.9.sink1662 = phi ptr [ @.str.9, %2665 ], [ @.str.6, %2661 ]
  store i32 %2656, ptr %2655, align 4, !tbaa !5
  %2667 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2668 = load i32, ptr @test_count, align 4, !tbaa !5
  %2669 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2670 = load i32, ptr %2669, align 4, !tbaa !5
  %2671 = call ptr @s2n_strerror(i32 noundef %2670, ptr noundef nonnull @.str.8) #10
  %2672 = load i32, ptr %2669, align 4, !tbaa !5
  %2673 = call ptr @s2n_strerror_debug(i32 noundef %2672, ptr noundef nonnull @.str.8) #10
  %2674 = load i32, ptr %2655, align 4, !tbaa !5
  %2675 = call ptr @strerror(i32 noundef %2674) #10
  %2676 = load i32, ptr %2655, align 4, !tbaa !5
  %2677 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2667, ptr noundef nonnull %.str.9.sink1662, i32 noundef %2668, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, i32 noundef 238, ptr noundef %2671, ptr noundef %2673, ptr noundef %2675, i32 noundef %2676) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2678:                                             ; preds = %2649
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #10
  store i32 0, ptr %13, align 4, !tbaa !5
  %2679 = load i32, ptr @test_count, align 4, !tbaa !5
  %2680 = add nsw i32 %2679, 1
  store i32 %2680, ptr @test_count, align 4, !tbaa !5
  %2681 = call i32 @s2n_kem_preferences_groups_available(ptr noundef nonnull @kem_preferences_all, ptr noundef nonnull %13) #10
  %2682 = call zeroext i1 @s2n_result_is_ok(i32 %2681)
  br i1 %2682, label %2707, label %2683

2683:                                             ; preds = %2678
  %2684 = tail call ptr @__errno_location() #11
  %2685 = load i32, ptr %2684, align 4, !tbaa !5
  %2686 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2687 = call i32 @s2n_print_stacktrace(ptr noundef %2686) #10
  %2688 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2689 = trunc nuw i8 %2688 to i1
  br i1 %2689, label %2690, label %2694

2690:                                             ; preds = %2683
  %2691 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2692 = call i32 @fileno(ptr noundef %2691) #10
  %2693 = call i32 @isatty(i32 noundef %2692) #10
  %.not477 = icmp eq i32 %2693, 0
  br i1 %.not477, label %2694, label %2695

2694:                                             ; preds = %2690, %2683
  br label %2695

2695:                                             ; preds = %2690, %2694
  %.str.9.sink1673 = phi ptr [ @.str.9, %2694 ], [ @.str.6, %2690 ]
  store i32 %2685, ptr %2684, align 4, !tbaa !5
  %2696 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2697 = load i32, ptr @test_count, align 4, !tbaa !5
  %2698 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2699 = load i32, ptr %2698, align 4, !tbaa !5
  %2700 = call ptr @s2n_strerror(i32 noundef %2699, ptr noundef nonnull @.str.8) #10
  %2701 = load i32, ptr %2698, align 4, !tbaa !5
  %2702 = call ptr @s2n_strerror_debug(i32 noundef %2701, ptr noundef nonnull @.str.8) #10
  %2703 = load i32, ptr %2684, align 4, !tbaa !5
  %2704 = call ptr @strerror(i32 noundef %2703) #10
  %2705 = load i32, ptr %2684, align 4, !tbaa !5
  %2706 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2696, ptr noundef nonnull %.str.9.sink1673, i32 noundef %2697, ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.5, i32 noundef 244, ptr noundef %2700, ptr noundef %2702, ptr noundef %2704, i32 noundef %2705) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2707:                                             ; preds = %2678
  %2708 = load i32, ptr %13, align 4, !tbaa !5
  %.not478 = icmp eq i32 %2708, 0
  br i1 %.not478, label %3255, label %2709

2709:                                             ; preds = %2707
  %2710 = load i32, ptr @test_count, align 4, !tbaa !5
  %2711 = add nsw i32 %2710, 1
  store i32 %2711, ptr @test_count, align 4, !tbaa !5
  %2712 = call ptr @s2n_connection_new(i32 noundef 0) #10
  %2713 = icmp eq ptr %2712, null
  br i1 %2713, label %2714, label %2738

2714:                                             ; preds = %2709
  %2715 = tail call ptr @__errno_location() #11
  %2716 = load i32, ptr %2715, align 4, !tbaa !5
  %2717 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2718 = call i32 @s2n_print_stacktrace(ptr noundef %2717) #10
  %2719 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2720 = trunc nuw i8 %2719 to i1
  br i1 %2720, label %2721, label %2725

2721:                                             ; preds = %2714
  %2722 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2723 = call i32 @fileno(ptr noundef %2722) #10
  %2724 = call i32 @isatty(i32 noundef %2723) #10
  %.not519 = icmp eq i32 %2724, 0
  br i1 %.not519, label %2725, label %2726

2725:                                             ; preds = %2721, %2714
  br label %2726

2726:                                             ; preds = %2721, %2725
  %.str.9.sink1684 = phi ptr [ @.str.9, %2725 ], [ @.str.6, %2721 ]
  store i32 %2716, ptr %2715, align 4, !tbaa !5
  %2727 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2728 = load i32, ptr @test_count, align 4, !tbaa !5
  %2729 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2730 = load i32, ptr %2729, align 4, !tbaa !5
  %2731 = call ptr @s2n_strerror(i32 noundef %2730, ptr noundef nonnull @.str.8) #10
  %2732 = load i32, ptr %2729, align 4, !tbaa !5
  %2733 = call ptr @s2n_strerror_debug(i32 noundef %2732, ptr noundef nonnull @.str.8) #10
  %2734 = load i32, ptr %2715, align 4, !tbaa !5
  %2735 = call ptr @strerror(i32 noundef %2734) #10
  %2736 = load i32, ptr %2715, align 4, !tbaa !5
  %2737 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2727, ptr noundef nonnull %.str.9.sink1684, i32 noundef %2728, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 247, ptr noundef %2731, ptr noundef %2733, ptr noundef %2735, i32 noundef %2736) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2738:                                             ; preds = %2709
  %2739 = getelementptr inbounds i8, ptr %2712, i64 16
  store ptr %8, ptr %2739, align 8, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  store ptr null, ptr %14, align 8, !tbaa !9
  %2740 = load i32, ptr @test_count, align 4, !tbaa !5
  %2741 = add nsw i32 %2740, 1
  store i32 %2741, ptr @test_count, align 4, !tbaa !5
  %2742 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %2712, ptr noundef nonnull %14) #10
  %2743 = icmp eq i32 %2742, -1
  br i1 %2743, label %2744, label %2768

2744:                                             ; preds = %2738
  %2745 = tail call ptr @__errno_location() #11
  %2746 = load i32, ptr %2745, align 4, !tbaa !5
  %2747 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2748 = call i32 @s2n_print_stacktrace(ptr noundef %2747) #10
  %2749 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2750 = trunc nuw i8 %2749 to i1
  br i1 %2750, label %2751, label %2755

2751:                                             ; preds = %2744
  %2752 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2753 = call i32 @fileno(ptr noundef %2752) #10
  %2754 = call i32 @isatty(i32 noundef %2753) #10
  %.not518 = icmp eq i32 %2754, 0
  br i1 %.not518, label %2755, label %2756

2755:                                             ; preds = %2751, %2744
  br label %2756

2756:                                             ; preds = %2751, %2755
  %.str.9.sink1695 = phi ptr [ @.str.9, %2755 ], [ @.str.6, %2751 ]
  store i32 %2746, ptr %2745, align 4, !tbaa !5
  %2757 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2758 = load i32, ptr @test_count, align 4, !tbaa !5
  %2759 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2760 = load i32, ptr %2759, align 4, !tbaa !5
  %2761 = call ptr @s2n_strerror(i32 noundef %2760, ptr noundef nonnull @.str.8) #10
  %2762 = load i32, ptr %2759, align 4, !tbaa !5
  %2763 = call ptr @s2n_strerror_debug(i32 noundef %2762, ptr noundef nonnull @.str.8) #10
  %2764 = load i32, ptr %2745, align 4, !tbaa !5
  %2765 = call ptr @strerror(i32 noundef %2764) #10
  %2766 = load i32, ptr %2745, align 4, !tbaa !5
  %2767 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2757, ptr noundef nonnull %.str.9.sink1695, i32 noundef %2758, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.5, i32 noundef 251, ptr noundef %2761, ptr noundef %2763, ptr noundef %2765, i32 noundef %2766) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2768:                                             ; preds = %2738
  %2769 = load i32, ptr @test_count, align 4, !tbaa !5
  %2770 = add nsw i32 %2769, 1
  store i32 %2770, ptr @test_count, align 4, !tbaa !5
  %2771 = load ptr, ptr %14, align 8, !tbaa !9
  %2772 = icmp eq ptr %2771, null
  br i1 %2772, label %2773, label %2797

2773:                                             ; preds = %2768
  %2774 = tail call ptr @__errno_location() #11
  %2775 = load i32, ptr %2774, align 4, !tbaa !5
  %2776 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2777 = call i32 @s2n_print_stacktrace(ptr noundef %2776) #10
  %2778 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2779 = trunc nuw i8 %2778 to i1
  br i1 %2779, label %2780, label %2784

2780:                                             ; preds = %2773
  %2781 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2782 = call i32 @fileno(ptr noundef %2781) #10
  %2783 = call i32 @isatty(i32 noundef %2782) #10
  %.not517 = icmp eq i32 %2783, 0
  br i1 %.not517, label %2784, label %2785

2784:                                             ; preds = %2780, %2773
  br label %2785

2785:                                             ; preds = %2780, %2784
  %.str.9.sink1706 = phi ptr [ @.str.9, %2784 ], [ @.str.6, %2780 ]
  store i32 %2775, ptr %2774, align 4, !tbaa !5
  %2786 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2787 = load i32, ptr @test_count, align 4, !tbaa !5
  %2788 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2789 = load i32, ptr %2788, align 4, !tbaa !5
  %2790 = call ptr @s2n_strerror(i32 noundef %2789, ptr noundef nonnull @.str.8) #10
  %2791 = load i32, ptr %2788, align 4, !tbaa !5
  %2792 = call ptr @s2n_strerror_debug(i32 noundef %2791, ptr noundef nonnull @.str.8) #10
  %2793 = load i32, ptr %2774, align 4, !tbaa !5
  %2794 = call ptr @strerror(i32 noundef %2793) #10
  %2795 = load i32, ptr %2774, align 4, !tbaa !5
  %2796 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2786, ptr noundef nonnull %.str.9.sink1706, i32 noundef %2787, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 252, ptr noundef %2790, ptr noundef %2792, ptr noundef %2794, i32 noundef %2795) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2797:                                             ; preds = %2768
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  store ptr null, ptr %15, align 8, !tbaa !9
  %2798 = add nsw i32 %2769, 2
  store i32 %2798, ptr @test_count, align 4, !tbaa !5
  %2799 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %2712, ptr noundef nonnull %15) #10
  %2800 = icmp eq i32 %2799, -1
  br i1 %2800, label %2801, label %2825

2801:                                             ; preds = %2797
  %2802 = tail call ptr @__errno_location() #11
  %2803 = load i32, ptr %2802, align 4, !tbaa !5
  %2804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2805 = call i32 @s2n_print_stacktrace(ptr noundef %2804) #10
  %2806 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2807 = trunc nuw i8 %2806 to i1
  br i1 %2807, label %2808, label %2812

2808:                                             ; preds = %2801
  %2809 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2810 = call i32 @fileno(ptr noundef %2809) #10
  %2811 = call i32 @isatty(i32 noundef %2810) #10
  %.not516 = icmp eq i32 %2811, 0
  br i1 %.not516, label %2812, label %2813

2812:                                             ; preds = %2808, %2801
  br label %2813

2813:                                             ; preds = %2808, %2812
  %.str.9.sink1717 = phi ptr [ @.str.9, %2812 ], [ @.str.6, %2808 ]
  store i32 %2803, ptr %2802, align 4, !tbaa !5
  %2814 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2815 = load i32, ptr @test_count, align 4, !tbaa !5
  %2816 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2817 = load i32, ptr %2816, align 4, !tbaa !5
  %2818 = call ptr @s2n_strerror(i32 noundef %2817, ptr noundef nonnull @.str.8) #10
  %2819 = load i32, ptr %2816, align 4, !tbaa !5
  %2820 = call ptr @s2n_strerror_debug(i32 noundef %2819, ptr noundef nonnull @.str.8) #10
  %2821 = load i32, ptr %2802, align 4, !tbaa !5
  %2822 = call ptr @strerror(i32 noundef %2821) #10
  %2823 = load i32, ptr %2802, align 4, !tbaa !5
  %2824 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2814, ptr noundef nonnull %.str.9.sink1717, i32 noundef %2815, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.5, i32 noundef 255, ptr noundef %2818, ptr noundef %2820, ptr noundef %2822, i32 noundef %2823) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2825:                                             ; preds = %2797
  %2826 = load i32, ptr @test_count, align 4, !tbaa !5
  %2827 = add nsw i32 %2826, 1
  store i32 %2827, ptr @test_count, align 4, !tbaa !5
  %2828 = load ptr, ptr %15, align 8, !tbaa !9
  %2829 = icmp eq ptr %2828, null
  br i1 %2829, label %2830, label %2854

2830:                                             ; preds = %2825
  %2831 = tail call ptr @__errno_location() #11
  %2832 = load i32, ptr %2831, align 4, !tbaa !5
  %2833 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2834 = call i32 @s2n_print_stacktrace(ptr noundef %2833) #10
  %2835 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2836 = trunc nuw i8 %2835 to i1
  br i1 %2836, label %2837, label %2841

2837:                                             ; preds = %2830
  %2838 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2839 = call i32 @fileno(ptr noundef %2838) #10
  %2840 = call i32 @isatty(i32 noundef %2839) #10
  %.not515 = icmp eq i32 %2840, 0
  br i1 %.not515, label %2841, label %2842

2841:                                             ; preds = %2837, %2830
  br label %2842

2842:                                             ; preds = %2837, %2841
  %.str.9.sink1728 = phi ptr [ @.str.9, %2841 ], [ @.str.6, %2837 ]
  store i32 %2832, ptr %2831, align 4, !tbaa !5
  %2843 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2844 = load i32, ptr @test_count, align 4, !tbaa !5
  %2845 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2846 = load i32, ptr %2845, align 4, !tbaa !5
  %2847 = call ptr @s2n_strerror(i32 noundef %2846, ptr noundef nonnull @.str.8) #10
  %2848 = load i32, ptr %2845, align 4, !tbaa !5
  %2849 = call ptr @s2n_strerror_debug(i32 noundef %2848, ptr noundef nonnull @.str.8) #10
  %2850 = load i32, ptr %2831, align 4, !tbaa !5
  %2851 = call ptr @strerror(i32 noundef %2850) #10
  %2852 = load i32, ptr %2831, align 4, !tbaa !5
  %2853 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2843, ptr noundef nonnull %.str.9.sink1728, i32 noundef %2844, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.5, i32 noundef 256, ptr noundef %2847, ptr noundef %2849, ptr noundef %2851, i32 noundef %2852) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2854:                                             ; preds = %2825
  %2855 = add nsw i32 %2826, 2
  store i32 %2855, ptr @test_count, align 4, !tbaa !5
  %2856 = icmp eq ptr %2828, %7
  br i1 %2856, label %2881, label %2857

2857:                                             ; preds = %2854
  %2858 = tail call ptr @__errno_location() #11
  %2859 = load i32, ptr %2858, align 4, !tbaa !5
  %2860 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2861 = call i32 @s2n_print_stacktrace(ptr noundef %2860) #10
  %2862 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2863 = trunc nuw i8 %2862 to i1
  br i1 %2863, label %2864, label %2868

2864:                                             ; preds = %2857
  %2865 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2866 = call i32 @fileno(ptr noundef %2865) #10
  %2867 = call i32 @isatty(i32 noundef %2866) #10
  %.not479 = icmp eq i32 %2867, 0
  br i1 %.not479, label %2868, label %2869

2868:                                             ; preds = %2864, %2857
  br label %2869

2869:                                             ; preds = %2864, %2868
  %.str.9.sink1739 = phi ptr [ @.str.9, %2868 ], [ @.str.6, %2864 ]
  store i32 %2859, ptr %2858, align 4, !tbaa !5
  %2870 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2871 = load i32, ptr @test_count, align 4, !tbaa !5
  %2872 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2873 = load i32, ptr %2872, align 4, !tbaa !5
  %2874 = call ptr @s2n_strerror(i32 noundef %2873, ptr noundef nonnull @.str.8) #10
  %2875 = load i32, ptr %2872, align 4, !tbaa !5
  %2876 = call ptr @s2n_strerror_debug(i32 noundef %2875, ptr noundef nonnull @.str.8) #10
  %2877 = load i32, ptr %2858, align 4, !tbaa !5
  %2878 = call ptr @strerror(i32 noundef %2877) #10
  %2879 = load i32, ptr %2858, align 4, !tbaa !5
  %2880 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2870, ptr noundef nonnull %.str.9.sink1739, i32 noundef %2871, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.5, i32 noundef 257, ptr noundef %2874, ptr noundef %2876, ptr noundef %2878, i32 noundef %2879) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2881:                                             ; preds = %2854
  %2882 = add nsw i32 %2826, 3
  store i32 %2882, ptr @test_count, align 4, !tbaa !5
  %2883 = getelementptr inbounds i8, ptr %2712, i64 720
  %2884 = load ptr, ptr %2883, align 8, !tbaa !22
  %2885 = icmp eq ptr %2884, null
  br i1 %2885, label %2910, label %2886

2886:                                             ; preds = %2881
  %2887 = tail call ptr @__errno_location() #11
  %2888 = load i32, ptr %2887, align 4, !tbaa !5
  %2889 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2890 = call i32 @s2n_print_stacktrace(ptr noundef %2889) #10
  %2891 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2892 = trunc nuw i8 %2891 to i1
  br i1 %2892, label %2893, label %2897

2893:                                             ; preds = %2886
  %2894 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2895 = call i32 @fileno(ptr noundef %2894) #10
  %2896 = call i32 @isatty(i32 noundef %2895) #10
  %.not480 = icmp eq i32 %2896, 0
  br i1 %.not480, label %2897, label %2898

2897:                                             ; preds = %2893, %2886
  br label %2898

2898:                                             ; preds = %2893, %2897
  %.str.9.sink1750 = phi ptr [ @.str.9, %2897 ], [ @.str.6, %2893 ]
  store i32 %2888, ptr %2887, align 4, !tbaa !5
  %2899 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2900 = load i32, ptr @test_count, align 4, !tbaa !5
  %2901 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2902 = load i32, ptr %2901, align 4, !tbaa !5
  %2903 = call ptr @s2n_strerror(i32 noundef %2902, ptr noundef nonnull @.str.8) #10
  %2904 = load i32, ptr %2901, align 4, !tbaa !5
  %2905 = call ptr @s2n_strerror_debug(i32 noundef %2904, ptr noundef nonnull @.str.8) #10
  %2906 = load i32, ptr %2887, align 4, !tbaa !5
  %2907 = call ptr @strerror(i32 noundef %2906) #10
  %2908 = load i32, ptr %2887, align 4, !tbaa !5
  %2909 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2899, ptr noundef nonnull %.str.9.sink1750, i32 noundef %2900, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 259, ptr noundef %2903, ptr noundef %2905, ptr noundef %2907, i32 noundef %2908) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2910:                                             ; preds = %2881
  %2911 = add nsw i32 %2826, 4
  store i32 %2911, ptr @test_count, align 4, !tbaa !5
  %2912 = getelementptr inbounds i8, ptr %2712, i64 816
  %2913 = load ptr, ptr %2912, align 8, !tbaa !49
  %2914 = icmp eq ptr %2913, null
  br i1 %2914, label %2939, label %2915

2915:                                             ; preds = %2910
  %2916 = tail call ptr @__errno_location() #11
  %2917 = load i32, ptr %2916, align 4, !tbaa !5
  %2918 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2919 = call i32 @s2n_print_stacktrace(ptr noundef %2918) #10
  %2920 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2921 = trunc nuw i8 %2920 to i1
  br i1 %2921, label %2922, label %2926

2922:                                             ; preds = %2915
  %2923 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2924 = call i32 @fileno(ptr noundef %2923) #10
  %2925 = call i32 @isatty(i32 noundef %2924) #10
  %.not481 = icmp eq i32 %2925, 0
  br i1 %.not481, label %2926, label %2927

2926:                                             ; preds = %2922, %2915
  br label %2927

2927:                                             ; preds = %2922, %2926
  %.str.9.sink1761 = phi ptr [ @.str.9, %2926 ], [ @.str.6, %2922 ]
  store i32 %2917, ptr %2916, align 4, !tbaa !5
  %2928 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2929 = load i32, ptr @test_count, align 4, !tbaa !5
  %2930 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2931 = load i32, ptr %2930, align 4, !tbaa !5
  %2932 = call ptr @s2n_strerror(i32 noundef %2931, ptr noundef nonnull @.str.8) #10
  %2933 = load i32, ptr %2930, align 4, !tbaa !5
  %2934 = call ptr @s2n_strerror_debug(i32 noundef %2933, ptr noundef nonnull @.str.8) #10
  %2935 = load i32, ptr %2916, align 4, !tbaa !5
  %2936 = call ptr @strerror(i32 noundef %2935) #10
  %2937 = load i32, ptr %2916, align 4, !tbaa !5
  %2938 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2928, ptr noundef nonnull %.str.9.sink1761, i32 noundef %2929, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 260, ptr noundef %2932, ptr noundef %2934, ptr noundef %2936, i32 noundef %2937) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2939:                                             ; preds = %2910
  %2940 = add nsw i32 %2826, 5
  store i32 %2940, ptr @test_count, align 4, !tbaa !5
  %2941 = getelementptr inbounds i8, ptr %2712, i64 728
  %2942 = load ptr, ptr %2941, align 8, !tbaa !50
  %2943 = icmp eq ptr %2942, null
  br i1 %2943, label %2968, label %2944

2944:                                             ; preds = %2939
  %2945 = tail call ptr @__errno_location() #11
  %2946 = load i32, ptr %2945, align 4, !tbaa !5
  %2947 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2948 = call i32 @s2n_print_stacktrace(ptr noundef %2947) #10
  %2949 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2950 = trunc nuw i8 %2949 to i1
  br i1 %2950, label %2951, label %2955

2951:                                             ; preds = %2944
  %2952 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2953 = call i32 @fileno(ptr noundef %2952) #10
  %2954 = call i32 @isatty(i32 noundef %2953) #10
  %.not482 = icmp eq i32 %2954, 0
  br i1 %.not482, label %2955, label %2956

2955:                                             ; preds = %2951, %2944
  br label %2956

2956:                                             ; preds = %2951, %2955
  %.str.9.sink1772 = phi ptr [ @.str.9, %2955 ], [ @.str.6, %2951 ]
  store i32 %2946, ptr %2945, align 4, !tbaa !5
  %2957 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2958 = load i32, ptr @test_count, align 4, !tbaa !5
  %2959 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2960 = load i32, ptr %2959, align 4, !tbaa !5
  %2961 = call ptr @s2n_strerror(i32 noundef %2960, ptr noundef nonnull @.str.8) #10
  %2962 = load i32, ptr %2959, align 4, !tbaa !5
  %2963 = call ptr @s2n_strerror_debug(i32 noundef %2962, ptr noundef nonnull @.str.8) #10
  %2964 = load i32, ptr %2945, align 4, !tbaa !5
  %2965 = call ptr @strerror(i32 noundef %2964) #10
  %2966 = load i32, ptr %2945, align 4, !tbaa !5
  %2967 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2957, ptr noundef nonnull %.str.9.sink1772, i32 noundef %2958, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 261, ptr noundef %2961, ptr noundef %2963, ptr noundef %2965, i32 noundef %2966) #12
  call void @exit(i32 noundef 1) #13
  unreachable

2968:                                             ; preds = %2939
  %2969 = add nsw i32 %2826, 6
  store i32 %2969, ptr @test_count, align 4, !tbaa !5
  %2970 = getelementptr inbounds i8, ptr %2712, i64 656
  %2971 = load ptr, ptr %2970, align 8, !tbaa !51
  %2972 = icmp eq ptr %2971, null
  br i1 %2972, label %.preheader568, label %2976

.preheader568:                                    ; preds = %2968
  %2973 = load ptr, ptr %14, align 8, !tbaa !9
  %2974 = load i8, ptr %2973, align 8, !tbaa !15
  %.not652 = icmp eq i8 %2974, 0
  br i1 %.not652, label %.preheader567, label %.lr.ph623

.lr.ph623:                                        ; preds = %.preheader568
  %2975 = getelementptr inbounds i8, ptr %2712, i64 672
  br label %3007

2976:                                             ; preds = %2968
  %2977 = tail call ptr @__errno_location() #11
  %2978 = load i32, ptr %2977, align 4, !tbaa !5
  %2979 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2980 = call i32 @s2n_print_stacktrace(ptr noundef %2979) #10
  %2981 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %2982 = trunc nuw i8 %2981 to i1
  br i1 %2982, label %2983, label %2987

2983:                                             ; preds = %2976
  %2984 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2985 = call i32 @fileno(ptr noundef %2984) #10
  %2986 = call i32 @isatty(i32 noundef %2985) #10
  %.not483 = icmp eq i32 %2986, 0
  br i1 %.not483, label %2987, label %2988

2987:                                             ; preds = %2983, %2976
  br label %2988

2988:                                             ; preds = %2983, %2987
  %.str.9.sink1783 = phi ptr [ @.str.9, %2987 ], [ @.str.6, %2983 ]
  store i32 %2978, ptr %2977, align 4, !tbaa !5
  %2989 = load ptr, ptr @stderr, align 8, !tbaa !9
  %2990 = load i32, ptr @test_count, align 4, !tbaa !5
  %2991 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %2992 = load i32, ptr %2991, align 4, !tbaa !5
  %2993 = call ptr @s2n_strerror(i32 noundef %2992, ptr noundef nonnull @.str.8) #10
  %2994 = load i32, ptr %2991, align 4, !tbaa !5
  %2995 = call ptr @s2n_strerror_debug(i32 noundef %2994, ptr noundef nonnull @.str.8) #10
  %2996 = load i32, ptr %2977, align 4, !tbaa !5
  %2997 = call ptr @strerror(i32 noundef %2996) #10
  %2998 = load i32, ptr %2977, align 4, !tbaa !5
  %2999 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %2989, ptr noundef nonnull %.str.9.sink1783, i32 noundef %2990, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 262, ptr noundef %2993, ptr noundef %2995, ptr noundef %2997, i32 noundef %2998) #12
  call void @exit(i32 noundef 1) #13
  unreachable

.preheader567.loopexit:                           ; preds = %3007
  %.pre685 = load ptr, ptr %15, align 8, !tbaa !9
  br label %.preheader567

.preheader567:                                    ; preds = %.preheader567.loopexit, %.preheader568
  %3000 = phi ptr [ %.pre685, %.preheader567.loopexit ], [ %2828, %.preheader568 ]
  %3001 = getelementptr inbounds i8, ptr %3000, i64 16
  %3002 = load i8, ptr %3001, align 8, !tbaa !19
  %3003 = zext i8 %3002 to i64
  %.not653 = icmp eq i8 %3002, 0
  br i1 %.not653, label %3021, label %.lr.ph626

.lr.ph626:                                        ; preds = %.preheader567
  %3004 = getelementptr inbounds i8, ptr %2712, i64 944
  %3005 = zext i8 %3002 to i32
  %3006 = add i32 %2969, %3005
  br label %3026

3007:                                             ; preds = %.lr.ph623, %3007
  %3008 = phi ptr [ %2973, %.lr.ph623 ], [ %3015, %3007 ]
  %.0422622 = phi i64 [ 0, %.lr.ph623 ], [ %3014, %3007 ]
  %3009 = getelementptr inbounds i8, ptr %3008, i64 8
  %3010 = load ptr, ptr %3009, align 8, !tbaa !54
  %3011 = getelementptr inbounds ptr, ptr %3010, i64 %.0422622
  %3012 = load ptr, ptr %3011, align 8, !tbaa !9
  %3013 = getelementptr inbounds [4 x ptr], ptr %2975, i64 0, i64 %.0422622
  store ptr %3012, ptr %3013, align 8, !tbaa !9
  %3014 = add nuw nsw i64 %.0422622, 1
  %3015 = load ptr, ptr %14, align 8, !tbaa !9
  %3016 = load i8, ptr %3015, align 8, !tbaa !15
  %3017 = zext i8 %3016 to i64
  %3018 = icmp ult i64 %3014, %3017
  br i1 %3018, label %3007, label %.preheader567.loopexit, !llvm.loop !75

3019:                                             ; preds = %3026
  %3020 = add nuw nsw i64 %.0423625, 1
  %exitcond678.not = icmp eq i64 %3020, %3003
  br i1 %exitcond678.not, label %._crit_edge627, label %3026, !llvm.loop !76

._crit_edge627:                                   ; preds = %3019
  store i32 %3006, ptr @test_count, align 4, !tbaa !5
  br label %3021

3021:                                             ; preds = %._crit_edge627, %.preheader567
  %3022 = call ptr @s2n_kem_preferences_get_highest_priority_group(ptr noundef nonnull %3000) #10
  %3023 = load i32, ptr @test_count, align 4, !tbaa !5
  %3024 = add nsw i32 %3023, 1
  store i32 %3024, ptr @test_count, align 4, !tbaa !5
  %3025 = icmp eq ptr %3022, null
  br i1 %3025, label %3056, label %3080

3026:                                             ; preds = %.lr.ph626, %3019
  %.0423625 = phi i64 [ 0, %.lr.ph626 ], [ %3020, %3019 ]
  %3027 = phi i32 [ %2969, %.lr.ph626 ], [ %3028, %3019 ]
  %3028 = add nsw i32 %3027, 1
  %3029 = getelementptr inbounds [8 x ptr], ptr %3004, i64 0, i64 %.0423625
  %3030 = load ptr, ptr %3029, align 8, !tbaa !9
  %3031 = icmp eq ptr %3030, null
  br i1 %3031, label %3019, label %3032

3032:                                             ; preds = %3026
  store i32 %3028, ptr @test_count, align 4, !tbaa !5
  %3033 = tail call ptr @__errno_location() #11
  %3034 = load i32, ptr %3033, align 4, !tbaa !5
  %3035 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3036 = call i32 @s2n_print_stacktrace(ptr noundef %3035) #10
  %3037 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3038 = trunc nuw i8 %3037 to i1
  br i1 %3038, label %3039, label %3043

3039:                                             ; preds = %3032
  %3040 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3041 = call i32 @fileno(ptr noundef %3040) #10
  %3042 = call i32 @isatty(i32 noundef %3041) #10
  %.not514 = icmp eq i32 %3042, 0
  br i1 %.not514, label %3043, label %3044

3043:                                             ; preds = %3039, %3032
  br label %3044

3044:                                             ; preds = %3039, %3043
  %.str.9.sink1794 = phi ptr [ @.str.9, %3043 ], [ @.str.6, %3039 ]
  store i32 %3034, ptr %3033, align 4, !tbaa !5
  %3045 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3046 = load i32, ptr @test_count, align 4, !tbaa !5
  %3047 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3048 = load i32, ptr %3047, align 4, !tbaa !5
  %3049 = call ptr @s2n_strerror(i32 noundef %3048, ptr noundef nonnull @.str.8) #10
  %3050 = load i32, ptr %3047, align 4, !tbaa !5
  %3051 = call ptr @s2n_strerror_debug(i32 noundef %3050, ptr noundef nonnull @.str.8) #10
  %3052 = load i32, ptr %3033, align 4, !tbaa !5
  %3053 = call ptr @strerror(i32 noundef %3052) #10
  %3054 = load i32, ptr %3033, align 4, !tbaa !5
  %3055 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3045, ptr noundef nonnull %.str.9.sink1794, i32 noundef %3046, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, i32 noundef 269, ptr noundef %3049, ptr noundef %3051, ptr noundef %3053, i32 noundef %3054) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3056:                                             ; preds = %3021
  %3057 = tail call ptr @__errno_location() #11
  %3058 = load i32, ptr %3057, align 4, !tbaa !5
  %3059 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3060 = call i32 @s2n_print_stacktrace(ptr noundef %3059) #10
  %3061 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3062 = trunc nuw i8 %3061 to i1
  br i1 %3062, label %3063, label %3067

3063:                                             ; preds = %3056
  %3064 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3065 = call i32 @fileno(ptr noundef %3064) #10
  %3066 = call i32 @isatty(i32 noundef %3065) #10
  %.not513 = icmp eq i32 %3066, 0
  br i1 %.not513, label %3067, label %3068

3067:                                             ; preds = %3063, %3056
  br label %3068

3068:                                             ; preds = %3063, %3067
  %.str.9.sink1805 = phi ptr [ @.str.9, %3067 ], [ @.str.6, %3063 ]
  store i32 %3058, ptr %3057, align 4, !tbaa !5
  %3069 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3070 = load i32, ptr @test_count, align 4, !tbaa !5
  %3071 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3072 = load i32, ptr %3071, align 4, !tbaa !5
  %3073 = call ptr @s2n_strerror(i32 noundef %3072, ptr noundef nonnull @.str.8) #10
  %3074 = load i32, ptr %3071, align 4, !tbaa !5
  %3075 = call ptr @s2n_strerror_debug(i32 noundef %3074, ptr noundef nonnull @.str.8) #10
  %3076 = load i32, ptr %3057, align 4, !tbaa !5
  %3077 = call ptr @strerror(i32 noundef %3076) #10
  %3078 = load i32, ptr %3057, align 4, !tbaa !5
  %3079 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3069, ptr noundef nonnull %.str.9.sink1805, i32 noundef %3070, ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.5, i32 noundef 273, ptr noundef %3073, ptr noundef %3075, ptr noundef %3077, i32 noundef %3078) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3080:                                             ; preds = %3021
  %3081 = getelementptr inbounds i8, ptr %2712, i64 944
  store ptr %3022, ptr %3081, align 8, !tbaa !9
  %3082 = add nsw i32 %3023, 2
  store i32 %3082, ptr @test_count, align 4, !tbaa !5
  %3083 = call i32 @s2n_choose_supported_group(ptr noundef nonnull %2712)
  %3084 = icmp eq i32 %3083, -1
  br i1 %3084, label %3085, label %3109

3085:                                             ; preds = %3080
  %3086 = tail call ptr @__errno_location() #11
  %3087 = load i32, ptr %3086, align 4, !tbaa !5
  %3088 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3089 = call i32 @s2n_print_stacktrace(ptr noundef %3088) #10
  %3090 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3091 = trunc nuw i8 %3090 to i1
  br i1 %3091, label %3092, label %3096

3092:                                             ; preds = %3085
  %3093 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3094 = call i32 @fileno(ptr noundef %3093) #10
  %3095 = call i32 @isatty(i32 noundef %3094) #10
  %.not512 = icmp eq i32 %3095, 0
  br i1 %.not512, label %3096, label %3097

3096:                                             ; preds = %3092, %3085
  br label %3097

3097:                                             ; preds = %3092, %3096
  %.str.9.sink1816 = phi ptr [ @.str.9, %3096 ], [ @.str.6, %3092 ]
  store i32 %3087, ptr %3086, align 4, !tbaa !5
  %3098 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3099 = load i32, ptr @test_count, align 4, !tbaa !5
  %3100 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3101 = load i32, ptr %3100, align 4, !tbaa !5
  %3102 = call ptr @s2n_strerror(i32 noundef %3101, ptr noundef nonnull @.str.8) #10
  %3103 = load i32, ptr %3100, align 4, !tbaa !5
  %3104 = call ptr @s2n_strerror_debug(i32 noundef %3103, ptr noundef nonnull @.str.8) #10
  %3105 = load i32, ptr %3086, align 4, !tbaa !5
  %3106 = call ptr @strerror(i32 noundef %3105) #10
  %3107 = load i32, ptr %3086, align 4, !tbaa !5
  %3108 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3098, ptr noundef nonnull %.str.9.sink1816, i32 noundef %3099, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 275, ptr noundef %3102, ptr noundef %3104, ptr noundef %3106, i32 noundef %3107) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3109:                                             ; preds = %3080
  %3110 = load i32, ptr @test_count, align 4, !tbaa !5
  %3111 = add nsw i32 %3110, 1
  store i32 %3111, ptr @test_count, align 4, !tbaa !5
  %3112 = load ptr, ptr %2883, align 8, !tbaa !22
  %3113 = icmp eq ptr %3112, %3022
  br i1 %3113, label %3138, label %3114

3114:                                             ; preds = %3109
  %3115 = tail call ptr @__errno_location() #11
  %3116 = load i32, ptr %3115, align 4, !tbaa !5
  %3117 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3118 = call i32 @s2n_print_stacktrace(ptr noundef %3117) #10
  %3119 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3120 = trunc nuw i8 %3119 to i1
  br i1 %3120, label %3121, label %3125

3121:                                             ; preds = %3114
  %3122 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3123 = call i32 @fileno(ptr noundef %3122) #10
  %3124 = call i32 @isatty(i32 noundef %3123) #10
  %.not484 = icmp eq i32 %3124, 0
  br i1 %.not484, label %3125, label %3126

3125:                                             ; preds = %3121, %3114
  br label %3126

3126:                                             ; preds = %3121, %3125
  %.str.9.sink1827 = phi ptr [ @.str.9, %3125 ], [ @.str.6, %3121 ]
  store i32 %3116, ptr %3115, align 4, !tbaa !5
  %3127 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3128 = load i32, ptr @test_count, align 4, !tbaa !5
  %3129 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3130 = load i32, ptr %3129, align 4, !tbaa !5
  %3131 = call ptr @s2n_strerror(i32 noundef %3130, ptr noundef nonnull @.str.8) #10
  %3132 = load i32, ptr %3129, align 4, !tbaa !5
  %3133 = call ptr @s2n_strerror_debug(i32 noundef %3132, ptr noundef nonnull @.str.8) #10
  %3134 = load i32, ptr %3115, align 4, !tbaa !5
  %3135 = call ptr @strerror(i32 noundef %3134) #10
  %3136 = load i32, ptr %3115, align 4, !tbaa !5
  %3137 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3127, ptr noundef nonnull %.str.9.sink1827, i32 noundef %3128, ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.5, i32 noundef 277, ptr noundef %3131, ptr noundef %3133, ptr noundef %3135, i32 noundef %3136) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3138:                                             ; preds = %3109
  %3139 = add nsw i32 %3110, 2
  store i32 %3139, ptr @test_count, align 4, !tbaa !5
  %3140 = load ptr, ptr %2912, align 8, !tbaa !49
  %3141 = getelementptr inbounds i8, ptr %3022, i64 16
  %3142 = load ptr, ptr %3141, align 8, !tbaa !72
  %3143 = icmp eq ptr %3140, %3142
  br i1 %3143, label %3168, label %3144

3144:                                             ; preds = %3138
  %3145 = tail call ptr @__errno_location() #11
  %3146 = load i32, ptr %3145, align 4, !tbaa !5
  %3147 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3148 = call i32 @s2n_print_stacktrace(ptr noundef %3147) #10
  %3149 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3150 = trunc nuw i8 %3149 to i1
  br i1 %3150, label %3151, label %3155

3151:                                             ; preds = %3144
  %3152 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3153 = call i32 @fileno(ptr noundef %3152) #10
  %3154 = call i32 @isatty(i32 noundef %3153) #10
  %.not485 = icmp eq i32 %3154, 0
  br i1 %.not485, label %3155, label %3156

3155:                                             ; preds = %3151, %3144
  br label %3156

3156:                                             ; preds = %3151, %3155
  %.str.9.sink1838 = phi ptr [ @.str.9, %3155 ], [ @.str.6, %3151 ]
  store i32 %3146, ptr %3145, align 4, !tbaa !5
  %3157 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3158 = load i32, ptr @test_count, align 4, !tbaa !5
  %3159 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3160 = load i32, ptr %3159, align 4, !tbaa !5
  %3161 = call ptr @s2n_strerror(i32 noundef %3160, ptr noundef nonnull @.str.8) #10
  %3162 = load i32, ptr %3159, align 4, !tbaa !5
  %3163 = call ptr @s2n_strerror_debug(i32 noundef %3162, ptr noundef nonnull @.str.8) #10
  %3164 = load i32, ptr %3145, align 4, !tbaa !5
  %3165 = call ptr @strerror(i32 noundef %3164) #10
  %3166 = load i32, ptr %3145, align 4, !tbaa !5
  %3167 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3157, ptr noundef nonnull %.str.9.sink1838, i32 noundef %3158, ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.5, i32 noundef 278, ptr noundef %3161, ptr noundef %3163, ptr noundef %3165, i32 noundef %3166) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3168:                                             ; preds = %3138
  %3169 = add nsw i32 %3110, 3
  store i32 %3169, ptr @test_count, align 4, !tbaa !5
  %3170 = load ptr, ptr %2941, align 8, !tbaa !50
  %3171 = getelementptr inbounds i8, ptr %3022, i64 24
  %3172 = load ptr, ptr %3171, align 8, !tbaa !74
  %3173 = icmp eq ptr %3170, %3172
  br i1 %3173, label %3198, label %3174

3174:                                             ; preds = %3168
  %3175 = tail call ptr @__errno_location() #11
  %3176 = load i32, ptr %3175, align 4, !tbaa !5
  %3177 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3178 = call i32 @s2n_print_stacktrace(ptr noundef %3177) #10
  %3179 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3180 = trunc nuw i8 %3179 to i1
  br i1 %3180, label %3181, label %3185

3181:                                             ; preds = %3174
  %3182 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3183 = call i32 @fileno(ptr noundef %3182) #10
  %3184 = call i32 @isatty(i32 noundef %3183) #10
  %.not486 = icmp eq i32 %3184, 0
  br i1 %.not486, label %3185, label %3186

3185:                                             ; preds = %3181, %3174
  br label %3186

3186:                                             ; preds = %3181, %3185
  %.str.9.sink1849 = phi ptr [ @.str.9, %3185 ], [ @.str.6, %3181 ]
  store i32 %3176, ptr %3175, align 4, !tbaa !5
  %3187 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3188 = load i32, ptr @test_count, align 4, !tbaa !5
  %3189 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3190 = load i32, ptr %3189, align 4, !tbaa !5
  %3191 = call ptr @s2n_strerror(i32 noundef %3190, ptr noundef nonnull @.str.8) #10
  %3192 = load i32, ptr %3189, align 4, !tbaa !5
  %3193 = call ptr @s2n_strerror_debug(i32 noundef %3192, ptr noundef nonnull @.str.8) #10
  %3194 = load i32, ptr %3175, align 4, !tbaa !5
  %3195 = call ptr @strerror(i32 noundef %3194) #10
  %3196 = load i32, ptr %3175, align 4, !tbaa !5
  %3197 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3187, ptr noundef nonnull %.str.9.sink1849, i32 noundef %3188, ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.5, i32 noundef 279, ptr noundef %3191, ptr noundef %3193, ptr noundef %3195, i32 noundef %3196) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3198:                                             ; preds = %3168
  %3199 = add nsw i32 %3110, 4
  store i32 %3199, ptr @test_count, align 4, !tbaa !5
  %3200 = load ptr, ptr %2970, align 8, !tbaa !51
  %3201 = icmp eq ptr %3200, null
  br i1 %3201, label %3226, label %3202

3202:                                             ; preds = %3198
  %3203 = tail call ptr @__errno_location() #11
  %3204 = load i32, ptr %3203, align 4, !tbaa !5
  %3205 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3206 = call i32 @s2n_print_stacktrace(ptr noundef %3205) #10
  %3207 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3208 = trunc nuw i8 %3207 to i1
  br i1 %3208, label %3209, label %3213

3209:                                             ; preds = %3202
  %3210 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3211 = call i32 @fileno(ptr noundef %3210) #10
  %3212 = call i32 @isatty(i32 noundef %3211) #10
  %.not487 = icmp eq i32 %3212, 0
  br i1 %.not487, label %3213, label %3214

3213:                                             ; preds = %3209, %3202
  br label %3214

3214:                                             ; preds = %3209, %3213
  %.str.9.sink1860 = phi ptr [ @.str.9, %3213 ], [ @.str.6, %3209 ]
  store i32 %3204, ptr %3203, align 4, !tbaa !5
  %3215 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3216 = load i32, ptr @test_count, align 4, !tbaa !5
  %3217 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3218 = load i32, ptr %3217, align 4, !tbaa !5
  %3219 = call ptr @s2n_strerror(i32 noundef %3218, ptr noundef nonnull @.str.8) #10
  %3220 = load i32, ptr %3217, align 4, !tbaa !5
  %3221 = call ptr @s2n_strerror_debug(i32 noundef %3220, ptr noundef nonnull @.str.8) #10
  %3222 = load i32, ptr %3203, align 4, !tbaa !5
  %3223 = call ptr @strerror(i32 noundef %3222) #10
  %3224 = load i32, ptr %3203, align 4, !tbaa !5
  %3225 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3215, ptr noundef nonnull %.str.9.sink1860, i32 noundef %3216, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 280, ptr noundef %3219, ptr noundef %3221, ptr noundef %3223, i32 noundef %3224) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3226:                                             ; preds = %3198
  %3227 = add nsw i32 %3110, 5
  store i32 %3227, ptr @test_count, align 4, !tbaa !5
  %3228 = call i32 @s2n_connection_free(ptr noundef nonnull %2712) #10
  %3229 = icmp eq i32 %3228, -1
  br i1 %3229, label %3230, label %3254

3230:                                             ; preds = %3226
  %3231 = tail call ptr @__errno_location() #11
  %3232 = load i32, ptr %3231, align 4, !tbaa !5
  %3233 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3234 = call i32 @s2n_print_stacktrace(ptr noundef %3233) #10
  %3235 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3236 = trunc nuw i8 %3235 to i1
  br i1 %3236, label %3237, label %3241

3237:                                             ; preds = %3230
  %3238 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3239 = call i32 @fileno(ptr noundef %3238) #10
  %3240 = call i32 @isatty(i32 noundef %3239) #10
  %.not511 = icmp eq i32 %3240, 0
  br i1 %.not511, label %3241, label %3242

3241:                                             ; preds = %3237, %3230
  br label %3242

3242:                                             ; preds = %3237, %3241
  %.str.9.sink1871 = phi ptr [ @.str.9, %3241 ], [ @.str.6, %3237 ]
  store i32 %3232, ptr %3231, align 4, !tbaa !5
  %3243 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3244 = load i32, ptr @test_count, align 4, !tbaa !5
  %3245 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3246 = load i32, ptr %3245, align 4, !tbaa !5
  %3247 = call ptr @s2n_strerror(i32 noundef %3246, ptr noundef nonnull @.str.8) #10
  %3248 = load i32, ptr %3245, align 4, !tbaa !5
  %3249 = call ptr @s2n_strerror_debug(i32 noundef %3248, ptr noundef nonnull @.str.8) #10
  %3250 = load i32, ptr %3231, align 4, !tbaa !5
  %3251 = call ptr @strerror(i32 noundef %3250) #10
  %3252 = load i32, ptr %3231, align 4, !tbaa !5
  %3253 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3243, ptr noundef nonnull %.str.9.sink1871, i32 noundef %3244, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, i32 noundef 281, ptr noundef %3247, ptr noundef %3249, ptr noundef %3251, i32 noundef %3252) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3254:                                             ; preds = %3226
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  br label %3255

3255:                                             ; preds = %3254, %2707
  %3256 = load i32, ptr @test_count, align 4, !tbaa !5
  %3257 = add nsw i32 %3256, 1
  store i32 %3257, ptr @test_count, align 4, !tbaa !5
  %3258 = call ptr @s2n_connection_new(i32 noundef 0) #10
  %3259 = icmp eq ptr %3258, null
  br i1 %3259, label %3260, label %3284

3260:                                             ; preds = %3255
  %3261 = tail call ptr @__errno_location() #11
  %3262 = load i32, ptr %3261, align 4, !tbaa !5
  %3263 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3264 = call i32 @s2n_print_stacktrace(ptr noundef %3263) #10
  %3265 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3266 = trunc nuw i8 %3265 to i1
  br i1 %3266, label %3267, label %3271

3267:                                             ; preds = %3260
  %3268 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3269 = call i32 @fileno(ptr noundef %3268) #10
  %3270 = call i32 @isatty(i32 noundef %3269) #10
  %.not510 = icmp eq i32 %3270, 0
  br i1 %.not510, label %3271, label %3272

3271:                                             ; preds = %3267, %3260
  br label %3272

3272:                                             ; preds = %3267, %3271
  %.str.9.sink1882 = phi ptr [ @.str.9, %3271 ], [ @.str.6, %3267 ]
  store i32 %3262, ptr %3261, align 4, !tbaa !5
  %3273 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3274 = load i32, ptr @test_count, align 4, !tbaa !5
  %3275 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3276 = load i32, ptr %3275, align 4, !tbaa !5
  %3277 = call ptr @s2n_strerror(i32 noundef %3276, ptr noundef nonnull @.str.8) #10
  %3278 = load i32, ptr %3275, align 4, !tbaa !5
  %3279 = call ptr @s2n_strerror_debug(i32 noundef %3278, ptr noundef nonnull @.str.8) #10
  %3280 = load i32, ptr %3261, align 4, !tbaa !5
  %3281 = call ptr @strerror(i32 noundef %3280) #10
  %3282 = load i32, ptr %3261, align 4, !tbaa !5
  %3283 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3273, ptr noundef nonnull %.str.9.sink1882, i32 noundef %3274, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.5, i32 noundef 286, ptr noundef %3277, ptr noundef %3279, ptr noundef %3281, i32 noundef %3282) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3284:                                             ; preds = %3255
  %3285 = getelementptr inbounds i8, ptr %3258, i64 16
  store ptr %8, ptr %3285, align 8, !tbaa !67
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  store ptr null, ptr %16, align 8, !tbaa !9
  %3286 = load i32, ptr @test_count, align 4, !tbaa !5
  %3287 = add nsw i32 %3286, 1
  store i32 %3287, ptr @test_count, align 4, !tbaa !5
  %3288 = call i32 @s2n_connection_get_ecc_preferences(ptr noundef nonnull %3258, ptr noundef nonnull %16) #10
  %3289 = icmp eq i32 %3288, -1
  br i1 %3289, label %3290, label %3314

3290:                                             ; preds = %3284
  %3291 = tail call ptr @__errno_location() #11
  %3292 = load i32, ptr %3291, align 4, !tbaa !5
  %3293 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3294 = call i32 @s2n_print_stacktrace(ptr noundef %3293) #10
  %3295 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3296 = trunc nuw i8 %3295 to i1
  br i1 %3296, label %3297, label %3301

3297:                                             ; preds = %3290
  %3298 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3299 = call i32 @fileno(ptr noundef %3298) #10
  %3300 = call i32 @isatty(i32 noundef %3299) #10
  %.not509 = icmp eq i32 %3300, 0
  br i1 %.not509, label %3301, label %3302

3301:                                             ; preds = %3297, %3290
  br label %3302

3302:                                             ; preds = %3297, %3301
  %.str.9.sink1893 = phi ptr [ @.str.9, %3301 ], [ @.str.6, %3297 ]
  store i32 %3292, ptr %3291, align 4, !tbaa !5
  %3303 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3304 = load i32, ptr @test_count, align 4, !tbaa !5
  %3305 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3306 = load i32, ptr %3305, align 4, !tbaa !5
  %3307 = call ptr @s2n_strerror(i32 noundef %3306, ptr noundef nonnull @.str.8) #10
  %3308 = load i32, ptr %3305, align 4, !tbaa !5
  %3309 = call ptr @s2n_strerror_debug(i32 noundef %3308, ptr noundef nonnull @.str.8) #10
  %3310 = load i32, ptr %3291, align 4, !tbaa !5
  %3311 = call ptr @strerror(i32 noundef %3310) #10
  %3312 = load i32, ptr %3291, align 4, !tbaa !5
  %3313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3303, ptr noundef nonnull %.str.9.sink1893, i32 noundef %3304, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.5, i32 noundef 290, ptr noundef %3307, ptr noundef %3309, ptr noundef %3311, i32 noundef %3312) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3314:                                             ; preds = %3284
  %3315 = load i32, ptr @test_count, align 4, !tbaa !5
  %3316 = add nsw i32 %3315, 1
  store i32 %3316, ptr @test_count, align 4, !tbaa !5
  %3317 = load ptr, ptr %16, align 8, !tbaa !9
  %3318 = icmp eq ptr %3317, null
  br i1 %3318, label %3319, label %3343

3319:                                             ; preds = %3314
  %3320 = tail call ptr @__errno_location() #11
  %3321 = load i32, ptr %3320, align 4, !tbaa !5
  %3322 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3323 = call i32 @s2n_print_stacktrace(ptr noundef %3322) #10
  %3324 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3325 = trunc nuw i8 %3324 to i1
  br i1 %3325, label %3326, label %3330

3326:                                             ; preds = %3319
  %3327 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3328 = call i32 @fileno(ptr noundef %3327) #10
  %3329 = call i32 @isatty(i32 noundef %3328) #10
  %.not508 = icmp eq i32 %3329, 0
  br i1 %.not508, label %3330, label %3331

3330:                                             ; preds = %3326, %3319
  br label %3331

3331:                                             ; preds = %3326, %3330
  %.str.9.sink1904 = phi ptr [ @.str.9, %3330 ], [ @.str.6, %3326 ]
  store i32 %3321, ptr %3320, align 4, !tbaa !5
  %3332 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3333 = load i32, ptr @test_count, align 4, !tbaa !5
  %3334 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3335 = load i32, ptr %3334, align 4, !tbaa !5
  %3336 = call ptr @s2n_strerror(i32 noundef %3335, ptr noundef nonnull @.str.8) #10
  %3337 = load i32, ptr %3334, align 4, !tbaa !5
  %3338 = call ptr @s2n_strerror_debug(i32 noundef %3337, ptr noundef nonnull @.str.8) #10
  %3339 = load i32, ptr %3320, align 4, !tbaa !5
  %3340 = call ptr @strerror(i32 noundef %3339) #10
  %3341 = load i32, ptr %3320, align 4, !tbaa !5
  %3342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3332, ptr noundef nonnull %.str.9.sink1904, i32 noundef %3333, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 291, ptr noundef %3336, ptr noundef %3338, ptr noundef %3340, i32 noundef %3341) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3343:                                             ; preds = %3314
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  store ptr null, ptr %17, align 8, !tbaa !9
  %3344 = add nsw i32 %3315, 2
  store i32 %3344, ptr @test_count, align 4, !tbaa !5
  %3345 = call i32 @s2n_connection_get_kem_preferences(ptr noundef nonnull %3258, ptr noundef nonnull %17) #10
  %3346 = icmp eq i32 %3345, -1
  br i1 %3346, label %3347, label %3371

3347:                                             ; preds = %3343
  %3348 = tail call ptr @__errno_location() #11
  %3349 = load i32, ptr %3348, align 4, !tbaa !5
  %3350 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3351 = call i32 @s2n_print_stacktrace(ptr noundef %3350) #10
  %3352 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3353 = trunc nuw i8 %3352 to i1
  br i1 %3353, label %3354, label %3358

3354:                                             ; preds = %3347
  %3355 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3356 = call i32 @fileno(ptr noundef %3355) #10
  %3357 = call i32 @isatty(i32 noundef %3356) #10
  %.not507 = icmp eq i32 %3357, 0
  br i1 %.not507, label %3358, label %3359

3358:                                             ; preds = %3354, %3347
  br label %3359

3359:                                             ; preds = %3354, %3358
  %.str.9.sink1915 = phi ptr [ @.str.9, %3358 ], [ @.str.6, %3354 ]
  store i32 %3349, ptr %3348, align 4, !tbaa !5
  %3360 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3361 = load i32, ptr @test_count, align 4, !tbaa !5
  %3362 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3363 = load i32, ptr %3362, align 4, !tbaa !5
  %3364 = call ptr @s2n_strerror(i32 noundef %3363, ptr noundef nonnull @.str.8) #10
  %3365 = load i32, ptr %3362, align 4, !tbaa !5
  %3366 = call ptr @s2n_strerror_debug(i32 noundef %3365, ptr noundef nonnull @.str.8) #10
  %3367 = load i32, ptr %3348, align 4, !tbaa !5
  %3368 = call ptr @strerror(i32 noundef %3367) #10
  %3369 = load i32, ptr %3348, align 4, !tbaa !5
  %3370 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3360, ptr noundef nonnull %.str.9.sink1915, i32 noundef %3361, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.5, i32 noundef 294, ptr noundef %3364, ptr noundef %3366, ptr noundef %3368, i32 noundef %3369) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3371:                                             ; preds = %3343
  %3372 = load i32, ptr @test_count, align 4, !tbaa !5
  %3373 = add nsw i32 %3372, 1
  store i32 %3373, ptr @test_count, align 4, !tbaa !5
  %3374 = load ptr, ptr %17, align 8, !tbaa !9
  %3375 = icmp eq ptr %3374, null
  br i1 %3375, label %3376, label %3400

3376:                                             ; preds = %3371
  %3377 = tail call ptr @__errno_location() #11
  %3378 = load i32, ptr %3377, align 4, !tbaa !5
  %3379 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3380 = call i32 @s2n_print_stacktrace(ptr noundef %3379) #10
  %3381 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3382 = trunc nuw i8 %3381 to i1
  br i1 %3382, label %3383, label %3387

3383:                                             ; preds = %3376
  %3384 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3385 = call i32 @fileno(ptr noundef %3384) #10
  %3386 = call i32 @isatty(i32 noundef %3385) #10
  %.not506 = icmp eq i32 %3386, 0
  br i1 %.not506, label %3387, label %3388

3387:                                             ; preds = %3383, %3376
  br label %3388

3388:                                             ; preds = %3383, %3387
  %.str.9.sink1926 = phi ptr [ @.str.9, %3387 ], [ @.str.6, %3383 ]
  store i32 %3378, ptr %3377, align 4, !tbaa !5
  %3389 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3390 = load i32, ptr @test_count, align 4, !tbaa !5
  %3391 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3392 = load i32, ptr %3391, align 4, !tbaa !5
  %3393 = call ptr @s2n_strerror(i32 noundef %3392, ptr noundef nonnull @.str.8) #10
  %3394 = load i32, ptr %3391, align 4, !tbaa !5
  %3395 = call ptr @s2n_strerror_debug(i32 noundef %3394, ptr noundef nonnull @.str.8) #10
  %3396 = load i32, ptr %3377, align 4, !tbaa !5
  %3397 = call ptr @strerror(i32 noundef %3396) #10
  %3398 = load i32, ptr %3377, align 4, !tbaa !5
  %3399 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3389, ptr noundef nonnull %.str.9.sink1926, i32 noundef %3390, ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.5, i32 noundef 295, ptr noundef %3393, ptr noundef %3395, ptr noundef %3397, i32 noundef %3398) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3400:                                             ; preds = %3371
  %3401 = add nsw i32 %3372, 2
  store i32 %3401, ptr @test_count, align 4, !tbaa !5
  %3402 = icmp eq ptr %3374, %7
  br i1 %3402, label %.preheader566, label %3409

.preheader566:                                    ; preds = %3400
  %3403 = load ptr, ptr %16, align 8, !tbaa !9
  %3404 = load i8, ptr %3403, align 8, !tbaa !15
  %3405 = zext i8 %3404 to i64
  %.not654 = icmp eq i8 %3404, 0
  br i1 %.not654, label %.preheader, label %.lr.ph633

.lr.ph633:                                        ; preds = %.preheader566
  %3406 = getelementptr inbounds i8, ptr %3258, i64 672
  %3407 = zext i8 %3404 to i32
  %3408 = add i32 %3401, %3407
  br label %3441

3409:                                             ; preds = %3400
  %3410 = tail call ptr @__errno_location() #11
  %3411 = load i32, ptr %3410, align 4, !tbaa !5
  %3412 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3413 = call i32 @s2n_print_stacktrace(ptr noundef %3412) #10
  %3414 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3415 = trunc nuw i8 %3414 to i1
  br i1 %3415, label %3416, label %3420

3416:                                             ; preds = %3409
  %3417 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3418 = call i32 @fileno(ptr noundef %3417) #10
  %3419 = call i32 @isatty(i32 noundef %3418) #10
  %.not488 = icmp eq i32 %3419, 0
  br i1 %.not488, label %3420, label %3421

3420:                                             ; preds = %3416, %3409
  br label %3421

3421:                                             ; preds = %3416, %3420
  %.str.9.sink1937 = phi ptr [ @.str.9, %3420 ], [ @.str.6, %3416 ]
  store i32 %3411, ptr %3410, align 4, !tbaa !5
  %3422 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3423 = load i32, ptr @test_count, align 4, !tbaa !5
  %3424 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3425 = load i32, ptr %3424, align 4, !tbaa !5
  %3426 = call ptr @s2n_strerror(i32 noundef %3425, ptr noundef nonnull @.str.8) #10
  %3427 = load i32, ptr %3424, align 4, !tbaa !5
  %3428 = call ptr @s2n_strerror_debug(i32 noundef %3427, ptr noundef nonnull @.str.8) #10
  %3429 = load i32, ptr %3410, align 4, !tbaa !5
  %3430 = call ptr @strerror(i32 noundef %3429) #10
  %3431 = load i32, ptr %3410, align 4, !tbaa !5
  %3432 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3422, ptr noundef nonnull %.str.9.sink1937, i32 noundef %3423, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.5, i32 noundef 296, ptr noundef %3426, ptr noundef %3428, ptr noundef %3430, i32 noundef %3431) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3433:                                             ; preds = %3441
  %3434 = add nuw nsw i64 %.0419632, 1
  %exitcond679.not = icmp eq i64 %3434, %3405
  br i1 %exitcond679.not, label %.preheader, label %3441, !llvm.loop !77

.preheader:                                       ; preds = %3433, %.preheader566
  %test_count.promoted636 = phi i32 [ %3401, %.preheader566 ], [ %3408, %3433 ]
  %3435 = getelementptr inbounds i8, ptr %3374, i64 16
  %3436 = load i8, ptr %3435, align 8, !tbaa !19
  %3437 = zext i8 %3436 to i64
  %.not655 = icmp eq i8 %3436, 0
  br i1 %.not655, label %._crit_edge639, label %.lr.ph638

.lr.ph638:                                        ; preds = %.preheader
  %3438 = getelementptr inbounds i8, ptr %3258, i64 944
  %3439 = zext i8 %3436 to i32
  %3440 = add i32 %test_count.promoted636, %3439
  br label %3478

3441:                                             ; preds = %.lr.ph633, %3433
  %.0419632 = phi i64 [ 0, %.lr.ph633 ], [ %3434, %3433 ]
  %3442 = phi i32 [ %3401, %.lr.ph633 ], [ %3443, %3433 ]
  %3443 = add nsw i32 %3442, 1
  %3444 = getelementptr inbounds [4 x ptr], ptr %3406, i64 0, i64 %.0419632
  %3445 = load ptr, ptr %3444, align 8, !tbaa !9
  %3446 = icmp eq ptr %3445, null
  br i1 %3446, label %3433, label %3447

3447:                                             ; preds = %3441
  store i32 %3443, ptr @test_count, align 4, !tbaa !5
  %3448 = tail call ptr @__errno_location() #11
  %3449 = load i32, ptr %3448, align 4, !tbaa !5
  %3450 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3451 = call i32 @s2n_print_stacktrace(ptr noundef %3450) #10
  %3452 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3453 = trunc nuw i8 %3452 to i1
  br i1 %3453, label %3454, label %3458

3454:                                             ; preds = %3447
  %3455 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3456 = call i32 @fileno(ptr noundef %3455) #10
  %3457 = call i32 @isatty(i32 noundef %3456) #10
  %.not505 = icmp eq i32 %3457, 0
  br i1 %.not505, label %3458, label %3459

3458:                                             ; preds = %3454, %3447
  br label %3459

3459:                                             ; preds = %3454, %3458
  %.str.9.sink1948 = phi ptr [ @.str.9, %3458 ], [ @.str.6, %3454 ]
  store i32 %3449, ptr %3448, align 4, !tbaa !5
  %3460 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3461 = load i32, ptr @test_count, align 4, !tbaa !5
  %3462 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3463 = load i32, ptr %3462, align 4, !tbaa !5
  %3464 = call ptr @s2n_strerror(i32 noundef %3463, ptr noundef nonnull @.str.8) #10
  %3465 = load i32, ptr %3462, align 4, !tbaa !5
  %3466 = call ptr @s2n_strerror_debug(i32 noundef %3465, ptr noundef nonnull @.str.8) #10
  %3467 = load i32, ptr %3448, align 4, !tbaa !5
  %3468 = call ptr @strerror(i32 noundef %3467) #10
  %3469 = load i32, ptr %3448, align 4, !tbaa !5
  %3470 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3460, ptr noundef nonnull %.str.9.sink1948, i32 noundef %3461, ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.5, i32 noundef 299, ptr noundef %3464, ptr noundef %3466, ptr noundef %3468, i32 noundef %3469) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3471:                                             ; preds = %3478
  %3472 = add nuw nsw i64 %.0418637, 1
  %exitcond680.not = icmp eq i64 %3472, %3437
  br i1 %exitcond680.not, label %._crit_edge639, label %3478, !llvm.loop !78

._crit_edge639:                                   ; preds = %3471, %.preheader
  %3473 = phi i32 [ %test_count.promoted636, %.preheader ], [ %3440, %3471 ]
  %3474 = add nsw i32 %3473, 1
  store i32 %3474, ptr @test_count, align 4, !tbaa !5
  %3475 = getelementptr inbounds i8, ptr %3258, i64 720
  %3476 = load ptr, ptr %3475, align 8, !tbaa !22
  %3477 = icmp eq ptr %3476, null
  br i1 %3477, label %3532, label %3508

3478:                                             ; preds = %.lr.ph638, %3471
  %.0418637 = phi i64 [ 0, %.lr.ph638 ], [ %3472, %3471 ]
  %3479 = phi i32 [ %test_count.promoted636, %.lr.ph638 ], [ %3480, %3471 ]
  %3480 = add nsw i32 %3479, 1
  %3481 = getelementptr inbounds [8 x ptr], ptr %3438, i64 0, i64 %.0418637
  %3482 = load ptr, ptr %3481, align 8, !tbaa !9
  %3483 = icmp eq ptr %3482, null
  br i1 %3483, label %3471, label %3484

3484:                                             ; preds = %3478
  store i32 %3480, ptr @test_count, align 4, !tbaa !5
  %3485 = tail call ptr @__errno_location() #11
  %3486 = load i32, ptr %3485, align 4, !tbaa !5
  %3487 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3488 = call i32 @s2n_print_stacktrace(ptr noundef %3487) #10
  %3489 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3490 = trunc nuw i8 %3489 to i1
  br i1 %3490, label %3491, label %3495

3491:                                             ; preds = %3484
  %3492 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3493 = call i32 @fileno(ptr noundef %3492) #10
  %3494 = call i32 @isatty(i32 noundef %3493) #10
  %.not504 = icmp eq i32 %3494, 0
  br i1 %.not504, label %3495, label %3496

3495:                                             ; preds = %3491, %3484
  br label %3496

3496:                                             ; preds = %3491, %3495
  %.str.9.sink1959 = phi ptr [ @.str.9, %3495 ], [ @.str.6, %3491 ]
  store i32 %3486, ptr %3485, align 4, !tbaa !5
  %3497 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3498 = load i32, ptr @test_count, align 4, !tbaa !5
  %3499 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3500 = load i32, ptr %3499, align 4, !tbaa !5
  %3501 = call ptr @s2n_strerror(i32 noundef %3500, ptr noundef nonnull @.str.8) #10
  %3502 = load i32, ptr %3499, align 4, !tbaa !5
  %3503 = call ptr @s2n_strerror_debug(i32 noundef %3502, ptr noundef nonnull @.str.8) #10
  %3504 = load i32, ptr %3485, align 4, !tbaa !5
  %3505 = call ptr @strerror(i32 noundef %3504) #10
  %3506 = load i32, ptr %3485, align 4, !tbaa !5
  %3507 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3497, ptr noundef nonnull %.str.9.sink1959, i32 noundef %3498, ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.5, i32 noundef 303, ptr noundef %3501, ptr noundef %3503, ptr noundef %3505, i32 noundef %3506) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3508:                                             ; preds = %._crit_edge639
  %3509 = tail call ptr @__errno_location() #11
  %3510 = load i32, ptr %3509, align 4, !tbaa !5
  %3511 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3512 = call i32 @s2n_print_stacktrace(ptr noundef %3511) #10
  %3513 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3514 = trunc nuw i8 %3513 to i1
  br i1 %3514, label %3515, label %3519

3515:                                             ; preds = %3508
  %3516 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3517 = call i32 @fileno(ptr noundef %3516) #10
  %3518 = call i32 @isatty(i32 noundef %3517) #10
  %.not489 = icmp eq i32 %3518, 0
  br i1 %.not489, label %3519, label %3520

3519:                                             ; preds = %3515, %3508
  br label %3520

3520:                                             ; preds = %3515, %3519
  %.str.9.sink1970 = phi ptr [ @.str.9, %3519 ], [ @.str.6, %3515 ]
  store i32 %3510, ptr %3509, align 4, !tbaa !5
  %3521 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3522 = load i32, ptr @test_count, align 4, !tbaa !5
  %3523 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3524 = load i32, ptr %3523, align 4, !tbaa !5
  %3525 = call ptr @s2n_strerror(i32 noundef %3524, ptr noundef nonnull @.str.8) #10
  %3526 = load i32, ptr %3523, align 4, !tbaa !5
  %3527 = call ptr @s2n_strerror_debug(i32 noundef %3526, ptr noundef nonnull @.str.8) #10
  %3528 = load i32, ptr %3509, align 4, !tbaa !5
  %3529 = call ptr @strerror(i32 noundef %3528) #10
  %3530 = load i32, ptr %3509, align 4, !tbaa !5
  %3531 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3521, ptr noundef nonnull %.str.9.sink1970, i32 noundef %3522, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 306, ptr noundef %3525, ptr noundef %3527, ptr noundef %3529, i32 noundef %3530) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3532:                                             ; preds = %._crit_edge639
  %3533 = add nsw i32 %3473, 2
  store i32 %3533, ptr @test_count, align 4, !tbaa !5
  %3534 = getelementptr inbounds i8, ptr %3258, i64 816
  %3535 = load ptr, ptr %3534, align 8, !tbaa !49
  %3536 = icmp eq ptr %3535, null
  br i1 %3536, label %3561, label %3537

3537:                                             ; preds = %3532
  %3538 = tail call ptr @__errno_location() #11
  %3539 = load i32, ptr %3538, align 4, !tbaa !5
  %3540 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3541 = call i32 @s2n_print_stacktrace(ptr noundef %3540) #10
  %3542 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3543 = trunc nuw i8 %3542 to i1
  br i1 %3543, label %3544, label %3548

3544:                                             ; preds = %3537
  %3545 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3546 = call i32 @fileno(ptr noundef %3545) #10
  %3547 = call i32 @isatty(i32 noundef %3546) #10
  %.not490 = icmp eq i32 %3547, 0
  br i1 %.not490, label %3548, label %3549

3548:                                             ; preds = %3544, %3537
  br label %3549

3549:                                             ; preds = %3544, %3548
  %.str.9.sink1981 = phi ptr [ @.str.9, %3548 ], [ @.str.6, %3544 ]
  store i32 %3539, ptr %3538, align 4, !tbaa !5
  %3550 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3551 = load i32, ptr @test_count, align 4, !tbaa !5
  %3552 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3553 = load i32, ptr %3552, align 4, !tbaa !5
  %3554 = call ptr @s2n_strerror(i32 noundef %3553, ptr noundef nonnull @.str.8) #10
  %3555 = load i32, ptr %3552, align 4, !tbaa !5
  %3556 = call ptr @s2n_strerror_debug(i32 noundef %3555, ptr noundef nonnull @.str.8) #10
  %3557 = load i32, ptr %3538, align 4, !tbaa !5
  %3558 = call ptr @strerror(i32 noundef %3557) #10
  %3559 = load i32, ptr %3538, align 4, !tbaa !5
  %3560 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3550, ptr noundef nonnull %.str.9.sink1981, i32 noundef %3551, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 307, ptr noundef %3554, ptr noundef %3556, ptr noundef %3558, i32 noundef %3559) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3561:                                             ; preds = %3532
  %3562 = add nsw i32 %3473, 3
  store i32 %3562, ptr @test_count, align 4, !tbaa !5
  %3563 = getelementptr inbounds i8, ptr %3258, i64 728
  %3564 = load ptr, ptr %3563, align 8, !tbaa !50
  %3565 = icmp eq ptr %3564, null
  br i1 %3565, label %3590, label %3566

3566:                                             ; preds = %3561
  %3567 = tail call ptr @__errno_location() #11
  %3568 = load i32, ptr %3567, align 4, !tbaa !5
  %3569 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3570 = call i32 @s2n_print_stacktrace(ptr noundef %3569) #10
  %3571 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3572 = trunc nuw i8 %3571 to i1
  br i1 %3572, label %3573, label %3577

3573:                                             ; preds = %3566
  %3574 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3575 = call i32 @fileno(ptr noundef %3574) #10
  %3576 = call i32 @isatty(i32 noundef %3575) #10
  %.not491 = icmp eq i32 %3576, 0
  br i1 %.not491, label %3577, label %3578

3577:                                             ; preds = %3573, %3566
  br label %3578

3578:                                             ; preds = %3573, %3577
  %.str.9.sink1992 = phi ptr [ @.str.9, %3577 ], [ @.str.6, %3573 ]
  store i32 %3568, ptr %3567, align 4, !tbaa !5
  %3579 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3580 = load i32, ptr @test_count, align 4, !tbaa !5
  %3581 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3582 = load i32, ptr %3581, align 4, !tbaa !5
  %3583 = call ptr @s2n_strerror(i32 noundef %3582, ptr noundef nonnull @.str.8) #10
  %3584 = load i32, ptr %3581, align 4, !tbaa !5
  %3585 = call ptr @s2n_strerror_debug(i32 noundef %3584, ptr noundef nonnull @.str.8) #10
  %3586 = load i32, ptr %3567, align 4, !tbaa !5
  %3587 = call ptr @strerror(i32 noundef %3586) #10
  %3588 = load i32, ptr %3567, align 4, !tbaa !5
  %3589 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3579, ptr noundef nonnull %.str.9.sink1992, i32 noundef %3580, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 308, ptr noundef %3583, ptr noundef %3585, ptr noundef %3587, i32 noundef %3588) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3590:                                             ; preds = %3561
  %3591 = add nsw i32 %3473, 4
  store i32 %3591, ptr @test_count, align 4, !tbaa !5
  %3592 = getelementptr inbounds i8, ptr %3258, i64 656
  %3593 = load ptr, ptr %3592, align 8, !tbaa !51
  %3594 = icmp eq ptr %3593, null
  br i1 %3594, label %3619, label %3595

3595:                                             ; preds = %3590
  %3596 = tail call ptr @__errno_location() #11
  %3597 = load i32, ptr %3596, align 4, !tbaa !5
  %3598 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3599 = call i32 @s2n_print_stacktrace(ptr noundef %3598) #10
  %3600 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3601 = trunc nuw i8 %3600 to i1
  br i1 %3601, label %3602, label %3606

3602:                                             ; preds = %3595
  %3603 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3604 = call i32 @fileno(ptr noundef %3603) #10
  %3605 = call i32 @isatty(i32 noundef %3604) #10
  %.not492 = icmp eq i32 %3605, 0
  br i1 %.not492, label %3606, label %3607

3606:                                             ; preds = %3602, %3595
  br label %3607

3607:                                             ; preds = %3602, %3606
  %.str.9.sink2003 = phi ptr [ @.str.9, %3606 ], [ @.str.6, %3602 ]
  store i32 %3597, ptr %3596, align 4, !tbaa !5
  %3608 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3609 = load i32, ptr @test_count, align 4, !tbaa !5
  %3610 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3611 = load i32, ptr %3610, align 4, !tbaa !5
  %3612 = call ptr @s2n_strerror(i32 noundef %3611, ptr noundef nonnull @.str.8) #10
  %3613 = load i32, ptr %3610, align 4, !tbaa !5
  %3614 = call ptr @s2n_strerror_debug(i32 noundef %3613, ptr noundef nonnull @.str.8) #10
  %3615 = load i32, ptr %3596, align 4, !tbaa !5
  %3616 = call ptr @strerror(i32 noundef %3615) #10
  %3617 = load i32, ptr %3596, align 4, !tbaa !5
  %3618 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3608, ptr noundef nonnull %.str.9.sink2003, i32 noundef %3609, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 309, ptr noundef %3612, ptr noundef %3614, ptr noundef %3616, i32 noundef %3617) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3619:                                             ; preds = %3590
  %3620 = add nsw i32 %3473, 5
  store i32 %3620, ptr @test_count, align 4, !tbaa !5
  %3621 = call i32 @s2n_choose_supported_group(ptr noundef nonnull %3258)
  %3622 = icmp eq i32 %3621, -1
  br i1 %3622, label %3623, label %3647

3623:                                             ; preds = %3619
  %3624 = tail call ptr @__errno_location() #11
  %3625 = load i32, ptr %3624, align 4, !tbaa !5
  %3626 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3627 = call i32 @s2n_print_stacktrace(ptr noundef %3626) #10
  %3628 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3629 = trunc nuw i8 %3628 to i1
  br i1 %3629, label %3630, label %3634

3630:                                             ; preds = %3623
  %3631 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3632 = call i32 @fileno(ptr noundef %3631) #10
  %3633 = call i32 @isatty(i32 noundef %3632) #10
  %.not503 = icmp eq i32 %3633, 0
  br i1 %.not503, label %3634, label %3635

3634:                                             ; preds = %3630, %3623
  br label %3635

3635:                                             ; preds = %3630, %3634
  %.str.9.sink2014 = phi ptr [ @.str.9, %3634 ], [ @.str.6, %3630 ]
  store i32 %3625, ptr %3624, align 4, !tbaa !5
  %3636 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3637 = load i32, ptr @test_count, align 4, !tbaa !5
  %3638 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3639 = load i32, ptr %3638, align 4, !tbaa !5
  %3640 = call ptr @s2n_strerror(i32 noundef %3639, ptr noundef nonnull @.str.8) #10
  %3641 = load i32, ptr %3638, align 4, !tbaa !5
  %3642 = call ptr @s2n_strerror_debug(i32 noundef %3641, ptr noundef nonnull @.str.8) #10
  %3643 = load i32, ptr %3624, align 4, !tbaa !5
  %3644 = call ptr @strerror(i32 noundef %3643) #10
  %3645 = load i32, ptr %3624, align 4, !tbaa !5
  %3646 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3636, ptr noundef nonnull %.str.9.sink2014, i32 noundef %3637, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.5, i32 noundef 311, ptr noundef %3640, ptr noundef %3642, ptr noundef %3644, i32 noundef %3645) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3647:                                             ; preds = %3619
  %3648 = load i32, ptr @test_count, align 4, !tbaa !5
  %3649 = add nsw i32 %3648, 1
  store i32 %3649, ptr @test_count, align 4, !tbaa !5
  %3650 = load ptr, ptr %3475, align 8, !tbaa !22
  %3651 = icmp eq ptr %3650, null
  br i1 %3651, label %3676, label %3652

3652:                                             ; preds = %3647
  %3653 = tail call ptr @__errno_location() #11
  %3654 = load i32, ptr %3653, align 4, !tbaa !5
  %3655 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3656 = call i32 @s2n_print_stacktrace(ptr noundef %3655) #10
  %3657 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3658 = trunc nuw i8 %3657 to i1
  br i1 %3658, label %3659, label %3663

3659:                                             ; preds = %3652
  %3660 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3661 = call i32 @fileno(ptr noundef %3660) #10
  %3662 = call i32 @isatty(i32 noundef %3661) #10
  %.not493 = icmp eq i32 %3662, 0
  br i1 %.not493, label %3663, label %3664

3663:                                             ; preds = %3659, %3652
  br label %3664

3664:                                             ; preds = %3659, %3663
  %.str.9.sink2025 = phi ptr [ @.str.9, %3663 ], [ @.str.6, %3659 ]
  store i32 %3654, ptr %3653, align 4, !tbaa !5
  %3665 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3666 = load i32, ptr @test_count, align 4, !tbaa !5
  %3667 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3668 = load i32, ptr %3667, align 4, !tbaa !5
  %3669 = call ptr @s2n_strerror(i32 noundef %3668, ptr noundef nonnull @.str.8) #10
  %3670 = load i32, ptr %3667, align 4, !tbaa !5
  %3671 = call ptr @s2n_strerror_debug(i32 noundef %3670, ptr noundef nonnull @.str.8) #10
  %3672 = load i32, ptr %3653, align 4, !tbaa !5
  %3673 = call ptr @strerror(i32 noundef %3672) #10
  %3674 = load i32, ptr %3653, align 4, !tbaa !5
  %3675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3665, ptr noundef nonnull %.str.9.sink2025, i32 noundef %3666, ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.5, i32 noundef 313, ptr noundef %3669, ptr noundef %3671, ptr noundef %3673, i32 noundef %3674) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3676:                                             ; preds = %3647
  %3677 = add nsw i32 %3648, 2
  store i32 %3677, ptr @test_count, align 4, !tbaa !5
  %3678 = load ptr, ptr %3534, align 8, !tbaa !49
  %3679 = icmp eq ptr %3678, null
  br i1 %3679, label %3704, label %3680

3680:                                             ; preds = %3676
  %3681 = tail call ptr @__errno_location() #11
  %3682 = load i32, ptr %3681, align 4, !tbaa !5
  %3683 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3684 = call i32 @s2n_print_stacktrace(ptr noundef %3683) #10
  %3685 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3686 = trunc nuw i8 %3685 to i1
  br i1 %3686, label %3687, label %3691

3687:                                             ; preds = %3680
  %3688 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3689 = call i32 @fileno(ptr noundef %3688) #10
  %3690 = call i32 @isatty(i32 noundef %3689) #10
  %.not494 = icmp eq i32 %3690, 0
  br i1 %.not494, label %3691, label %3692

3691:                                             ; preds = %3687, %3680
  br label %3692

3692:                                             ; preds = %3687, %3691
  %.str.9.sink2036 = phi ptr [ @.str.9, %3691 ], [ @.str.6, %3687 ]
  store i32 %3682, ptr %3681, align 4, !tbaa !5
  %3693 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3694 = load i32, ptr @test_count, align 4, !tbaa !5
  %3695 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3696 = load i32, ptr %3695, align 4, !tbaa !5
  %3697 = call ptr @s2n_strerror(i32 noundef %3696, ptr noundef nonnull @.str.8) #10
  %3698 = load i32, ptr %3695, align 4, !tbaa !5
  %3699 = call ptr @s2n_strerror_debug(i32 noundef %3698, ptr noundef nonnull @.str.8) #10
  %3700 = load i32, ptr %3681, align 4, !tbaa !5
  %3701 = call ptr @strerror(i32 noundef %3700) #10
  %3702 = load i32, ptr %3681, align 4, !tbaa !5
  %3703 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3693, ptr noundef nonnull %.str.9.sink2036, i32 noundef %3694, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.5, i32 noundef 314, ptr noundef %3697, ptr noundef %3699, ptr noundef %3701, i32 noundef %3702) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3704:                                             ; preds = %3676
  %3705 = add nsw i32 %3648, 3
  store i32 %3705, ptr @test_count, align 4, !tbaa !5
  %3706 = load ptr, ptr %3563, align 8, !tbaa !50
  %3707 = icmp eq ptr %3706, null
  br i1 %3707, label %3732, label %3708

3708:                                             ; preds = %3704
  %3709 = tail call ptr @__errno_location() #11
  %3710 = load i32, ptr %3709, align 4, !tbaa !5
  %3711 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3712 = call i32 @s2n_print_stacktrace(ptr noundef %3711) #10
  %3713 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3714 = trunc nuw i8 %3713 to i1
  br i1 %3714, label %3715, label %3719

3715:                                             ; preds = %3708
  %3716 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3717 = call i32 @fileno(ptr noundef %3716) #10
  %3718 = call i32 @isatty(i32 noundef %3717) #10
  %.not495 = icmp eq i32 %3718, 0
  br i1 %.not495, label %3719, label %3720

3719:                                             ; preds = %3715, %3708
  br label %3720

3720:                                             ; preds = %3715, %3719
  %.str.9.sink2047 = phi ptr [ @.str.9, %3719 ], [ @.str.6, %3715 ]
  store i32 %3710, ptr %3709, align 4, !tbaa !5
  %3721 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3722 = load i32, ptr @test_count, align 4, !tbaa !5
  %3723 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3724 = load i32, ptr %3723, align 4, !tbaa !5
  %3725 = call ptr @s2n_strerror(i32 noundef %3724, ptr noundef nonnull @.str.8) #10
  %3726 = load i32, ptr %3723, align 4, !tbaa !5
  %3727 = call ptr @s2n_strerror_debug(i32 noundef %3726, ptr noundef nonnull @.str.8) #10
  %3728 = load i32, ptr %3709, align 4, !tbaa !5
  %3729 = call ptr @strerror(i32 noundef %3728) #10
  %3730 = load i32, ptr %3709, align 4, !tbaa !5
  %3731 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3721, ptr noundef nonnull %.str.9.sink2047, i32 noundef %3722, ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.5, i32 noundef 315, ptr noundef %3725, ptr noundef %3727, ptr noundef %3729, i32 noundef %3730) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3732:                                             ; preds = %3704
  %3733 = add nsw i32 %3648, 4
  store i32 %3733, ptr @test_count, align 4, !tbaa !5
  %3734 = load ptr, ptr %3592, align 8, !tbaa !51
  %3735 = icmp eq ptr %3734, null
  br i1 %3735, label %3760, label %3736

3736:                                             ; preds = %3732
  %3737 = tail call ptr @__errno_location() #11
  %3738 = load i32, ptr %3737, align 4, !tbaa !5
  %3739 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3740 = call i32 @s2n_print_stacktrace(ptr noundef %3739) #10
  %3741 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3742 = trunc nuw i8 %3741 to i1
  br i1 %3742, label %3743, label %3747

3743:                                             ; preds = %3736
  %3744 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3745 = call i32 @fileno(ptr noundef %3744) #10
  %3746 = call i32 @isatty(i32 noundef %3745) #10
  %.not496 = icmp eq i32 %3746, 0
  br i1 %.not496, label %3747, label %3748

3747:                                             ; preds = %3743, %3736
  br label %3748

3748:                                             ; preds = %3743, %3747
  %.str.9.sink2058 = phi ptr [ @.str.9, %3747 ], [ @.str.6, %3743 ]
  store i32 %3738, ptr %3737, align 4, !tbaa !5
  %3749 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3750 = load i32, ptr @test_count, align 4, !tbaa !5
  %3751 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3752 = load i32, ptr %3751, align 4, !tbaa !5
  %3753 = call ptr @s2n_strerror(i32 noundef %3752, ptr noundef nonnull @.str.8) #10
  %3754 = load i32, ptr %3751, align 4, !tbaa !5
  %3755 = call ptr @s2n_strerror_debug(i32 noundef %3754, ptr noundef nonnull @.str.8) #10
  %3756 = load i32, ptr %3737, align 4, !tbaa !5
  %3757 = call ptr @strerror(i32 noundef %3756) #10
  %3758 = load i32, ptr %3737, align 4, !tbaa !5
  %3759 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3749, ptr noundef nonnull %.str.9.sink2058, i32 noundef %3750, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.5, i32 noundef 316, ptr noundef %3753, ptr noundef %3755, ptr noundef %3757, i32 noundef %3758) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3760:                                             ; preds = %3732
  %3761 = add nsw i32 %3648, 5
  store i32 %3761, ptr @test_count, align 4, !tbaa !5
  %3762 = call i32 @s2n_connection_free(ptr noundef nonnull %3258) #10
  %3763 = icmp eq i32 %3762, -1
  br i1 %3763, label %3764, label %3788

3764:                                             ; preds = %3760
  %3765 = tail call ptr @__errno_location() #11
  %3766 = load i32, ptr %3765, align 4, !tbaa !5
  %3767 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3768 = call i32 @s2n_print_stacktrace(ptr noundef %3767) #10
  %3769 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3770 = trunc nuw i8 %3769 to i1
  br i1 %3770, label %3771, label %3775

3771:                                             ; preds = %3764
  %3772 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3773 = call i32 @fileno(ptr noundef %3772) #10
  %3774 = call i32 @isatty(i32 noundef %3773) #10
  %.not502 = icmp eq i32 %3774, 0
  br i1 %.not502, label %3775, label %3776

3775:                                             ; preds = %3771, %3764
  br label %3776

3776:                                             ; preds = %3771, %3775
  %.str.9.sink2069 = phi ptr [ @.str.9, %3775 ], [ @.str.6, %3771 ]
  store i32 %3766, ptr %3765, align 4, !tbaa !5
  %3777 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3778 = load i32, ptr @test_count, align 4, !tbaa !5
  %3779 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3780 = load i32, ptr %3779, align 4, !tbaa !5
  %3781 = call ptr @s2n_strerror(i32 noundef %3780, ptr noundef nonnull @.str.8) #10
  %3782 = load i32, ptr %3779, align 4, !tbaa !5
  %3783 = call ptr @s2n_strerror_debug(i32 noundef %3782, ptr noundef nonnull @.str.8) #10
  %3784 = load i32, ptr %3765, align 4, !tbaa !5
  %3785 = call ptr @strerror(i32 noundef %3784) #10
  %3786 = load i32, ptr %3765, align 4, !tbaa !5
  %3787 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3777, ptr noundef nonnull %.str.9.sink2069, i32 noundef %3778, ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.5, i32 noundef 317, ptr noundef %3781, ptr noundef %3783, ptr noundef %3785, i32 noundef %3786) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3788:                                             ; preds = %3760
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #10
  %3789 = call i32 @s2n_cleanup() #10
  %3790 = icmp eq i32 %3789, -1
  br i1 %3790, label %3791, label %3815

3791:                                             ; preds = %3788
  %3792 = tail call ptr @__errno_location() #11
  %3793 = load i32, ptr %3792, align 4, !tbaa !5
  %3794 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3795 = call i32 @s2n_print_stacktrace(ptr noundef %3794) #10
  %3796 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3797 = trunc nuw i8 %3796 to i1
  br i1 %3797, label %3798, label %3802

3798:                                             ; preds = %3791
  %3799 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3800 = call i32 @fileno(ptr noundef %3799) #10
  %3801 = call i32 @isatty(i32 noundef %3800) #10
  %.not501 = icmp eq i32 %3801, 0
  br i1 %.not501, label %3802, label %3803

3802:                                             ; preds = %3798, %3791
  br label %3803

3803:                                             ; preds = %3798, %3802
  %.str.9.sink2080 = phi ptr [ @.str.9, %3802 ], [ @.str.6, %3798 ]
  store i32 %3793, ptr %3792, align 4, !tbaa !5
  %3804 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3805 = load i32, ptr @test_count, align 4, !tbaa !5
  %3806 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3807 = load i32, ptr %3806, align 4, !tbaa !5
  %3808 = call ptr @s2n_strerror(i32 noundef %3807, ptr noundef nonnull @.str.8) #10
  %3809 = load i32, ptr %3806, align 4, !tbaa !5
  %3810 = call ptr @s2n_strerror_debug(i32 noundef %3809, ptr noundef nonnull @.str.8) #10
  %3811 = load i32, ptr %3792, align 4, !tbaa !5
  %3812 = call ptr @strerror(i32 noundef %3811) #10
  %3813 = load i32, ptr %3792, align 4, !tbaa !5
  %3814 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3804, ptr noundef nonnull %.str.9.sink2080, i32 noundef %3805, ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.5, i32 noundef 321, ptr noundef %3808, ptr noundef %3810, ptr noundef %3812, i32 noundef %3813) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3815:                                             ; preds = %3788
  %3816 = call i32 @s2n_in_unit_test_set(i1 noundef zeroext false) #10
  %3817 = icmp eq i32 %3816, -1
  br i1 %3817, label %3818, label %3842

3818:                                             ; preds = %3815
  %3819 = tail call ptr @__errno_location() #11
  %3820 = load i32, ptr %3819, align 4, !tbaa !5
  %3821 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3822 = call i32 @s2n_print_stacktrace(ptr noundef %3821) #10
  %3823 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3824 = trunc nuw i8 %3823 to i1
  br i1 %3824, label %3825, label %3829

3825:                                             ; preds = %3818
  %3826 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3827 = call i32 @fileno(ptr noundef %3826) #10
  %3828 = call i32 @isatty(i32 noundef %3827) #10
  %.not500 = icmp eq i32 %3828, 0
  br i1 %.not500, label %3829, label %3830

3829:                                             ; preds = %3825, %3818
  br label %3830

3830:                                             ; preds = %3825, %3829
  %.str.9.sink2091 = phi ptr [ @.str.9, %3829 ], [ @.str.6, %3825 ]
  store i32 %3820, ptr %3819, align 4, !tbaa !5
  %3831 = load ptr, ptr @stderr, align 8, !tbaa !9
  %3832 = load i32, ptr @test_count, align 4, !tbaa !5
  %3833 = call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @s2n_errno)
  %3834 = load i32, ptr %3833, align 4, !tbaa !5
  %3835 = call ptr @s2n_strerror(i32 noundef %3834, ptr noundef nonnull @.str.8) #10
  %3836 = load i32, ptr %3833, align 4, !tbaa !5
  %3837 = call ptr @s2n_strerror_debug(i32 noundef %3836, ptr noundef nonnull @.str.8) #10
  %3838 = load i32, ptr %3819, align 4, !tbaa !5
  %3839 = call ptr @strerror(i32 noundef %3838) #10
  %3840 = load i32, ptr %3819, align 4, !tbaa !5
  %3841 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3831, ptr noundef nonnull %.str.9.sink2091, i32 noundef %3832, ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.5, i32 noundef 321, ptr noundef %3835, ptr noundef %3837, ptr noundef %3839, i32 noundef %3840) #12
  call void @exit(i32 noundef 1) #13
  unreachable

3842:                                             ; preds = %3815
  %3843 = load i8, ptr @s2n_use_color_in_output, align 1, !tbaa !11, !range !13, !noundef !14
  %3844 = trunc nuw i8 %3843 to i1
  br i1 %3844, label %3845, label %3856

3845:                                             ; preds = %3842
  %3846 = load ptr, ptr @stdout, align 8, !tbaa !9
  %3847 = call i32 @fileno(ptr noundef %3846) #10
  %3848 = call i32 @isatty(i32 noundef %3847) #10
  %.not497 = icmp eq i32 %3848, 0
  br i1 %.not497, label %3856, label %3849

3849:                                             ; preds = %3845
  %3850 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not499 = icmp eq i32 %3850, 0
  %3851 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not499, label %3854, label %3852

3852:                                             ; preds = %3849
  %3853 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3851, ptr noundef nonnull @.str.42, i32 noundef %3850) #10
  br label %3863

3854:                                             ; preds = %3849
  %3855 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3851, ptr noundef nonnull @.str.43) #10
  br label %3863

3856:                                             ; preds = %3845, %3842
  %3857 = load i32, ptr @test_count, align 4, !tbaa !5
  %.not498 = icmp eq i32 %3857, 0
  %3858 = load ptr, ptr @stdout, align 8, !tbaa !9
  br i1 %.not498, label %3861, label %3859

3859:                                             ; preds = %3856
  %3860 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3858, ptr noundef nonnull @.str.44, i32 noundef %3857) #10
  br label %3863

3861:                                             ; preds = %3856
  %3862 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %3858, ptr noundef nonnull @.str.45) #10
  br label %3863

3863:                                             ; preds = %3859, %3861, %3852, %3854
  ret i32 0
}

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

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

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

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

declare i32 @s2n_print_stacktrace(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

declare i32 @s2n_enable_atexit() local_unnamed_addr #4

declare i32 @s2n_init() local_unnamed_addr #4

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

declare ptr @s2n_connection_new(i32 noundef) local_unnamed_addr #4

declare i32 @s2n_connection_get_ecc_preferences(ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_connection_get_kem_preferences(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden i32 @s2n_choose_supported_group(ptr noundef) local_unnamed_addr #2

declare i32 @s2n_connection_free(ptr noundef) local_unnamed_addr #4

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

declare ptr @s2n_kem_preferences_get_highest_priority_group(ptr noundef) local_unnamed_addr #4

declare zeroext i1 @s2n_pq_is_enabled() local_unnamed_addr #4

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

declare i32 @s2n_kem_preferences_groups_available(ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @s2n_cleanup() local_unnamed_addr #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !7, i64 0}
!16 = !{!"s2n_ecc_preferences", !7, i64 0, !10, i64 8}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!20, !7, i64 16}
!20 = !{!"s2n_kem_preferences", !7, i64 0, !10, i64 8, !7, i64 16, !10, i64 24, !7, i64 32}
!21 = distinct !{!21, !18}
!22 = !{!23, !10, i64 720}
!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, !10, i64 816}
!50 = !{!23, !10, i64 728}
!51 = !{!23, !10, i64 656}
!52 = distinct !{!52, !18}
!53 = distinct !{!53, !18}
!54 = !{!16, !10, i64 8}
!55 = distinct !{!55, !18}
!56 = distinct !{!56, !18}
!57 = !{!20, !10, i64 24}
!58 = !{!59, !7, i64 0}
!59 = !{!"s2n_security_policy", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !12, i64 56, !7, i64 57}
!60 = !{!59, !10, i64 8}
!61 = !{!59, !10, i64 16}
!62 = !{!59, !10, i64 24}
!63 = !{!59, !10, i64 32}
!64 = !{!59, !10, i64 40}
!65 = !{!59, !10, i64 48}
!66 = !{!59, !12, i64 56}
!67 = !{!23, !10, i64 16}
!68 = distinct !{!68, !18}
!69 = distinct !{!69, !18}
!70 = distinct !{!70, !18}
!71 = distinct !{!71, !18}
!72 = !{!73, !10, i64 16}
!73 = !{!"s2n_kem_group", !10, i64 0, !38, i64 8, !10, i64 16, !10, i64 24, !12, i64 32}
!74 = !{!73, !10, i64 24}
!75 = distinct !{!75, !18}
!76 = distinct !{!76, !18}
!77 = distinct !{!77, !18}
!78 = distinct !{!78, !18}


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